3

デバッガーを非対話モードで実行し、出力をファイルに書き込みます。Perl スクリプトの各行を実行時に印刷したいのですが、スクリプト自体の行のみを印刷します。スクリプトが呼び出すライブラリ コード (File::Basename、Exporter::import など) を見たくありません。これは簡単にできるはずのことのように思えますが、perldebugのドキュメントでは、ダンプ構造の深さを制限することについてのみ説明しています。私が望むことは可能ですか?

次のようにプログラムを実行していることに注意してください。

PERLDB_OPTS="LineInfo=temp.txt NonStop=1 AutoTrace=1 frame=2" perl -dS myprog.pl arg0 arg1
4

2 に答える 2

6

デフォルトでDevel::DumpTraceは、システム モジュールにステップ インしません。また、デバッガがステップ インするモジュールを細かく制御できます (簡単ではありませんが、可能です)。何かのようなもの

DUMPTRACE_FH=temp.txt perl -d:DumpTrace=quiet myprog.pl 

あなたが明らかにやろうとしていることと似ています。

Devel::DumpTraceまた、各行でより多くの処理を行います-変数値を見つけ出し、それらを出力に含めます-そのため、過剰になり、実行がはるかに遅くなる可能性がありますperl -dS ...

(クリッキー、今週のプラグインは 2 つになりました!)Devel::DumpTrace

于 2012-12-06T17:57:01.107 に答える
1

あなたはあなた自身のプログラムの外の機能をステップスルーしたくないと言っていますか?そのためには、nの代わりに使用しますs

差出人perldebug

   s [expr]    Single step.  Executes until the beginning of another
               statement, descending into subroutine calls.  If an
               expression is supplied that includes function calls, it too
               will be single‐stepped.

   n [expr]    Next.  Executes over subroutine calls, until the beginning
               of the next statement.  If an expression is supplied that
               includes function calls, those functions will be executed
               with stops before each statement.
于 2012-12-06T16:39:19.407 に答える