2014-01-05 34 views
2

我正在尝试编写脚本来分析核心转储。到目前为止,我已经提出了这个脚本。使用bash的GDB脚本

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

,当我试着执行它时,我得到这个错误: 文件“退出”不存在或不是一个普通的文件。

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

回答

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"