Viesturs Asked: 2018-07-15 05:38:17 +0800 CST2018-07-15 05:38:17 +0800 CST 2018-07-15 05:38:17 +0800 CST gdb 在一个命令中 772 program当我使用参数调试可执行文件时arg1 arg2,gdb我执行以下序列 gdb file ./program run arg1 arg2 bt quit 如何从 shell 脚本中的一个命令行执行相同的操作? gdb 3 个回答 Voted Best Answer meuh 2018-07-15T07:17:01+08:002018-07-15T07:17:01+08:00 您可以使用选项在命令行上将命令传递给 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 thrig 2018-07-15T06:22:30+08:002018-07-15T06:22:30+08:00 这些命令可以在标准输入中输入: #!/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'... tbodt 2020-05-24T22:29:09+08:002020-05-24T22:29:09+08:00 要在 GDB 命令行上向程序传递参数,请使用gdb --args. gdb --args ./program arg1 arg2 bt
您可以使用选项在命令行上将命令传递给 gdb
-ex
。您需要对每个命令重复此操作。当您的程序需要读取标准输入以便您不想重定向它时,这可能很有用。例如,对于od -c
因此,特别是对于您的问题,您可以使用:
这些命令可以在标准输入中输入:
或者可以将命令放入
afile
并gdb
使用 运行gdb -batch -x afile
,或者如果您讨厌带有花哨的 shell 的换行符(和维护编码器),您可以在一行中完成所有操作(表示 heredoc 版本的不同方式):要在 GDB 命令行上向程序传递参数,请使用
gdb --args
.