c++ - 如果附加了 gdb,我该如何中断,但如果没有附加,我该如何继续?

标签 c++ gdb

我有一些调试代码,如果在附加 GBD 的情况下执行,应该会中断应用程序的执行,但如果 GDB 没有运行,它应该会继续。

我正在使用的代码在结构上看起来像这样:

try
{
  if( some_complex_expression )
  {
     gdb_should_break_here();
     do_some_stuff();
     throw MyException();
  }
}
catch( const MyException & e )
{
  handle_exception_and_continue();
}

gdb_should_break_here 应该是什么?

最佳答案

实际上,看起来只要确保在我需要中断的任何地方都有一个空的 gdb_should_break_here() 函数就可以了。 (只要我不优化代码)。

那么我需要做的就是一个

break gdb_should_break_here

并且 gdb 将在所有正确的地方停止。

我猜我忽略了它,因为我的代码组织得不是很好,并且包含在一些调试宏中。

关于c++ - 如果附加了 gdb,我该如何中断,但如果没有附加,我该如何继续?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2459800/

相关文章:

我可以知道哪个线程从核心转储文件中更改了全局变量的值吗?

c++ - 当你复制一个随机数引擎和随机数分布时会发生什么?

c++ - 使用 cout 输出 cerr

java - 右移零填充运算符 >>> 在 Java : porting to C++

c++ - 实现具有不同大小元素的字符串数组

calloc 调用失败,代码崩溃

c++ - 为什么 C++ 中未初始化(然后使用)的 int 不返回错误?

c++ - this 和 this@entry 的区别?

c - GDB:使用 2 个命令运行

c++ - 为了在 C++ 中调试,如何声明一个不被优化(放入寄存器)的变量?