最初にI export PERL5OPT=-d:NYTProf
コマンドラインからデバッグオプションを子プロセスが継承するようにします。それから私はPerlプログラムcontactdを立ち上げます。これはデーモンプロセスとなり、別のPerlプログラムの9つのインスタンスをfork/execする。table_manager。 (execはexec /path/to/perl /path/to/table_manager
のようになります。)この時点で、nytprof.outという10個または11個の新しいファイルが表示されます。 nnnn;これまで予想通りにフォークアップされた各プロセスの1つです。フォーク/ execsのプログラムでDevel :: NYTProfを使用する
クライアントが順番に9台のマネージャーに接続し、クライアントからの要求を受け付け、9台のマネージャーに渡しcontactdフォーク/幹部スレーブ、に接続します。
典型的なクライアント接続を実行した後、私はすべてのサーバープロセスをシャットダウンします。私はさまざまなnytprof.outをマージするためにnytprofmergeを実行します。 nnnnファイルをnytprof-merged.outに入力し、nytprofhtml -f nytprof-merged.out --open
を実行します。
HTMLレポートが開くと、という連絡先以外は何も表示されません。上のサブルーチンはほとんどがBEGINブロックで、インポート,AUTOLOAD ...早期実行のものです。
これはNYTPROF がは(複数nytprof.outファイルに基づいて)フォーク渡って行くが、何らかの理由でのexecのプロファイルを継続していないされていることを考えるように私をリードには「Perlプログラムを編。
私はPerl 5.16.1と最新のDevel :: NYTProfをMacOSX 10.8.2で動かしています。
私は何をしていないのですか?
私はこれを仕事で、別のOS(CentOS)で試してみなければなりませんでしたが、いくつかの違いがあります。私は明示的に* addpid = 1 *オプションを指定してNYTPROFにpidを.outファイルに追加させなければなりませんでした。 (これは私のOSX環境で自動的に起こったようです)そして、forkdepth = -1(デフォルトでは、とにかく)を指定せずに、私が望むものすべてを手に入れました。ですから今夜これをOSXで試してみて、addpidを指定するのが答えか、forkdepthが違いを生むかどうか確認してください。 – Chap