Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 在没有调试器的情况下运行时获取flash应用程序的堆栈跟踪_Actionscript 3_Flash_Stack Trace - Fatal编程技术网

Actionscript 3 在没有调试器的情况下运行时获取flash应用程序的堆栈跟踪

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

我正在尝试为我的应用程序创建一个崩溃报告。当游戏使用debug运行时,获取堆栈跟踪很容易:它包含在崩溃中创建的错误对象中。但是在没有调试的情况下运行时,此信息将丢失


有没有办法获取此信息?

您可以在应用程序的可疑位置使用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…捕获在处理器上也非常繁重。您应该避免在发布版本中使用它。