2009-09-17 7 views
1

Il y a deux piles dans le programme: une est créée par OS et la seconde est créée par le programme lui-même pour exécuter du code avec elle. Lorsque le programme se bloque dans la deuxième pile, je veux passer à la pile principale dans gdb et voir le backtrace. C'est possible?Basculer entre plusieurs piles dans gdb 6.3

J'ai essayé d'enregistrer la rsp dans une variable et de la changer après le crash, mais le backtrace qui en résultait n'était pas correct. Je pense que gdb ne peut pas différencier les images dans la pile.

Répondre

0

Si vous avez deux threads avec deux piles, vous pouvez interroger le thread par 'threads info'. Après avoir identifié la pile de threads que vous voulez voir, sélectionnez-la avec la commande 'thread'. Mettez le numéro du fil après la commande.

Ensuite il vous suffit d'interroger la pile par « bt »

+0

Non, il n'y a pas de fils, le programme se comporte comme JIT, et exécute le programme compilé à l'intérieur. Donc, la question est de savoir comment puis-je collecter des informations sur le contenu de la pile des appels de programme en cours d'exécution et comment le donner à GDB après un crash pour restaurer la pile principale. – user174916

Questions connexes