tb_event_death при одиночном шаге в dbx - PullRequest
2 голосов
/ 24 ноября 2008

Когда я перехожу один поток многопоточной программы, отладчик прерывается:

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

Полагаю, что где-то в программе, которую я отлаживаю, поток остановился, но я не отлаживаю его, поэтому я не понимаю, почему для продолжения необходимо перезапустить процесс отладки.

У меня есть обходной путь, я устанавливаю точку останова на следующей строке, затем перезапускаю, что работает, но очень раздражает, это действительно замедляет мою отладку. Кто-нибудь знает лучший способ? (например, пошаговые ВСЕ потоки)

Ответы [ 2 ]

1 голос
/ 10 февраля 2009

Вероятно, что какой-то другой поток завершил работу (выполнение next возобновляет все потоки в процессе, а не только ту, которую вы отлаживаете). Вы можете проверить это: выполните thread, когда начнете отлаживать определенное место, и снова, когда получите сообщение next aborted.

Если поток, который вы отлаживаете, не должен взаимодействовать с другими потоками, вы можете возобновить только этот поток с помощью next <thread_id> (где thread_id - это одна из thread командных распечаток).

Предостережение: если вашему потоку нужно malloc () для некоторой памяти, вам, возможно, придется возобновить работу других потоков, потому что один из них может содержать, например ,. malloc замок.

1 голос
/ 07 февраля 2009

попробуйте установить для переменной среды _THREAD_ERROR_DETECTION значение 0

легкое чтение

...