BASH从GDB读取提示
问题描述:
我的意图如下。我正在调试一个用.c脚本中的gcc编译的目标文件。让我们把这个编译脚本称为“foo”。当我从我的终端在Mac上运行命令:BASH从GDB读取提示
gdb -q ./foo
我得到的输出:
Reading symbols from ./foo...Reading symbols from /Users/john/Documents....done.
done.
我立刻得到了壳的提示看起来像这样:
(gdb) "Shell waiting for my input command here from keyboard"
在这一点上,我想自动化输入某些命令,如: break,list,x/x“.c文件中的符号”,“.c文件中的x/s”符号等等。对于这种自动化我想用一个小bash脚本,到目前为止,我有以下几点:
#!/bin/bash
SCRIPT=$1
gstdbuf -oL gdb -q $SCRIPT |
while read -r LINE
do
echo "$LINE"
done
在执行这个bash脚本的时候,我看到我的终端的外壳下面的输出:
Reading symbols from ./foo...Reading symbols from /Users/john/Documents....done.
done.
但我没有看到:
(gdb) "Shell waiting for my input command here from keyboard"
我如何才能检测到来自gdb的过程这提示在我的shell脚本可以命令自动我想他们输入代替手动?
非常感谢!
答
您可以创建一个文件.gdbinit
并将初始命令放在那里。 gdb
将执行他们在启动时如果添加以下行$HOME/.gdbinit
:
add-auto-load-safe-path /path/to/project/.gdbinit
现在,你可以把命令到/path/to/project/.gdbinit,像这样:
break main
run --foo=bar
请从这里删除'c'标签。 – Serge
也许你想要“期望”包。 –
我不明白为什么一些堆栈溢出的人需要对关于问题的非重要细节如此讨厌。如果我在问题中加上“C”标签是因为有很多人知道C并经常使用bash,所以他们可能会以某种方式指导我。我们不是都在这里互相帮助并学习吗? @Serge –