【问题标题】:Force C++ program to pause in Visual Studio debugger强制 C++ 程序在 Visual Studio 调试器中暂停
【发布时间】:2016-08-15 15:24:46
【问题描述】:

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

【问题讨论】:

    标签: c++ multithreading visual-c++ visual-studio-debugging


    【解决方案1】:

    您可能想要设置条件断点而不是使用assert

    【讨论】:

      【解决方案2】:

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

      如果您想从 ide 执行此操作,您可以从 msdn page 设置断点(或中断所有应用程序,ctrl+alt+B),然后使用“冻结”和在线程窗口中“解冻”。

      【讨论】:

      • 有时编译器内在函数 __debugbreak() 优于 DebugBreak(它是 kernel32 导出),因为当 MS 系统符号未加载到调试器中时,内在函数仍然可靠。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多