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提示符

编辑

这里是一个真正懒惰的优化:

  1. 将脚本保存为working directory .gdbinit
  2. 之后,你只需要运行gdb

    gdb

…和gdb自动加载并执行.gdbinit的内容。

开始是另一个不错的select:

 gdb -ex start ./a.out 

这就像跑步,但也设置在main临时断点,并在那里停止。

一旦它被击中,这个临时断点被停用。

gdb -x <(echo run) --args $program $args