gpt4 book ai didi

c - 自动化 GDB 以在特定断点处打印堆栈帧

转载 作者:太空狗 更新时间:2023-10-29 17:02:32 24 4
gpt4 key购买 nike

是否可以将 gdb 附加到正在运行的进程的 PID,并且每次程序遇到特定断点时,gdb 都会将堆栈帧输出到外部文件?

我看过thisthis但没有提及是否可以将 gdb 附加到已经运行的进程(而不是让 gdb 启动它)。

否则我可以将 gdb 附加到 PID 就好了,但我想让它自动运行 bt,将输出存储在外部文件中,然后运行 ​​continue。目前,我正在手动执行此操作,每次遇到断点时我都必须执行此操作,这很痛苦。

最佳答案

Is it possible to have gdb attached to the PID of a running process??

是的。可能的。

更新:

第一步:

.gdbinit文件中添加如下命令,

define callstack
set $Cnt = $arg0

while($Cnt)
commands $Cnt
silent
bt
c
end
set $Cnt = $Cnt - 1
end
end

第 2 步:使用 -x <path to .gdbinit file > 调用 gdb .记住运行进程的 PID。

第 3 步:根据需要放置断点。

第四步:调用用户自定义命令callstack并通过 no.of 断点。

    gdb> callstack <No.of. Break Points> 

第 5 步:现在输入“c”继续。 Bcos进程已经在运行。

对于日志记录,我建议遵循@VoidPointer 的回答。

set pagination off
set logging file gdb.txt
set logging on

对我有用。 Reference .

关于c - 自动化 GDB 以在特定断点处打印堆栈帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17672701/

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