2

当我单步执行多线程程序的一个线程时,调试器会中断:

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

我的猜测是我正在调试的程序中的某个线程已经停止,但它不是我正在调试的那个,所以我不明白为什么我必须重新启动调试过程才能继续。

我有一个解决方法,我在下一行设置了一个断点然后重新运行,这有效但很烦人,它真的减慢了我的调试速度。有谁知道更好的方法?(例如,单步所有线程)

4

2 回答 2

1

尝试将环境变量 _THREAD_ERROR_DETECTION 设置为 0

一些轻松的阅读

于 2009-02-07T09:26:10.557 回答
1

可能发生的情况是某个其他线程已经退出(next恢复进程中的所有线程,而不仅仅是您正在调试的线程)。您可以验证这一点:thread当您开始调试特定位置时执行此操作,并在收到next aborted消息时再次执行此操作。

如果您正在调试的线程不需要与其他线程交互,您可以只恢复那个线程next <thread_id>(其中thread_id一个thread命令打印在哪里)。

提醒一句:如果您的线程需要 malloc() 一些内存,您可能必须恢复其他线程,因为其中一个线程可能持有例如malloc锁。

于 2009-02-10T07:40:32.720 回答