从 shell 脚本中运行 gdb 命令

Posted

技术标签:

【中文标题】从 shell 脚本中运行 gdb 命令【英文标题】:Run gdb command from within shell script 【发布时间】:2018-02-09 07:46:19 【问题描述】:

我正在制作一个简单的核心转储分析器。我有一个核心文件和符号。现在我想创建一个实用程序,以便可以上传这两个文件,并显示堆栈跟踪(bt)。 我执行一个shell脚本:

gzip -d coredump.gz
tar xvf symbols.tar.gz
gdb program
#Now at this point I want to send gdb commands one at a time. Like:
core-file corefile
echo bt

我想将“bt”的输出保存到文件中。我该怎么做?

【问题讨论】:

发送命令看这个帖子:***.com/questions/17863025/…后面的问题可以log the gdb output。 【参考方案1】:

你想要:

rm -f gdb.txt
gdb -ex 'set logging on' -ex 'where' program corefile
# GDB output is now in gdb.txt

【讨论】:

谢谢,如果我将它添加到 shell 脚本中就可以了。但是如果我从 php shell_exec 调用它,它就不起作用。我问了另一个单独的问题:***.com/questions/48715364/…。感谢您的帮助! 我使用上面的方法调用了disassemble fn。但似乎当二进制文件中有多个同名函数时,只有一个被反汇编。是否可以全部反汇编,或者我应该根据原始地址进行反汇编?

以上是关于从 shell 脚本中运行 gdb 命令的主要内容,如果未能解决你的问题,请参考以下文章

shell进交互式不退出

需要从 Python 脚本运行 shell 命令并存储在变量中 [重复]

GDB 没有停止 python 脚本中的“中断”命令

shell从入门到精通shell脚本几种运行方式的区别

如何在日志文件中包含GDB命令?

从 shell/命令提示符运行 MySQL 脚本时,空格会更改分隔符