c++ - Visual Studio - 可以是从代码调用的断点吗?

标签 c++ visual-studio debugging visual-c++ breakpoints

我有一个基于 UnitTest++ 的单元测试项目。我通常在代码的最后一行设置一个断点,以便在其中一个测试失败时检查控制台:

  n = UnitTest::RunAllTests();
  if ( n != 0 )
  {
  // place breakpoint here    
    return n;
  }
  return n;

但是每次我从 SVN 重新 checkout 代码时,我都必须重新插入它。是否有可能 编译器有点放置断点?:

      n = UnitTest::RunAllTests();
      if ( n != 0 )
      {
      // place breakpoint here    
#ifdef __MSVC__
        @!!!$$$??___BREAKPOINT;
#endif
        return n;
      }
      return n;

最佳答案

使用 __debugbreak() 内在(需要包含 <intrin.h> )。

使用 __debugbreak()最好直接写__asm { int 3 }因为在为 x64 架构编译代码时不允许内联汇编。

为了记录,在 Linux 和 Mac 上,使用 GCC,我使用的是 __builtin_trap() .

关于c++ - Visual Studio - 可以是从代码调用的断点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2389270/

相关文章:

visual-studio - Visual Studio 2015 构建和运行键盘快捷键

visual-studio - Visual Studio 解决方案为报表项目共享数据源?

visual-studio - 如何使用 msvc2010 构建 GSL?

我们可以在创建进程后立即以编程方式将进程附加到 VS 吗?

android - Cordova 应用程序编译但在运行时崩溃。如何获取错误报告?

c# - 条件属性

c++ - 打破 C++ 中的嵌套循环

c++ - 创建一个 for 循环,将像素靠近在一起,使方形看起来充满了颜色

c++ - 使用 IEEE 754 浮点 double 据类型安全往返整数值

c++ - mongocxx 游标和右值引用