gdb – 如何自动运行可执行文件?
我想让gdb
立即运行可执行文件,就像我input“run”(动机:我不喜欢键入“run”)。
一种方法是将命令传输到gdb
如下所示:
$ echo run | gdb myApp
但是这种方法的问题是你失去了与gdb
交互性,例如。 如果断点触发或myApp
崩溃, gdb
退出。 这个方法在这里讨论。
看看--help
中的选项,我没有办法做到这一点,但也许我错过了一些东西。
gdb -ex run ./a.out
如果你需要传递参数给a.out
:
gdb -ex run --args ./a.out arg1 arg2 ...
编辑: 猎户座说,这不适用于Mac OSX。
-ex
标志自GDB-6.4
(2005年发布)以来一直可用,但是OSX使用Apple的GDB分支,而最新的Leopard XCode包含GDB 6.3.50-20050815 (Apple version gdb-967)
,所以你不在的运气。
构build当前的GDB-7.0.1
版本是一个可能的解决scheme。 只要确保阅读这个 。
(echo r ; cat) | gdb a.out
猫允许你在gdbrest之后继续打字。
我会使用一个gdb脚本:
gdb -x your-script
你的脚本包含如下内容:
file a.out b main r
之后你有正常的交互式gdb提示符
编辑 :
这里是一个真正懒惰的优化:
- 将脚本保存为
working directory
.gdbinit
。 -
之后,你只需要运行gdb
gdb
…和gdb自动加载并执行.gdbinit的内容。
开始是另一个不错的select:
gdb -ex start ./a.out
这就像跑步,但也设置在main
临时断点,并在那里停止。
一旦它被击中,这个临时断点被停用。
gdb -x <(echo run) --args $program $args