当我program
使用参数调试可执行文件时arg1 arg2
,gdb
我执行以下序列
gdb
file ./program
run arg1 arg2
bt
quit
Run Code Online (Sandbox Code Playgroud)
如何从 shell 脚本中的一个命令行执行相同的操作?
meu*_*euh 16
您可以使用选项在命令行上将命令传递给 gdb -ex
。您需要为每个命令重复此操作。当您的程序需要读取 stdin 以便您不想重定向它时,这会很有用。例如,对于od -c
echo abc |
gdb -ex 'break main' -ex 'run -c' -ex bt -ex cont -ex quit od
Run Code Online (Sandbox Code Playgroud)
因此,特别是对于您的问题,您可以使用:
gdb -ex 'run arg1 arg2' -ex bt -ex quit ./program
Run Code Online (Sandbox Code Playgroud)
可以在标准输入上输入命令:
#!/bin/sh
exec gdb -q <<EOF
file ./program
run arg1 arg2
bt
quit
EOF
Run Code Online (Sandbox Code Playgroud)
或者可以将命令放入afile
并gdb
运行gdb -batch -x afile
,或者如果您讨厌带有精美外壳的换行符(和维护编码器),您可以在一行中完成所有操作(表达heredoc版本的不同方式):
gdb -q <<< "file ./program"$'\n'run$'\n'...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13306 次 |
最近记录: |