gdb 在一个命令中

gdb 在一个命令中

当我使用参数调试可执行文件时programarg1 arg2gdb执行以下序列

gdb
file ./program
run arg1 arg2
bt
quit

如何从 shell 脚本中的一个命令行执行相同的操作?

答案1

您可以在命令行上使用 option 将命令传递给 gdb -ex。您需要对每个命令重复此操作。当您的程序需要读取标准输入而不想重定向它时,这会很有用。例如,对于od -c

echo abc |
gdb -ex 'break main' -ex 'run -c' -ex bt -ex cont -ex quit  od

因此,特别是对于您的问题,您可以使用:

gdb -ex 'run arg1 arg2' -ex bt -ex quit ./program

答案2

命令可以通过标准输入输入:

#!/bin/sh
exec gdb -q <<EOF
file ./program
run arg1 arg2
bt
quit
EOF

或者可以将命令放在 中afilegdb使用 运行gdb -batch -x afile,或者如果您讨厌使用精美的 shell 换行符(和维护编码器),您可以在一行上完成所有操作(表达heredoc版本的不同方式):

gdb -q <<< "file ./program"$'\n'run$'\n'...

答案3

要在 GDB 命令行上将参数传递给程序,请使用gdb --args.

gdb --args ./program arg1 arg2
bt

相关内容