まずexport PERL5OPT=-d:NYTProf
、デバッグ オプションが子プロセスに継承されるように、コマンド ラインから実行します。次に、連絡先の Perl プログラムを起動します。フォークしてデーモン プロセスになり、別の Perl プログラムtable_managerの 9 つのインスタンスをフォーク/実行します。(exec は のようになりexec /path/to/perl /path/to/table_manager
ます。) この時点で、nytprof.out という 10 個または 11 個の新しいファイルが表示されます。んんん。予想どおり、今までフォークされたプロセスごとに 1 つ。
クライアントは、contactd which fork/ execs slaveに接続します。スレーブは、9 つのテーブル マネージャーに接続し、クライアントからの要求を受け入れて、9 つのテーブル マネージャーに渡します。
通常のクライアント接続を実行した後、すべてのサーバー プロセスをシャットダウンしました。nytprofmergeを実行して、さまざまな nytprof.out をマージします。nnnnファイルをnytprof-merged.outにコピーしてから実行しnytprofhtml -f nytprof-merged.out --open
ます。
HTML レポートが開いたとき、連絡先以外は何も言及されていません。最上位のサブルーチンは、ほとんどが BEGIN ブロック、import、AUTOLOAD ... 初期実行のものです。
これにより、NYTPROFは(複数の nytprof.out ファイルに基づいて) フォークを通過しているが、何らかの理由で実行された Perl プログラムのプロファイルを継続していないと思います。
MacOSX 10.8.2 で perl 5.16.1 と最新の Devel::NYTProf を実行しています。
私がしていないことに関する提案はありますか?