我正在尝试编写一个脚本来分析核心转储。到目前为止我已经想出了这个脚本。
#!/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"
当我尝试执行它时,出现以下错误: 文件“退出”不存在或不是常规文件。
你能让我知道我做错了什么吗?
您的 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"