开发者

How can I jump to a frame in a stack trace according to the function name in gdb?

I'm debugging a stack overflow due to infinite recursion. The program fails when the stack is 700 calls deep.

I want to jump to the frame in which the function was initially called. However, gdb shows me the stack trace from the top of the stack about 20 entries at a time, and I wonder if I can somehow skip straight to the calling function without looking through the stack trace to find its number.

To that end, I want to be able to jump to a stack frame based on its name instead of its number.

Can this开发者_如何学Python be done in gdb?


Two options:

  • up 200 will bring you up 200 frames
  • If you know the initial caller of the recursive routine, you can do f[rame] <caller-func> - this will jump to the frame of address caller-func.

See Frame Selection in the manual.


You have to use bt with minus. It is similar to bt, but print first the outermost n frames.
For example:
bt -100

And it is likely you will see the frame that you need to inspect on the first or second screen.
Once insecting the stack trace using bt -100 helped me to fix a pboblem with a lot of recursive calls easily.

And then issue command
f <here the number of your frame you need to inspect>

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜