如何除錯複雜的coredump檔案

2022-04-12 17:39:13 字數 1747 閱讀 7941

1樓:來振榮

除錯dump檔案很簡單,雙擊自動開啟vc然後f7執行。

但是中間要注意很多事情。

1。dump檔案放在**

dump檔案不用非要放在你編譯出來的位置,你完全可以建立一個新的資料夾來放它。

2。要恢復當時的現場

可能你要問,怎麼可能,這個dump檔案可是使用者發給我的,我不可能去使用者家裡除錯吧?

這個恢復現場可不是指的非要到那臺機器上去,而是要把產生dump檔案對應的二進位制檔案拿到。

但是恢復現場需要所有的二進位制檔案都要對應,你一定要有導致使用者崩潰的那些exe和dll。既然是你釋出的程式,exe檔案當然你會有。所以這裡只考慮dll就行了。

dump檔案中記錄了所有dll檔案的版本號和時間戳,所以你一定可以同過某種途徑拿到它。如果你能從使用者那裡拿到最好,如果不方便,使用者不可能用的是我們平常不常用的作業系統,所以找個有對應系統的機器一般都會有。但是記住不光是檔名稱要一致,還要核對版本和時間戳,如果不同一樣沒有辦法用。

如果客戶用了某個特殊的補丁怎麼辦?

其實這個問題也很好解決,只要它不阻礙閱讀堆疊,就不用管它,除錯dump和執行程式不一樣,缺少一兩個dll沒有任何問題。

如果真的需要怎麼辦?

那就看下面一節。

3。符號檔案

符號檔案現在主要是指pdb檔案。

如果沒有符號檔案,那麼除錯的時候可能導致堆疊錯誤。

如果你丟失了這個釋出裡邊你編譯出來的那些exe和dll的pdb,那麼這個損失是嚴重的,你重新編譯出來的版本是不能使用的,乖乖的看反彙編自己猜位置吧。不過也有特殊的方法可以彌補,這裡不討論。所以一定要在釋出的時候把你自己的所有pdb檔案都備份起來。

2樓:匿名使用者

使用強大的gdb工具,一步步跟蹤。

如何生成coredump檔案

3樓:愛可生雲資料庫

檢視 error log:

我們拿到了崩潰位置0xee36f1,如何找到與之相對的**位置呢?

找臺測試機,獲取對應版本的安裝包:

解壓:然後用 gdb 開啟 mysqld:

在 0xee36f1 位置打一個斷點:

我們可以看到,gdb 將崩潰位置的檔名和行號都列印出來,

剩下的事情,就可以交給開發工程師,按照這個崩潰堆疊來進行問題排查。

贈送章節

紅框內的這串資訊是什麼?我們來解開看一下,

這段資訊分為兩段,"+0x71" 是一個偏移量,前面是一串文字,我們將文字解析出來:

可以看到前面這串文字是一個函式簽名的編碼,用 c++filt 還原編碼以後,可以看到完整的函式簽名。

紅框內的這串資訊的意思就是崩潰位置是 一個函式起始位置 + 偏移量。

我們大概可以猜到,這個 mysql 的缺陷是在為 binlog 產生新的檔名時發生的。

小貼士:

函式起始位置 + 偏移量 是一種記憶體位置的表示方法,但該位置不一定是這個函式內的**。

以本例來說,0xee36f1 這個位置,程式找到了就近的函式 generate_new_name 的起始位置,計算出有 0x71 這麼多偏移,就表示成了 generate_new_name+0x71 這種形式。

但 0xee36f1 這個位置的**,大概率是,但,不一定是 generate_new_name 這個函式內部的一段**。

如何使用gdb除錯coredump檔案

怎樣用gdb除錯core檔案

如何調整助聽器,助聽器如何正確除錯?

如果是全數字助聽器一般去聽力中心,讓工作人員調 一般的助聽器都應在專業人員的指導下調整,內部的各種頻率調整更是患者自己不能隨意嘗試的。普通助聽器使用者只要調節助聽器的音量就可以了,音量開關一般都是順時針開大,逆時針開小 也有反之的 調節音量時電位器旋轉地幅度要小,調至能聽清而無雜音為止。調好以後,應...

如何處理我這複雜的家庭關係這樣複雜的家庭關係如何處理

父母7年前離婚。那時你才20歲。你的人生事業發展之路才剛剛起步!正是你最需要父母支援和鼓勵的時候!令人同情!在父親酗酒的情況下,堅強的你能夠挑起家庭的重擔。一邊工作一邊支撐著這個家 夠男子漢!令人敬佩!你有這種精神,不久的將來一定能夠遇到深深敬佩你愛上你的她。這個她會和你共同維持這個家,你的壓力將會...

新手如何連線除錯思科路由器

新手連線除錯思科來路由器方法 自 家庭網路環境佈線 1 有貓 modem 貓 modem 路由器wan口 路由器lan口 電腦。2 沒有貓 modem 網線 路由器wan口 路由器lan口 電腦。電腦進入路由器 1 電腦ip dns設定自動獲取。2 開啟瀏覽器,在位址列輸入192.168.1.1 一...