1

J'ai un programme simple C comme suitGProf outil peformance pour pilote de périphérique de caractères

main(int argc, char *argv[]) 
{ 
    /* Calling read function to character device driver*/ 
    int fd = fopen("MyCharDevice",0); 

    /*write call to device and further code*/ 
    return 0; 
} 

Maintenant, quand je suis le profilage à l'aide gprof, je ne reçois pas le temps pour la fonction main() lui-même. Où j'appelle mon périphérique char (dont je dois faire le profilage). J'ai essayé de mettre du code correspondant au pilote de périphérique appelant dans une autre fonction mais j'ai la même chose.

Contenu de analysis.txt sont les suivantes:

Flat profile: 

Each sample counts as 0.01 seconds. 
no time accumulated 

    % cumulative self    self  total   
time seconds seconds calls Ts/call Ts/call name  
    0.00  0.00  0.00  3  0.00  0.00 __gmon_start__ 

      Call graph 


granularity: each sample hit covers 4 byte(s) no time propagated 

index % time self children called  name 
       0.00 0.00  3/3   main [3] 
[4]  0.0 0.00 0.00  3   __gmon_start__ [4] 
----------------------------------------------- 

Index by function name 

    [4] __gmon_start__ 

Je ne reçois pas comment puis-je obtenir le temps.

Mon exigence:
En fait je dois comparer et sémaphores R/W Sémaphore performance à l'aide des outils d'analyse des performances Linux. Donc j'utilise gprof.

Répondre

0

Je suis un disque coincé, répétant sans

gprof est aveugle à temps E/S
gprof est aveugle à temps E/S
gprof est aveugle à temps I/O
etc . etc.

et la façon de dire à quel point le temps est passé est mis une boucle autour d'elle et

pause sous GDB et d'examiner la pile
pause sous GDB et d'examiner la pile
pause sous GDB et d'examiner la pile
etc., etc.

pour all these reasons, et bonne chance!

Questions connexes