我正在尝试调试gnarly线程问题(在Windows上的C ++代码中),需要数百万次运行才能重现。 “printf debugging”没有给我足够的信息,所以我想在检测到问题的第一点闯入调试器。
我一直在使用__debugbreak()来执行此操作,但是当在后台线程上调用它并且调试器尚未附加时,它会挂起。当它挂起时我可以附加调试器,我会看到其中一个线程在该调用上阻塞。
这似乎是一种可行的解决方法,但我想确定这是预期的行为。谷歌搜索时似乎找不到任何引用,这让我怀疑我忽略了什么。
有人知道关于这个的章节和经文吗?
[更新] 实际上我是否看到对话框似乎很随机。 更糟糕的是,就像随机 - 但是独立 - __debugbreak()不会阻止线程,并且在我可以附加进程(无论是手动还是从调试对话框)之前进程已经退出。)