【问题标题】:__debugbreak statement not triggering breakpoint__debugbreak 语句不触发断点
【发布时间】:2011-07-29 12:23:30
【问题描述】:

在我的可视化 C++ 代码中,我引入了用于触发断点的 __debugbreak 语句。我已经使用 /CLR 选项编译了项目。但它不会在执行过程中触发断点。为什么会这样?在我开枪之前请帮忙。这在 64 位可执行文件中。

编辑:我现在尝试使用 DebugBreak() 语句,现在它永远挂起,不确定是哪个语句。该 dll 由服务器程序使用,我从另一台机器上的客户端访问该程序。这是导致问题的原因吗?我应该从服务器机器本身运行它吗?我希望它至少会报告有关触发断点的消息,即使它无法在客户端计算机上成功启动调试器会话。 .pdb 文件在服务器上与 dll 相同的位置可用。

更新:我刚刚尝试在服务器机器上运行客户端程序,但 DebugBreak() 仍然导致无限挂起。调试器会话未启动。

【问题讨论】:

    标签: debugging visual-c++ debugbreak


    【解决方案1】:

    我在 C# 中使用此代码,也许您可​​以将其改编为 C++

    #if DEBUG
    var endTime = DateTime.Now.AddSeconds(30);
    while (!System.Diagnostics.Debugger.IsAttached && DateTime.Now < endTime)
      System.Threading.Thread.Sleep(10);
    
    if (System.Diagnostics.Debugger.IsAttached)
    {
      System.Diagnostics.Debugger.Break();
    }
    #endif
    

    【讨论】:

      【解决方案2】:

      为什么不能在调试器中使用 F9(断点)? 但是,DebugBreak(); 应该可以工作。

      如果 DLL/EXE 不能直接加载,您可以从“调试”菜单中“附加到进程”(希望您使用的是 Visual Studio)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-20
        • 2023-03-16
        • 1970-01-01
        • 2012-07-06
        • 2019-12-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多