le plus simple c'est d'y attacher un debbugger et voir où il est gdb --pid $(pidof monprocessus), puis pour voir où est le programme la commande bt.
S'il est multi threade (il y de fortes chances vu que tu parles d'étreinte fatale), tu peux itérer sur les thread à l'aide de la commande thread; ou plus simple lancer la même commande sur tous les tread avec thread aplly all commande
Et cerise sur le gâteau, tu peux même le faire en batch :
gdb --pid $(pidof monPorgramme) --eval-command="thread apply all bt" --batch
cela te permet de voir à un instant t où le programme se trouve.
Cette manip peut aussi être utilisé pour voir où un programme passe beaucoup de temps (suffit de le lancer régulièrement et voir où on est) C'est loin d'être aussi précis que des timers un peu partout, mais ça fonctionne sans altérer le code et ne demande pas de mise en place de truc lourds.
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: reponse
Posté par fearan . En réponse au message comment savoir si un processus a planté. Évalué à 7.
Ah oui coté formulation ça se pose là...
le plus simple c'est d'y attacher un debbugger et voir où il est gdb --pid $(pidof monprocessus), puis pour voir où est le programme la commande bt.
S'il est multi threade (il y de fortes chances vu que tu parles d'étreinte fatale), tu peux itérer sur les thread à l'aide de la commande thread; ou plus simple lancer la même commande sur tous les tread avec thread aplly all commande
Et cerise sur le gâteau, tu peux même le faire en batch :
cela te permet de voir à un instant t où le programme se trouve.
Cette manip peut aussi être utilisé pour voir où un programme passe beaucoup de temps (suffit de le lancer régulièrement et voir où on est) C'est loin d'être aussi précis que des timers un peu partout, mais ça fonctionne sans altérer le code et ne demande pas de mise en place de truc lourds.
Il ne faut pas décorner les boeufs avant d'avoir semé le vent