傾印檔案是一個快照集,顯示正在執行的進程,以及某個時間點為應用程式載入的模組。 包含堆積資訊的轉儲也包括該時間點應用程式記憶體的快照。
在 Visual Studio 中開啟包含堆積的傾印檔案,就像在偵錯會話中遇到斷點一樣。 雖然您無法繼續執行,但您可以在記憶體傾印時檢查應用程式的堆疊、執行緒和變數值。
開發人員無法存取的機器出現問題時,大多使用轉儲來進行偵錯。 當您無法在自己的電腦上重現當機或沒有回應的程式時,您可以從客戶的機器使用傾印檔案。 測試人員也會建立轉儲,以儲存損毀或沒有回應的程式資料,以便進行更多測試。
Visual Studio 除錯工具可以儲存受控或原生程式碼的傾印檔案。 它可以偵錯由 Visual Studio 或其他以 小型傾印 格式儲存檔案的應用程式所建立的傾印檔案。
需求和限制
- 若要從64位機器偵錯傾印檔案,Visual Studio 必須在64位電腦上執行。
- Visual Studio 可以從 Linux 作業系統對受控應用程式的轉儲檔案進行偵錯。
- Visual Studio 可以偵錯 ARM 裝置的原生應用程式轉儲檔案。 它也可以從 ARM 裝置偵錯受控應用程式的傾印,但僅限於原生調試程式。
- 若要偵錯 內核模式 傾印檔案或使用Visual Studio中的 SOS.dll 偵錯延伸模組,請下載 Windows驅動程式套件 (WDK) 中的 Windows 偵錯工具。
- Visual Studio 無法偵錯以舊版 完整使用者模式傾印 格式儲存的傾印檔案。 完整使用者模式傾印與具有堆積的傾印不同。
- 對優化程式代碼的傾印檔案進行偵錯可能會造成混淆。 例如,函數的編譯程式內嵌可能會導致非預期的呼叫堆棧,而其他優化可能會變更變數的存留期。
是否包含堆積的轉儲檔案
傾出檔案可能具有堆積資訊。
具有堆積的傾印檔案 包含應用程式記憶體的快照集,包括傾印時變數的值。 Visual Studio 也會將載入原生模組的二進位檔儲存在具有堆積的傾印檔案中,這可讓偵錯更容易。 Visual Studio 即使找不到應用程式二進制檔,也可從包含堆的傾印檔案載入符號。
沒有堆積的傾印檔案 比有堆積的傾印小,但偵錯工具必須載入應用程式二進位檔才能尋找符號資訊。 載入的可執行檔案必須與轉存建立期間執行的可執行檔案完全相符。 不包含堆記憶體的傾印檔案只會儲存堆疊變數的值。
建立傾印檔案
在 Visual Studio 中偵錯進程時,您可以在調試程式在例外狀況或斷點停止時儲存傾印檔案。
啟用 Just-In-Time 偵錯後,您可以將 Visual Studio 調試程式附加至 Visual Studio 外部損毀的進程,然後從調試程式儲存傾印檔案。 請參閱 附加至執行中的程序。
若要儲存傾印檔案:
在偵錯功能中遭遇錯誤或斷點停止時,請選取 [偵錯>功能儲存傾印檔為]。
在 [ 另存新檔] 對話方塊的 [ 另存新檔類型] 下,選取 [ Minidump ] 或 [具有堆積的迷你傾印] (預設值)。
流覽至路徑並選取傾印檔案的名稱,然後選取 [ 儲存]。
備註
您可以使用任何支援 Windows 迷你傾印格式的程式來建立傾印檔案。 例如,來自 Windows Sysinternals 的 Procdump 命令行公用程式可以根據觸發程式或隨選建立進程損毀傾印檔案。 如需使用其他工具來建立傾印檔案的相關信息,請參閱 需求和限制 。
開啟傾印檔案
在 Visual Studio 中,選取 [ 檔案>開啟>檔案]。
在 [ 開啟檔案] 對話框中,找出並選取傾印檔案。 它通常會有 .dmp 延伸模組。 請選擇 [確定]。
[ 迷你傾印檔案摘要 ] 視窗會顯示傾印檔案的摘要和模塊資訊,以及您可以採取的動作。
在 [動作] 底下:
- 若要設定符號載入位置,請選取 [設定符號路徑]。
- 開始偵錯,請選擇 僅使用 Managed 偵錯、使用混合偵錯、僅使用原生偵錯。
- 若要分析受控記憶體,請選取 [ 偵錯受控記憶體 ],並查看 受控類型報告。
- 若要在記憶體傾印上執行記憶體分析器,請選取 執行診斷分析,並參閱 使用 .NET 診斷分析器偵錯受控記憶體轉儲。
尋找 .exe、.pdb 和來源檔案
若要在傾印檔案上使用完整偵錯功能,Visual Studio 需要:
- 為 .exe 建立傾印的檔案,以及傾印過程所使用的其他二進制檔(例如 DLL)。
- 符號 (.pdb) 檔案,適用於 .exe 和其他二進位檔。
- .exe和 .pdb 檔案,必須完全符合轉儲建立時檔案的版本與組建。
- 相關模組的來源檔案。 如果您找不到來源檔案,則可以使用模組的拆解。
如果記憶體傾印包含堆積資料,Visual Studio 可以應付二進位檔可能缺失部分模組的情況,但必須擁有足夠模組的二進位檔,以便產生有效的呼叫堆疊。
.exe 檔案的搜尋路徑
Visual Studio 會自動搜尋下列位置,以取得未包含在傾印檔案中的 .exe 檔案:
包含傾印檔案的資料夾。
傾印檔案所指定的模組路徑,這是收集傾印之計算機上的模組路徑。
- 符號路徑會在 [工具] (或 [偵錯) >] 窗格的 [所有設定>偵錯符號>] 區段下指定。 您也可以從 傾印檔案摘要 視窗的 動作 面板中開啟 符號 頁面。 在此頁面上,您可以新增更多位置來搜尋。
- 符號路徑是在
「工具」 (或「偵錯」 )選項 對話方塊中的「 偵錯 符號 」區段下指定。 您也可以從 傾印檔案摘要 視窗的 動作 面板中開啟 符號 頁面。 在此頁面上,您可以新增更多位置來搜尋。
使用 [無二進位碼]、[無符號] 或 [未找到來源] 頁面
如果 Visual Studio 找不到在傾印中偵錯模組所需的檔案,則會顯示 [找不到二進位檔]、[ 找不到符號] 或 [ 找不到來源] 頁面。 這些頁面提供問題原因的詳細資訊,並提供可協助您找出檔案的動作連結。 請參閱 指定符號 (.pdb) 和原始程式檔。