【发布时间】:2012-12-25 01:06:08
【问题描述】:
我正在尝试定义一个命令链,应该在 gdb 中的断点之后调用:
break some_function
commands
up
next
printf "some_string"
continue
end
在这种情况下(例如)我想在 some_function 处中断,在堆栈帧中向上并通过下一个命令跳到这个函数后面,然后打印“some_string”(或者可能是某个变量,它被函数),然后继续。但这不起作用,因为 gdb 将在下一个命令之后停止并等待用户输入内容,而忽略以下命令。
编辑: 好的,我上面给出的示例与我的描述不符。我真正想要的(感谢评论者 Nikolai,见下文)是这样的:
break some_function
commands
finish
printf "some_string"
continue
end
这将在“some_function”处中断,执行该函数,在“some_function”执行后立即返回并打印字符串“some_string”。我之前使用下一个命令遇到的问题现在出现在完成命令中:执行将在此命令之后停止,gdb 将等待用户输入,而忽略以下 printf 和 continue 语句。对不起,这个问题有点混乱。我自己对此并不满意,但再次发布它不会是一个更好的解决方案(因为 cmets 会丢失并且会交叉发布)。
【问题讨论】:
-
从你所说的你想要
finish,而不是next(此时你已经在函数中)。 -
“上栈”是什么意思?按一条指令返回?
-
^^ 他的意思是从当前正在执行的函数中返回
-
是的,谢谢,这就是我的意思。
-
@Nikolai:
finish可能是我想要的,而不是up。我以为up会完成当前功能,但我认为这是错误的。谢谢你给我这个提示,我将从上面调整我的代码,以更清楚地表达我想说的内容。