Search code examples
perldebuggingepic

Using EPIC debugger: how to see get a meaningful stack trace when program exits improperly


I'm new to both perl and epic, so forgive me for asking obvious things. I did do some playing around online and did not find anything though.

I'm running a perl program in the debugger, which fails. When it fails I get a rather unhelpful message. I can't copy and past it, and I can't write it by hand because it has so many unrecognizable characters. It looks something like:

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

Everywhere that has brackets shows as an undefined character in the eclipse consol window.

What I don't get is any kind of useful stack trace. I can see that the setup_ram_directories method was called because it's the last line of the debugger before the error. However, the actual error occurs deeper down the stack. I don't get a stack trace, nor can I get eclipse to pause when an error comes up so I can inspect the memory state that caused the failure.

Some extra playing around seems to suggest that EPIC is confused whenever a method defined in a different module is called, the setup_ram_directories being defined in a helper module. If I have stepped deeper into the above method until I'm in a method contained within the module that throws an exception and then hit run I get a proper stack trace. However, for errors deep in my stack it takes multiple runs of the program to determine what methods & modules are failing before I get to the point where I get a proper stack trace.

Is there some configuration I need to do to get PERL to provide me a proper stack trace? Or better yet I would prefer to have the debugger pause when the program is going to fail so I can inspect variables.

I have tried o inhibit_exit from perl expressions view, it didn't seem to do anything.


Solution

  • Try the following plugin which works with EPIC:

    http://andrei.gmxhome.de/anyedit/