-
[c++] threads profiling
Bonjour,
J'ai une application en Gtkmm / C++, et je fais actuellement joujou avec des threads. En théorie, j'évite toute intéraction entre mes threads et le thread graphique Gtk, mais il semble qu'en pratique, mon thread graphique soit freezé :D
Je me demandais, existe-t-il un profiler sous linux (bon je prend aussi sous windows s'il n'y a que là) qui puisse m'indiquer à quel endroit le thread graphiqye est bloqué, par exemple en listant tous les événements graphiques qui arrivent, et surtout le dernier avant le blocage :D ?
Merci :)
-
Salut,
sous Linux il y a gprof, il faut compiler et linker (tout les deux !!) le program avec -pg et en suit lancer le program et travailler comme tu as besoin de tester. Le fichier "gmot.out" est cree, bon, et a la fin tu lance "gprof 'ton prog' gmon.out" ou bien "gprof 'ton prog' gmon.out > result.txt" pour voir le contenu.
Bonne chance, Fredy
http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html
-
gprof te donne la liste de tous les événements graphiques ? Je l'avais très brièvement utilisé il y a quelque temps, je vais réessayer ...
Merci :)
-
Ca ressemble quand même à une mauvaise utilisation de gtk+ dans un contxte multithread ce que tu décris :) Peut être que gdb peut te donner une idée de où ton thread est bloqué (thread apply all bt).
-
oui ça ressemblait complètement à ça, d'ailleurs c'était bien ça :mouarf: En fait, dans une méthode, je lance un thread qui va effectuer un petit traitement (un glib thread) , et juste derrière le lancement du thread, je fais (c'est moooche) une petite attente active dans laquelle j'appelle un Gtk::Main::iteration pour rafraichir la pile graphique et laisser passer quelques événements.
Effectivement, le process Gtk principal semblait bloqué, et en protégeant l'itération par les thread_enter et thread_leave, c'est bon. Ce qui m'étonne, c'est que je suis dans le thread principal quand j'appelle l'itération, donc selon moi (arf) je n'ai pas besoin de protéger l'appel :roll:
Sinon, je teste Gprof avec le linux tool d'eclipse, je reviens pour les nouvelles