2014-02-12 73 views
0

我有一個二進制文件,我用「-g -O2」g ++選項編譯。我的二進制文件崩潰後也創建了一些核心轉儲文件。我手動做的是用二進制和一個核心轉儲文件作爲參數調用gdb,然後使用「info threads」來知道我有多少個線程,然後爲每個線程執行「thread n」,其中n是線程數字,然後「bt」查看後面的軌跡。是否可以使用腳本自動執行此過程?如何編寫使用gdb的腳本?

回答

2

FWIW它更容易使用這個看在所有線程回溯:

thread apply all bt 

您可能還喜歡

thread apply all bt full 

它也顯示所有的局部變量。

+0

你是對的,的確我喜歡「bt full」 – e271p314

0

嗯,我想這是一個簡單的問題。由於我的二進制有螺紋量恆定我寫了一個名爲gdb.cmd,內容如下

set pagination off 
info threads 
thread 1 
bt 
thread 2 
bt 
... 
thread 11 
bt 
q 

腳本,然後使用bash for循環

for f in `ls core.*` ; do gdb <binary name> $f -x gdb.cmd > /tmp/$f ; done