1

我正在尝试调试需要数百万次运行才能重现的粗糙线程问题(在 Windows 上的 C++ 代码中)。“printf 调试”没有给我足够的信息,所以我想在我检测到问题的第一点闯入调试器。

我一直在使用 __debugbreak() 来执行此操作,但是当在后台线程上调用它并且尚未附加调试器时,它会挂起。当它挂起时,我可以附加调试器,我会看到其中一个线程在该调用上被阻塞。

这似乎是一个可行的解决方法,但我想确定这是预期的行为。在谷歌搜索时我似乎找不到任何参考,这让我怀疑我忽略了一些东西。

有人知道这方面的章节和经文吗?

[更新] 实际上我是否看到对话框似乎很随机。更糟糕的是,就像随机的 - 但独立 - __debugbreak() 不会阻塞线程并且在我可以附加进程之前进程已经退出(无论是手动还是从调试对话框))。

4

0 回答 0