Zuerst ich export PERL5OPT=-d:NYTProf
von der Befehlszeile, so dass meine Debugging-Option von Kind-Prozesse geerbt wird. Dann starte ich mein Perl-Programm contactd. Es verzweigt sich in einen Daemon-Prozess und führt fork/execs neun Instanzen eines anderen Perl-Programms aus, table_manager. (Die Exec sieht etwa wie exec /path/to/perl /path/to/table_manager
aus.) An diesem Punkt kann ich 10 oder 11 neue Dateien mit dem Namen nytprof.out sehen. nnnn; eine für jeden Prozess, der bis jetzt wie erwartet gespalten wurde.Verwenden von Devel :: NYTProf auf Programm, das fork/execs
Clients stellen eine Verbindung zu contactd die Gabel/execs Slave, die wiederum zu den neun Tabelle Manager verbindet und nimmt Anfragen vom Client und übergibt sie an den neun Tabelle Manager.
Nach dem Ausführen einer typischen Clientverbindung habe ich alle Serverprozesse heruntergefahren. Ich laufe nytprofmerge, um die verschiedenen nytprof.out zusammenzuführen. nnnn Dateien in nytprof-fusion.out, und dann nytprofhtml -f nytprof-merged.out --open
ausführen.
Wenn der HTML-Bericht geöffnet wird, sehe ich nichts anderes als kontaktiert. Die oberen Subroutinen sind meist BEGIN Blöcke, importieren, AUTOLOAD ... frühen Ausführung Zeug.
Dies führt mich, dass NYTProf zu denken ist über eine Gabel gehen (basierend auf den mehreren nytprof.out Dateien), aber aus irgendeinem Grunde weiterhin nicht den exec ‚zum Profil ed Perl-Programme.
Ich laufe Perl 5.16.1 und die neueste Devel :: NYTProf, in MacOSX 10.8.2.
Irgendwelche Vorschläge, was ich nicht getan habe?
Ich musste dies bei der Arbeit versuchen, auf einem anderen Betriebssystem (CentOS), und es gibt einige Unterschiede. Ich musste die Option * addpid = 1 * explizit angeben, damit NYTPROF pid an die .out-Dateien anfügt. (Dies schien automatisch in meiner OSX-Umgebung zu geschehen.) Und ich habe alles, was ich wollte, ohne Angabe von forkdepth = -1 (was sowieso der Standardwert ist). Also werde ich das heute Abend auf OSX versuchen und sehen, ob die Angabe von addpid die Antwort ist oder ob forkdepth etwas bewirkt. – Chap