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

dan*_*tel 33 c++ debugging breakpoints visual-studio visual-c++

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

  n = UnitTest::RunAllTests();
  if ( n != 0 )
  {
  // place breakpoint here    
    return n;
  }
  return n;
Run Code Online (Sandbox Code Playgroud)

但每次我从SVN重新签出代码时,我都必须重新插入它.是否可以通过编译器对断点进行某种程度的放置?:

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

Gre*_*osz 62

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

使用__debugbreak()比直接写入更可取,__asm { int 3 }因为在编译x64体系结构的代码时不允许内联汇编.

对于记录,在Linux和Mac上,使用GCC,我正在使用__builtin_trap().


Cli*_*rce 18

DebugBreak(void)
Run Code Online (Sandbox Code Playgroud)

来自Winbase.h.

MSDN


Ind*_*000 9

您可以在C或C++中使用它

__asm
{
    int 3
}
Run Code Online (Sandbox Code Playgroud)