假设main()调用调用bar()的foo()。显然foo()和bar()是由用户/程序员定义的函数。另外,假设在调用者函数的中间调用这些函数。
如果我在Foo()中并且我突然意外地进入bar(),在Gdb中调用之后如何离开bar()并继续Foo()的立即指令?
我尝试使用“finish”命令,但我已经看到它完成了foo()的函数调用并将我返回到main。
只有当程序计数器指向foo()内的“call bar()”指令时,我才使用“ni”命令,但由于它不是库函数,所以它不起作用。我假设“ni”用于跳过库函数。
现在,我唯一的想法是在“call bar()”之后为指令创建一个断点,但我觉得有更好的方法来做到这一点。在那儿?
提前致谢。
答案 0 :(得分:2)
我尝试使用"完成"命令,但我已经看到它完成了foo()' s 函数调用并将我返回main。
如果您在调用foo()
时在finish
的gdb框架(第1帧)中,则会出现这种情况。尝试切换到bar()
的帧(第0帧)并调用finish
。在这种情况下,gdb应该只完成一个帧(帧0)。