1

perl デバッガーでスクリプトのすべてのサブルーチンをリストし、結果を外部ファイルに入れようとしました。しかし、うまくいきませんでした。

私のコード:

perl -d -S myscript.pl > results.txt
  • -S= すべてのサブルーチンを一覧表示する
  • -d= Perl スクリプトのデバッグ

はじめまして、

4

2 に答える 2

1

-S コマンドラインスイッチとして使用することは想定されていません。実行perl -dするとデバッガー プロセスが開始され、そこで使用できるコマンドの 1 つがS.

例:

$ perl -d tmp/splithttpdconf.pl 

Loading DB routines from perl5db.pl version 1.28
Editor support available.

Enter h or `h h' for help, or `man perldebug' for more help.

main::(tmp/splithttpdconf.pl:6):        my $basedir = shift;

DB<1> S main::
main::BEGIN
main::debug
main::splitconf

DB<2> 

必要な種類の出力を取得するには、代わりにプロファイラー モジュール Devel::DProf を使用できます。dprofpp プログラムで読み取ることができるファイルにプロファイラー情報を出力します。サブルーチンのリストを取得する例を次に示します。

perl -d:DProf perlscript.pl; dprofpp -T 

他のモジュールからロードされたサブルーチンではなく、独自のスクリプト内のサブルーチンのみが必要な場合は、次のように grep を追加します。

perl -d:DProf perlscript.pl; dprofpp -T | grep main::

ただし、特定のプログラムにどのサブルーチンが存在するかを知るという特定の質問については、一貫したコーディングスタイルを使用する場合、grep "sub.*{"最初から a を実行する方がおそらく簡単です。

于 2013-03-27T08:53:01.463 に答える
1

ホーム ディレクトリに、次の内容の .perldb というファイルを作成します。

parse_options("NonStop=1 LineInfo=results.txt AutoTrace=1 frame=2");

そして、コマンドを実行します

perl -d myscript.pl

サブルーチン全体をスキャンして一覧表示する場合は、実行前に Perl が参照するものを次のように指定します。

perl -MO=Deparse -f myscript.pl

于 2013-04-05T03:23:50.167 に答える