我想在我的代码的任何函数中看到堆栈跟踪,所以我做了这样的事情来调用它并打印堆栈跟踪:
public function PrintStackTrace() { try { throw new Error('StackTrace'); } catch (e:Error) { trace(e.getStackTrace()); } }
我想知道是否有其他方法可以做到这一点.在某些地方,Error类创建堆栈跟踪,但也许它没有使用ActionScript 3.0,所以也许它不可行,但我想知道.
谢谢!
据我所知,使堆栈跟踪可用于您自己的代码的唯一方法是通过Error类中的getStackTrace()方法,就像您已经在做的那样.但是,为了回答你问题中的例子,我要提到你实际上不必抛出错误 - 你可以创建它并在其上调用方法:
var tempError:Error = new Error(); var stackTrace:String = tempError.getStackTrace();
此外,与文档说的一样,这仅适用于Flash Player的调试版本,因此您可以将此功能包装在if-block中,以便在需要时检查Capabilities.isDebugger的值.
从Flash Player 11.5开始,堆栈跟踪也可以在非调试器版本的播放器中使用.
使用Flex SDK附带的Flex DeBugger(FDB).它是一个命令行调试器,允许您调试.swf,甚至是在线调试(如果它是调试版本).它允许您设置断点,打印/更改变量和转储堆栈,并且不需要您添加任何额外的代码.一个非常有用的工具,你不应该没有!
你需要的fdb选项是'break'并指定你想要执行停止的类和行,'bt'或'info stack'给你一个堆栈的回溯.您还可以在运行时显示有关应用程序的几乎所有内容.