Actionscript 3 在没有调试器的情况下运行时获取flash应用程序的堆栈跟踪
我正在尝试为我的应用程序创建一个崩溃报告。当游戏使用debug运行时,获取堆栈跟踪很容易:它包含在崩溃中创建的错误对象中。但是在没有调试的情况下运行时,此信息将丢失Actionscript 3 在没有调试器的情况下运行时获取flash应用程序的堆栈跟踪,actionscript-3,flash,stack-trace,Actionscript 3,Flash,Stack Trace,我正在尝试为我的应用程序创建一个崩溃报告。当游戏使用debug运行时,获取堆栈跟踪很容易:它包含在崩溃中创建的错误对象中。但是在没有调试的情况下运行时,此信息将丢失 有没有办法获取此信息?您可以在应用程序的可疑位置使用try-catch块 try { ExternalInterface.call('conf', 4); ExternalInterface.addCallback('transcodeReqAnswer', analyseTranscodeAnswer); } ca
有没有办法获取此信息?您可以在应用程序的可疑位置使用try-catch块
try {
ExternalInterface.call('conf', 4);
ExternalInterface.addCallback('transcodeReqAnswer', analyseTranscodeAnswer);
} catch(er:Error) {
debugTextField.text = er.getStackTrace();
}
如果在调试模式下编译,则必须通过ExternalInterface将参数传递给javascript。然后,您应该能够从浏览器的控制台输出中看到stacktrace 例如:
flash.system.Security.allowDomain(sourceDomain)
ExternalInterface.call("print", error.getStackTrace());
在JavaScript中应该有一个函数
function takeLog(string) {
console.log("stacktrace: " + string);
}
在非调试模式下,getStackTrace()函数返回null
官方文件中的更多信息,
,
文档中说:“对于Flash Player 11.4及更早版本和AIR 3.4及更早版本,堆栈跟踪仅在代码在Flash Player的调试器版本或AIR调试启动器(ADL)中运行时可用。在这些运行时的非调试器版本中,调用此方法返回null。”也许试着瞄准一个更新版本的Flash Player或AIR,看看它是否有效?参见-问题涉及AIR,但适用于Flash Player。简短回答:不起作用。我已经尝试了一段时间,只在调试模式下工作。另外,您可以手动指定发生这种情况的类/行,但这太难看和不专业了(任何代码更改都需要更新),因此我不建议这样做。这只会在调试模式下正常工作,在发布版本中,您只会得到错误名称try…捕获在处理器上也非常繁重。您应该避免在发布版本中使用它。