Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re^2: Module for Printing Line Numbers in Debug?

by QM (Vicar)
on Jan 21, 2013 at 13:23 UTC ( #1014443=note: print w/ replies, xml ) Need Help??


in reply to Re: Module for Printing Line Numbers in Debug?
in thread Module for Printing Line Numbers in Debug?

perldebug might work, but I can't figure out how to run a script non-interactively to do a trace with line numbers.

I forgot to mention that this is running on a remote system, using a custom script to tar up everything needed, copy it over, run it, and pipe the output back to the originating terminal. It's a PITA to do this manually.

It's also a requirement to run on the remote system, as custom devices and other hardware are there (these are formal test scripts).

I'm quite familiar with the interactive use of the debugger, and would prefer to do that, but it's much easier to s/// the code and print line numbers. (OP updated).

-QM
--
Quantum Mechanics: The dreams stuff is made of


Comment on Re^2: Module for Printing Line Numbers in Debug?
Re^3: Module for Printing Line Numbers in Debug?
by LanX (Canon) on Jan 21, 2013 at 13:35 UTC
    I googled trace perl and found perl option to trace execution.

    Devel::Trace seems to be what you are looking for.

    EDIT: It's not clear for me if you wanna trace all lines or just some. In the latter case why not defining a function log() which carps what you want only if DEBUG is set?

    Cheers Rolf

      Devel::Trace might do it, but it's not installed on the system. Might be problematic to get it on there. (Ubuntu apt-get name?)

      I don't need to trace all the lines, but if that's necessary, I can live with it.

      I can already put a function or statement wherever I want, so a log() function would do the same, but would be a lot shorter than the literal statement. A good idea, I was hoping for something even cleaner, that won't show up in production code by mistake.

      -QM
      --
      Quantum Mechanics: The dreams stuff is made of

        > A good idea, I was hoping for something even cleaner, that won't show up in production code by mistake.

        It doesn't look like you will pass any arguments to log(), caller seems to provide anything you are looking for.

        If you later check for production environment and set

        sub log {}
        then it will be optimized and not appear in the opcodes.

        If you are still worried, use a name you can easily find and delete, like __LOG__, even a source filter doing this should be very safe.

        But please search the archives for older discussions, this is certainly not the first one.

        Cheers Rolf

        UPDATE

        ) or even better, use Damian's approach from Smart::Comments and use a source filter only in testing mode to enable log() by deleting the '#' with s/;#LOG/;LOG;/g

        s/a/b/ ;#LOG

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1014443]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (5)
As of 2014-08-23 05:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (172 votes), past polls