我正在尝试编写一个脚本来分析核心转储。到目前为止我已经想出了这个脚本。
#!/bin/bash
#
# A script to extract core-file informations
#
#Binary image
binimg=$1
# Today and yesterdays cores
core=$2
gdblogfile="$core-gdb.log"
rm -f $gdblogfile
gdb -batch \
-ex "set logging file $gdblogfile" \
-ex "set logging on" \
-ex "set pagination off" \
-ex "file $binimg" \
-ex "core-file $core" \
-ex "bt" \
-ex "quit"
当我尝试执行它时,出现以下错误: 文件“quit”不存在或不是常规文件。
你能告诉我我做错了什么吗?
最佳答案
您的 gdb 版本可能有问题(您使用的是哪个版本)?我可以使用 gdb 6.3 重现您的错误,但不能使用 7.6 重现您的错误。无论如何,看起来 gdb,即使你已经以批处理模式启动它,仍然认为最后一个参数“quit”是图像的文件名(并且它试图加载它,并提示它不能)找不到)。因此,要按照 gdb 的预期进行操作,只需像平常一样传入镜像和核心文件(并删除 "ex file"
和 "ex core-file"
参数)。看看这样的东西是否适合您:
gdb -batch \
-ex "set logging file $gdblogfile" \
-ex "set logging on" \
-ex "set pagination off" \
-ex bt \
-ex quit \
"$binimg" \
"$core"
关于bash - 使用 bash 编写 Gdb 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20939627/