我想让gdb
立即运行可执行文件,就像我输入“run”一样
(动机:我不喜欢打字“跑”)。
一种方法是将命令传递给gdb
,如下所示:
$ echo run | gdb myApp
但这种方法的问题是你失去了与gdb
的互动,
例如。如果断点触发或myApp
崩溃,gdb
退出。
讨论了这种方法here。
查看--help
中的选项,我看不到这样做的方法,但也许我错过了一些东西。
答案 0 :(得分:111)
gdb -ex run ./a.out
如果您需要将参数传递给a.out
:
gdb -ex run --args ./a.out arg1 arg2 ...
编辑: Orion表示这不适用于Mac OSX。
自-ex
(2005年发布)以来GDB-6.4
标志已经可用,但OSX使用Apple的GDB分支,而Leopard的最新XCode包含GDB 6.3.50-20050815 (Apple version gdb-967)
,所以你出去了好运。
构建当前GDB-7.0.1
版本是一种可能的解决方案。请务必阅读this。
答案 1 :(得分:22)
我会使用gdb脚本:
gdb -x your-script
其中 your-script 包含以下内容:
file a.out
b main
r
之后你有正常的交互式gdb提示
修改强>:
这是真正懒惰的优化:
.gdbinit
保存在working directory
。之后您只需将gdb作为
运行 gdb
...并且gdb自动加载并执行.gdbinit的内容。
答案 2 :(得分:20)
(echo r ; cat) | gdb a.out
cat允许你在gdb中断后继续输入。
答案 3 :(得分:5)
start
命令
这个命令是另一个不错的选择:
gdb -ex start --args ./a.out arg1 arg2
就像跑步一样,但也会在main
处设置临时断点并停在那里。
此临时断点一旦被命中就会被停用。
<强> starti
强>
还有一个相关的starti
启动程序并在第一条指令处停止,另请参阅:Stopping at the first machine code instruction in GDB
当你做一些低级别的东西时很棒。
答案 4 :(得分:3)
gdb -x <(echo run) --args $program $args