当我使用参数调试可执行文件时program
,arg1 arg2
我gdb
执行以下序列
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
或者可以将命令放在 中afile
并gdb
使用 运行gdb -batch -x afile
,或者如果您讨厌使用精美的 shell 换行符(和维护编码器),您可以在一行上完成所有操作(表达heredoc版本的不同方式):
gdb -q <<< "file ./program"$'\n'run$'\n'...
答案3
要在 GDB 命令行上将参数传递给程序,请使用gdb --args
.
gdb --args ./program arg1 arg2
bt