Skip to content Skip to sidebar Skip to footer

Why Is Gdb "jumping Back" When Debugging With C Source Codes

I'm debugging the goldfish android kernel (version 3.4), with kernel sources. Now I found that gdb sometimes jump back and forth between lines, e.g consider c source code like the

Solution 1:

When I reached the if clause, I type in n and it will jump back to the int a part. Why is that?

Because your code is compiled with optimization on, and the compiler can (and often does) re-arrange instructions of your program in such a way that instructions "belonging" to different source lines are interleaved (code motion optimizations attempt (among other things) to move load instructions to long before their results are needed; this helps to hide memory latency).

If you are using gcc-4.8 or later, build your sources with -Og. Else, see this answer.

Post a Comment for "Why Is Gdb "jumping Back" When Debugging With C Source Codes"