2013-05-23 3 views
0

J'ai compilé et lié mon application avec -pg, et lors de l'exécution de l'application j'obtiens le fichier gmon.out correct et je peux l'analyser avec gprof. Je cours un certain nombre de scripts dans différentes situations pour découvrir un problème de vitesse entre deux versions de notre logiciel. Lorsque j'exécute l'application, la sortie gmon.out est générée. Comme je dois le faire pour un certain nombre de scripts différents, je les ai empilés dans un script pour courir afin que je puisse faire une sieste. C'est pas compliqué. Je cours également ce script en même temps dans un autre répertoire avec l'autre version de l'application.La sortie gprof n'est pas générée lorsqu'elle est exécutée dans le script bash

./test test1.script 
gprof test > test1.ver1.stats 
rm -f gmon.out 
./test test2.script 
gprof test > test2.ver1.stats 
rm -f gmon.out 

Ces fichiers ne génèrent pas le fichier gmon.out. Y a-t-il une explication à ce comportement? En outre, exécuter le script sans l'analyse de l'autre version en cours d'exécution (par exemple, concaténer les scripts au lieu de les exécuter en parallèle), produit également le même comportement.

Répondre

0

Les scripts que j'utilise pour tester l'application changent de répertoire pour obtenir un grand ensemble de données. Cela a affecté l'emplacement gmon.out alors lorsque l'application s'est fermée, elle a été écrite dans ce répertoire distant. Comme le dit GNU GProf manual,

Le fichier gmon.out est écrit dans le répertoire travail actuel du programme au moment où elle sort. Cela signifie que si votre programme appelle chdir, le fichier gmon.out sera laissé dans le dernier répertoire de votre programme chdir à. Si vous n'êtes pas autorisé à écrire dans ce répertoire , le fichier n'est pas écrit et vous obtiendrez un message d'erreur.

La nuit dernière, j'ai eu les scripts en cours d'exécution comme,

GMON_OUT_PREFIX=test1.ver1.out ./test test1.script 
GMON_OUT_PREFIX=test2.ver1.out ./test test2.script 
GMON_OUT_PREFIX=test3.ver1.out ./test test3.script 

Et bien, je ne pouvais pas trouver les fichiers dans mon répertoire de travail, je ne trouve finalement les fichiers dans le dossier de données. Dans ce qui précède, il n'est pas important de spécifier des noms différents pour la sortie puisqu'ils sont passés par leur identifiant de processus (comme, GMON_OUT_PREFIX.PID), mais était nécessaire dans mon cas pour distinguer les tests.

Questions connexes