2008-11-24 4 views
2

Quand je suis pas à pas unique à travers un fil d'un programme multithread, le débogueur est interrompu avec:tb_event_death quand même pas à pas dans dbx

0x(some hex ref) : tdb_event_death  : ret 
dbx: thread has exited -- next aborted 

Je suppose un fil quelque part dans le programme que je suis le débogage est arrêté , mais ce n'est pas celui que je débogue, donc je ne vois pas pourquoi je dois redémarrer le processus de débogage pour continuer.

J'ai un travail autour, je fixe un point d'arrêt sur la ligne suivante puis relance, ce qui fonctionne mais est très ennuyeux, il ralentit vraiment mon débogage. Est-ce que quelqu'un sait un meilleur moyen? (seule étape toutes les discussions, par exemple)

Répondre

1

essayez de régler vous _THREAD_ERROR_DETECTION la variable d'environnement à 0

some light reading

+0

Cela ne fonctionne pas. Je l'accepterais, mais il est trop tard ... (désolé) –

+0

en fait, en le mettant à '1' travaillé :-) –

1

Ce qui se passe probable est que un autre thread a quitté (faire next reprend toutes les discussions dans le processus, pas seulement celui que vous déboguez). Vous pouvez vérifier ceci: faites thread quand vous commencez à déboguer un endroit particulier, et encore quand vous obtenez le message next aborted.

Si le fil en cours de débogage n'a pas besoin d'interagir avec d'autres threads, vous pouvez reprendre simplement qu'un fil avec next <thread_id> (où thread_id est celui thread imprime commande). Un mot d'avertissement: si votre thread a besoin de malloc() de la mémoire, vous devrez peut-être reprendre d'autres threads, car l'un d'entre eux pourrait être en attente par exemple. malloc verrou.

Questions connexes