使用EPIC调试器:如何在程序不正确退出时获取有意义的堆栈跟踪

时间:2015-11-20 19:32:05

标签: perl debugging epic

我是perl和epic的新手,所以请原谅我提出明显的事情。我确实做了一些在线游戏,但没有找到任何东西。

我在调试器中运行了一个perl程序,但失败了。当它失败时,我收到一条相当无益的消息。我不能复制和过去它,我不能手工编写,因为它有很多无法识别的字符。它看起来像:

Debugged program terminated.  use [imq[0m to quit or [1mr[om to restart, 
use [1mo[0m [4minhibit_exit[24m to avoid stopping after program termination

带有括号的任何地方在eclipse consol窗口中显示为未定义的字符。

我没有得到任何有用的堆栈跟踪。我可以看到调用了setup_ram_directories方法,因为它是错误之前调试器的最后一行。但是,实际错误发生在堆栈的更深处。我没有获得堆栈跟踪,也不能在出现错误时让eclipse暂停,因此我可以检查导致失败的内存状态。

一些额外的游戏似乎表明,每当调用在不同模块中定义的方法时,EPIC就会混淆,setup_ram_directories在辅助模块中定义。如果我深入研究上述方法,直到我在模块中包含的方法抛出异常,然后点击运行,我得到一个正确的堆栈跟踪。但是,对于我的堆栈深处的错误,需要多次运行程序才能确定哪些方法和方法。在我得到正确的堆栈跟踪之前,模块都失败了。

我需要做一些配置才能让PERL为我提供合适的堆栈跟踪吗?或者更好的是,我希望在程序失败时让调试器暂停,这样我就可以检查变量了。

我在perl表达式视图中尝试了过suppress_exit,它似乎没有做任何事情。

0 个答案:

没有答案