代码如下:
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(){}这种方式定义的函数取不到函数名称
分享到:
相关推荐
C++ 获取函数调用堆栈的 高效实现代码
详细解释了函数调用过程中堆栈的处理过程,主要对新手来说可以通过这个提升一下自己对函数调用过程的了解
通过EBP EIP来找函数调用堆栈 通过EBP EIP来找函数调用堆栈 通过EBP EIP来找函数调用堆栈 通过EBP EIP来找函数调用堆栈
函数递归调用堆栈分析.doc
Win32环境下函数调用的堆栈之研究,一个好的学习资料
【应聘笔记系列】堆栈、栈帧与函数调用过程分析,C-C++堆栈指引
详细介绍了main函数如何调用子函数的过程,非常的经典
函数调用,参数堆栈等学习资料收集 关于函数调用时堆栈的变化分析(转自Jim's blog) - H_S_的学习总结与心得 - 博客园.mht ...函数调用堆栈分析.doc 转贴:关于函数调用的深入分析 百度空间_应用平台.mht
webpack loader,记录JavaScript函数调用堆栈到字符串window.dxj中,该堆栈可格式化进一步对比分析 也可保存不同时刻的对象进行对比分析
函数调用堆栈变化分析[参考].pdf
Visual C/C++的编译器提供了几种函数调用约定,了解这些函数调用约定的含义及它们之间的区别可以帮助我们更好地调试程序。在这篇文章里,我就和大家共同探讨一些关于函数调用约定的内容。 Visual C/C++的编译器支持...
把程序运行时一个变量占有内存空间的时间段称为该变量的生存期。C++把变量的生存期分为:静态、自动和动态三种。 静态生存期:全局变量都具有静态生存期,它们的内存空间从程序开始执行时就进行分配,直到程序结束才...
linux C用户态调试追踪函数调用堆栈以及定位段错误.docx
本文实例讲述了JavaScript实现显示函数调用堆栈的方法。分享给大家供大家参考,具体如下: 许多大型的JavaScript应用程序间的函数调用关系是非常复杂的,在开发或者调试过程中,经常需要跟踪某个函数是由哪些函数...
堆栈帧,函数调用,堆栈切换 函数调用过程种种细节分析
CSDN 博文,对栈帧的概念以及函数调用过程栈的变化做了详细的分析!
gdb调试中,具有调用关系的函数在堆栈中的关系。
C通过运行时堆栈支持递归函数的实现。...导致读过这本经书的同学们,看到阶乘计算第一个想法就是递归。但是在阶乘的计算里,递归并没有提供任何优越之处。在菲波那契数列中,它的效率更是低的非常恐怖。
自己总结了一点C,C++的资料,主要讲空类中的默认函数, 以及函数调用时栈的调用关系.