2009-01-21 5 views

Antwort

15

Zu schlecht, die Umgebungsvariable GMON_OUT_PREFIX ist im glibc nicht dokumentiert. Ich habe folgende Informationen aus dem Internet erhalten und auf meinem Computer getestet.

, wenn Sie die Umgebungsvariable GMON_OUT_PREFIX gesetzt, dann wird die Ausgabedatei als ${GMON_OUT_PREFIX}.[PID] genannt wird, ist die pid die ID des Profilprozesses.

Zum Beispiel:

GMON_OUT_PREFIX=mygmon; gcc -o foo -pg foo.c 

die GMON out-Datei ist: mygmon.12345, vorausgesetzt, die foo Prozess id = 12345.

+0

dokumentiert Wie weiter unten angegeben, Sie kompilieren GMON_OUT_PREFIX setzen, wenn ausgeführt wird, nicht wahr? – Yair

1

Um einen anderen Dateinamen geben gprof:

gprof a.out gprof-foo.out 

Als ihnen das Umbenennen, stellen Sie die GMON_OUT_PREFIX Umgebungsvariable. Ich habe das hier von good ol'obdump on libc gefunden ... Natürlich sagen die libc-doc nichts.

+0

Ich bin wirklich neugierig, warum dies nicht – hhafez

3

jscoot's Lösung hat für mich funktioniert. , aber die Einstellung von GMON_OUT_PREFIX ist zur Ausführungszeit wichtig, nicht zur Kompilierzeit.

2

Ich habe letzte Woche das gleiche Problem gefunden und habe es auf folgende Weise gelöst. Idee hier ist, das aktuelle Prozessverzeichnis zu ändern, wo auch immer Sie gmon.out Datei generieren möchten. Der Dateiname kann auf diese Weise nicht geändert werden. Sie können ändern, wo Sie die Datei speichern können.

#ifdef GPROF 
         /* so we can gprof */ 
         if (1) { 
          char tmpdir[32]; 
          snprintf(tmpdir, 32, "/tmp/%05d", mypid); 
          mkdir(tmpdir, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); 
          chdir(tmpdir); 
         } 
#endif 
Verwandte Themen