等待崩溃的调试器?

Łuk*_*Lew 5 c++ debugging assert segmentation-fault

当断言失败或存在分段错误时,发生以下情况之一将非常方便:

  • 程序询问是否运行调试器。
  • 程序等待崩溃,直到连接了调试器。
  • 程序留下了一些东西(核心转储?),我们可以从这一点继续执行并进行调查。

由于平台,语言和调试器的种类繁多,这个问题非常笼统。我问的是C ++,我想Windows(VS),Linux(gdb),Mac(gdb?)解决方案对社区最有用。我对Linux + gdb感兴趣。

sbi*_*sbi 2

在 Windows 上有DebugBreak()( 和IsDebuggerPresent()),这是失败时可能发生的情况的选项之一assert

在 MacOS 上有类似的 API 调用 (Debugger()SysBreak())。

我对 Linux 不太了解,但据我所知,Linux 上的断言失败会导致 coredump,可以在调试器中查看。

  • 如果“通用”是指导致中断的 x86 指令,当然;) (3认同)