2017-03-17 57 views
-1

我正在分析一個在加載或保存某個(本地)數據文件時崩潰的崩潰轉儲文件。調用堆棧顯示它在崩潰時執行了加載該文件。崩潰轉儲文件是否需要在崩潰時運行的本地文件?

我想知道如果我需要這個數據文件以及轉儲文件以及準確地分析崩潰?它會像文件名等一樣影響指針嗎?

+0

故障轉儲文件不需要任何東西。但正如托馬斯韋勒說,*你*可能需要二進制文件來了解崩潰。你是否需要「準確」分析崩潰?也許。也許不會。取決於導致崩潰的錯誤。 – conio

回答

1

不,你不需要它。您將使用gdb分析的內容是應用程序在崩潰時使用的內存快照,以及您的應用程序。 因此,只需要核心文件和應用程序(二進制+必需的庫;在最好的情況下,您將需要它們的源代碼以便能夠將調試信息與算法相關聯)。所有的指針,變量和其他值都會根據核心轉儲的時間而有所不同。

更新:但是,您也可以從調試器交互式地運行您的應用程序,直到您崩潰。那麼是的,你會需要你的文件。

+0

但是,不是我們如何通過使用故障轉儲文件進入代碼來調查所有崩潰?我正在檢查調用堆棧和變量值的差異點。目前尚不清楚您的更新何時不需要它? – zar

+1

調查覈心轉儲時,只能導航堆棧,但不能交互式執行指令。這意味着,你不能對調試器說「請執行下一行」。這隻適用於案例2我已經描述過您的調試器連接到正在運行的應用程序(或從調試器啓動時)並且它捕獲崩潰。 – dmi

+0

另外,總結一下。有2種情況:1)撞車後調查,2)在線調試。如果你提到了一個核心轉儲文件,這是第一種情況)。 – dmi

1

它取決於故障轉儲類型和創建故障轉儲時使用的標誌。完整的內存轉儲具有應用程序在崩潰時的所有內存。 MINIDUMP_TYPE標誌給你一個可能的印象。對於C++來說,任何轉儲通常都是有用的,因爲.NET全內存是首選。

除了轉儲之外,除了包含源文件和行號信息的PDB文件外,您幾乎不需要額外的文件。