代码如下:
js 代码
- function getCallStack(){
- var fn, stack;
- if(arguments.length != 2){
- fn = arguments.callee.caller;
- stack = [];
- }else{
- fn = arguments[0];
- stack = arguments[1];
- }
- var fCaller;
- if(fn == null){
- fCaller = "(Top Caller)";
- stack.unshift(fCaller);
- return stack;
- }else{
- var params = /(function\s*([^\(]*)\s*\((.*)\))/.exec(fn.toString());
- if(params != null){
- fCaller = params[1];
- }else{
- var fnn = fn.toString();
- fnn = fnn.substring(0, fnn.indexOf("\n")==-1 ? 25 : fnn.indexOf("\n"));
- fCaller = "Unknown Caller: " + fnn;
- }
- }
- stack.unshift(fCaller);
- if(fn != null){
- arguments.callee(fn.caller, stack);
- }
- return stack;
- }
有个缺点: 如果不是通过function A(){}这种方式定义的函数取不到函数名称
分享到:
相关推荐
下面将介绍一种高效获取函数调用堆栈的实现方案,该方法功能单一,使用简单,效率较高。 1. 背景知识 要实现高效获取函数调用堆栈,需要了解函数调用堆栈和异常处理的背景知识。 1.1 函数调用堆栈 函数调用堆栈...
在本文中,我们将通过一个例子来说明函数递归调用堆栈分析的过程。该例子是将一个整数从二进制方法转换为可打印的字符方法。我们将使用递归函数来实现这个过程,并分析函数递归调用堆栈的过程。 首先,我们需要了解...
函数调用会在内存中创建一个新的堆栈帧,该堆栈帧用于存放函数的实参、局部变量和返回地址等信息。在这个过程中,main 函数如何调用子函数是非常关键的。今天,我们将详细介绍 main 函数如何调用子函数的过程,并...
在计算机科学中,特别是在软件调试和逆向工程领域,理解函数调用堆栈是至关重要的。函数调用堆栈(也称为调用栈或执行栈)记录了程序中函数调用的顺序,这对于追踪代码执行流程,特别是错误定位非常有用。在x86架构...
JavaScript函数调用堆栈是编程过程中非常重要的一个概念,它记录了程序运行时函数的调用顺序。在JavaScript中,每当一个函数被调用,一个新的调用帧(call frame)就会被添加到调用堆栈上,包含了这个函数执行的所有...
在Win32环境下,函数调用涉及到堆栈的操作,这是理解程序执行和内存管理的关键部分。本文将深入探讨这个主题,特别是通过一个简单的C语言示例程序来解析其背后的汇编代码。 首先,我们要明白堆栈是计算机内存中的一...
在 glibc 中,还提供了一个示例代码,展示了如何使用 backtrace 函数和 backtrace_symbols 函数来获取当前线程的函数调用堆栈。 在实际应用中,我们可以使用 addr2line 工具来查看函数的调用堆栈,并定位到具体的...
在计算机科学中,函数调用堆栈(也称为调用栈或执行栈)是程序运行时内存中的一个重要组成部分,主要用于管理函数的调用与返回。本文将深入探讨函数调用堆栈的变化分析,以帮助理解程序执行过程。 首先,我们需要...
每次函数调用都会创建一个新的栈帧,其中包含了传递给该函数的参数、函数的局部变量以及返回地址等信息。函数调用的过程可以形象地理解为在栈顶添加一个新的栈帧,并在函数执行完毕后移除这个栈帧。 栈帧中各元素的...
【应聘笔记系列】堆栈、栈帧与函数调用过程分析,C-C++堆栈指引
函数调用,参数堆栈等学习资料收集 关于函数调用时堆栈的变化分析(转自Jim's blog) - H_S_的学习总结与心得 - 博客园.mht ...函数调用堆栈分析.doc 转贴:关于函数调用的深入分析 百度空间_应用平台.mht
其中,“调用堆栈”(Call Stack)是VC调试工具中的一个重要功能,它能够帮助开发者理解程序的执行流程以及当前执行位置。 #### 什么是调用堆栈? 调用堆栈是一种数据结构,用于存储函数调用的历史记录。每当一个...
在函数调用时,操作系统或运行时环境会使用一个称为调用堆栈(Call Stack)的数据结构来管理函数的执行。每当一个函数被调用时,函数的返回地址、局部变量的值以及其他相关信息会被压入堆栈。当函数执行完毕后,这些...
每次函数调用都会创建一个新的堆栈帧,存储参数、返回地址以及局部变量。当函数执行完毕,其堆栈帧会被弹出,控制流返回到调用者。通过遍历这个堆栈,我们可以了解程序的执行路径。 要实现一个获取调用堆栈的类,...
当一个函数调用另一个函数时,当前的堆栈帧(即调用者)被保存,然后创建新的堆栈帧(即被调用者)。这个切换过程确保了每个函数都有自己的工作空间,并且可以正确地恢复调用者的状态。当被调用函数完成并返回时,...
2. **调用堆栈(Call Stack)**:在程序运行时,每个线程都有一个调用堆栈,记录了当前执行路径上的所有函数调用。每当一个函数被调用,一个新的栈帧(Stack Frame)会被创建,包含该函数的局部变量、参数和返回地址...
调用堆栈是程序执行过程中函数调用关系的记录,每一个函数调用都会在堆栈上留下一个帧(frame),包含了返回地址、局部变量等信息。RtlWalkFrameChain函数能够遍历这些帧,从而让我们知道函数是如何被调用的,以及...
在Microsoft Visual C++ (VC) 开发环境中,打印当前调用堆栈信息是一个非常有用的调试技巧,它可以帮助开发者追踪程序执行流程,理解函数调用顺序,尤其是在遇到异常或错误时。下面将详细介绍如何在VC中实现这个功能...