multiple statements in the debugger

Discussion in 'Perl Misc' started by avilella@gmail.com, Jun 14, 2006.

  1. Guest

    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.
    , Jun 14, 2006
    #1
    1. Advertising

  2. Xicheng Jia Guest

    wrote:
    > 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
    Xicheng Jia, Jun 15, 2006
    #2
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Neil Zanella
    Replies:
    8
    Views:
    1,170
    mfmehdi
    Oct 20, 2006
  2. Harry George
    Replies:
    6
    Views:
    363
    Bart Nessux
    Feb 23, 2004
  3. Vince
    Replies:
    12
    Views:
    739
    Martin Gregorie
    Jan 21, 2008
  4. John Crichton
    Replies:
    6
    Views:
    254
    John Crichton
    Jul 12, 2010
  5. Replies:
    0
    Views:
    87
Loading...

Share This Page