2014-01-05 79 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"