在Visual Studio调试器中强制暂停C++程序

6

我正在调试在Windows下使用MSVC编译的C++程序。 我想要研究与多线程相关的问题。因此,我在我的代码中放置了ASSERT,并且当程序达到ASSERT时,它会显示关于ASSERT的窗口(标准的[Abort],[Retry],[Ignore]窗口),并提出暂停程序以进行调试的建议。我按下[Retry]按钮,程序暂停。但是,在我按下按钮的同时,其他线程继续执行。 因此,问题是如何在程序到达某个点时立即停止程序,以查看其他线程在那个时间正在执行什么操作?

2个回答

2

如果您想要设置有条件的断点,而不是使用assert,可以这样做:

breakpoint visual studio


2

如果您希望以编程方式执行此操作,请使用DebugBreak。(C#具有等效的API System.Diagnostics.Debugger.Break)

如果您想从IDE执行此操作,则可以从MSDN页面中通过Visual Studio设置断点(或者直接使用Ctrl+Alt+B强制停止应用程序),然后在线程窗口中使用“冻结”和“解冻”来控制线程执行。


2
有时候编译器内置的 __debugbreak() 比 DebugBreak 更受欢迎(DebugBreak 是一个 kernel32 导出函数),因为当 MS 系统符号未加载到调试器中时,内置函数仍然可靠。 - Christopher Oicles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接