下一步或步骤时GDB在细微的线条上

时间:2014-12-05 15:02:56

标签: linux debugging gdb embedded gdbserver

我使用GDB调试嵌入式linux目标板。在目标板上gdbserver正在运行剥离的二进制应用程序。在PC端,我运行附加了调试符号的应用程序。

从PC通过以太网连接我做“目标远程ip:端口”并且与gdbserver有健康的连接。我在一些函数中添加断点并继续。当我在简单函数中触发外部事件和程序中断时,调试器按预期成功中断。奇怪的行为从此开始。当我在GDB控制台而不是下一行中执行步骤或下一行时,它将转到上一行,而不是前进两行并向后返回两行。每次我做下一步或继续这一步。没有循环或跳转,代码应该逐行,但它不会。为什么GDB的行为如此?我该怎么做才能解决这个问题。

1 个答案:

答案 0 :(得分:3)

对于已应用高级优化的代码,这是正常行为。除非您实际上打算调试优化器,否则在调试器中执行优化代码几乎是无用的。

来自manual

  

调试使用'-g -O'编译的程序时,请记住优化器已重新排列代码;调试器会向您显示实际存在的内容。当执行路径与源文件不完全匹配时,不要太惊讶!