c++ - 使用 -O2 标志将 gdb 步进到上一行

标签 c++ debugging gdb g++ eclipse-cdt

使用带有 -g 和 -O2 标志的 gdb 跳过偶尔的步骤到上一行。删除 -O2 标志,它按预期工作。谁能解释为什么会这样?

我是 eclipse CDT 中 gdb 的新手,并通过“标准创建进程启动器”在 C++ 代码上使用它。

这是预期的行为还是有解决方案将优化留给

最佳答案

这是预期的。编译器可以随意在更高的优化级别上重新排序代码。手册页甚至说:

"Without any optimization option, the compiler's goal is to reduce the cost of compilation and to make debugging produce the expected results."

这个目标必须在更高层次上被搁置。

关于c++ - 使用 -O2 标志将 gdb 步进到上一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5487925/

相关文章:

C++ 赋值运算符和重载

c++ - C++11 中的原子会阻止编译器重新读取共享变量吗?

c++ - 在 C++ 的宏中包装方法

sql-server-2008 - 如何在 MS SQL Server 2008 中启用远程调试?

gdb - 设备需要跨gdb

debugging - 您使用/编写过哪些有用的 GDB 脚本?

c++ - GDB有没有办法在不省略模板参数的情况下打印类型?

Java/C++ SWIG - 使用数组参数调用函数

c++ - 安装 ICU 库和编译程序

linux - Linux 系统有 gdb 的替代品吗?