使用 bash 编写 Gdb 脚本

问题描述 投票:0回答:1

我正在尝试编写一个脚本来分析核心转储。到目前为止我已经想出了这个脚本。

#!/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"

当我尝试执行它时,出现以下错误: 文件“退出”不存在或不是常规文件。

你能让我知道我做错了什么吗?

bash gdb coredump
1个回答
4
投票

您的 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"
© www.soinside.com 2019 - 2024. All rights reserved.