gpt4 book ai didi

c - 如何防止 gdb 在下一个命令后停止

转载 作者:太空宇宙 更新时间:2023-11-04 02:59:00 25 4
gpt4 key购买 nike

我正在尝试定义一个命令链,它将在 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”。我之前在 next 命令中遇到的问题现在出现在 finish 命令中:执行此命令后将停止,gdb 将等待用户输入,忽略以下 printf 和 continue 语句。对不起,这个问题有点令人困惑。我自己对此并不满意,但再次发布并不是更好的解决方案(因为评论会丢失并且会交叉发布)。

最佳答案

好吧,我想我自己找到了答案:gdb 似乎在内部为完成和下一个命令设置了一个断点。但是,可以定义一个钩子(Hook),以克服在此断点处的中断。我认为最好的方法是生成一个自己的 finish 版本(或下一个命令)以避免副作用,所以这是可以做的:

    define myfinish
finish
end

define hook-myfinish
printf "some_string"
continue
end

break some_function
commands
myfinish
end

建议在中断命令部分的开头使用silent 语句,以抑制中断时的额外输出:

    break some_function
commands
silent
myfinish
end

关于c - 如何防止 gdb 在下一个命令后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14261404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com