multiple statements in the debugger

A

avilella

Hi all,

I am using the perl debugger under Emacs, and for a long time I have
wondered if
there is a way to do trigger more than one statement at the same line.

For example:

Let's say I have a breakpoint at a place in my code, and at some point
I want to do a:

DB<2> c

and after that I want to print the contents of something, like:

DB<2> x @foo

and I want to do this all over again, and again.

Is there a way to do that in one line?

Something like:

DB<2> c ; x @foo

At some point, then I will be able to do something like:

DB<2> c ; x @foo; c ; x @foo2; c x @foo3 ; c; x @foo4; n; x @bar; n; n;
x @bar2

or anything more complicated...

I'm sure there is a Perl/Emacs guru out there that knows how to do
that, in a way or another.

Thanks in advance,

Bests,

Albert.
 
X

Xicheng Jia

Hi all,

I am using the perl debugger under Emacs, and for a long time I have
wondered if
there is a way to do trigger more than one statement at the same line.

For example:

Let's say I have a breakpoint at a place in my code, and at some point
I want to do a:

DB<2> c

and after that I want to print the contents of something, like:

DB<2> x @foo

and I want to do this all over again, and again.

Is there a way to do that in one line?

Something like:

DB<2> c ; x @foo

At some point, then I will be able to do something like:

DB<2> c ; x @foo; c ; x @foo2; c x @foo3 ; c; x @foo4; n; x @bar; n; n;
x @bar2

Don't think you can make it this way. but if you want to get something
like "disp" in "gdb", you may want to use action 'a' or sometimes
watchpoint 'w'. for example, you set a break point at line-32.

DB<2> b 32
DB<3> a 32 print map "$_\n" @foo;

then every time your code runs pass this line-32, @foo will be printed
out automatically..you can set and unset multiple actions at the same
break point, but you can not use the debug-command 'x' to dump the
results, so it's not good for some complex data structures. a
workaround is:

perl -MData::Dumper -d yourcode.pl

(dont know how you can do it in emacs though), and then

DB<3> a 32 print Dumper \@foo;

Another way I know is you can set a debug-command to be executed after
every "n", "s", "c", "r"......commands by the following way:

DB<2> { x \@foo

then every time after you type "n", "s", "c"...... you will get the
results of @foo.. But I guess this is not what you wanted.

XC
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,262
Messages
2,571,052
Members
48,769
Latest member
Clifft

Latest Threads

Top