我想gdb立即运行可执行文件,就像我输入"run"一样(动机:我不喜欢输入"run").
一种方法是将命令管道输出为gdb:
$ echo run | gdb myApp
Run Code Online (Sandbox Code Playgroud)
但是这种方法的问题在于你失去了与之交互gdb,例如.如果断点触发或myApp崩溃,则gdb退出.这里讨论这种方法.
看看中的选项--help,我没有看到这样做的方法,但也许我错过了一些东西.
Emp*_*ian 118
gdb -ex run ./a.out
Run Code Online (Sandbox Code Playgroud)
如果需要将参数传递给a.out:
gdb -ex run --args ./a.out arg1 arg2 ...
Run Code Online (Sandbox Code Playgroud)
编辑: Orion说这不适用于Mac OSX.
该-ex标志自GDB-6.42005年发布以来一直可用,但OSX使用Apple的GDB分支,而Leopard的最新XCode包含GDB 6.3.50-20050815 (Apple version gdb-967),所以你运气不好.
构建当前GDB-7.0.1版本是一种可能的解决方案 请务必阅读此内容.
小智 22
我会使用gdb脚本:
gdb -x your-script
Run Code Online (Sandbox Code Playgroud)
在那里你的脚本中包含类似:
file a.out
b main
r
Run Code Online (Sandbox Code Playgroud)
之后你有了正常的交互式gdb提示符
编辑:
这是一个真正懒惰的优化:
.gdbinit的working directory.之后你只需运行gdb as
gdb
...并且gdb自动加载并执行.gdbinit的内容.
小智 20
(echo r ; cat) | gdb a.out
Run Code Online (Sandbox Code Playgroud)
猫允许你在gdb中断后继续输入.
start 命令
这个命令是另一个不错的选择:
gdb -ex start --args ./a.out arg1 arg2
Run Code Online (Sandbox Code Playgroud)
它就像跑步一样,但也会在main那里设置一个临时断点并停在那里.
该临时断点一旦被击中就会被停用.
starti
还有一个相关的starti启动程序并在第一个指令处停止,另请参阅:停止在GDB中的第一个机器代码指令
当你做一些低级别的东西时很棒.