簡體   English   中英

如何讀取崩潰轉儲文件(我有源代碼和.pdb文件)

[英]How to read a crash dump file (I have source code and .pdb files)

我已經閱讀了StackOverflow上已有的問題,但我仍然無法使其工作。

我有

  • 來自客戶的迷你轉儲文件
  • 客戶所擁有的完全相同的代碼版本
  • 在調試目錄中,代碼的.pdb文件。

我嘗試將迷你轉儲文件放在調試目錄中,然后在Visual Studio 2010中打開它。我不知道這是正確的做法,還是下一步做什么。

正常的Debug菜單中的“Start Debugging”顯示為灰色。

Minidump文件摘要選項卡的右上角有一個帶有“操作”的框。 所以我點擊了“僅使用Native進行調試”,但我得到的是“當前位置沒有可用的源代碼”。

我必須遺漏一些非常簡單的事 - 請有人給我一個提示嗎?

只是將各種信息匯總到一個答案中:

你有程序生成時創建的.pdb文件嗎? 只是重建相同的源不起作用, 您需要為每個構建保留.pdb文件 - Alex Farber 2013年 2月20日11:05

“當PDB與二進制文件(DLL或exe)匹配時,調試器會匹配文件名,時間戳和校驗和等信息。” (Saikat Sen,Codeproject文章)

按照AlexFarber的提示,我將源代碼和發布文件夾從客戶的版本復制到我的計算機上(整個版本已保存,包括Release文件夾中的.pdb和.exe文件)。

然后我將轉儲文件復制到release文件夾中,並將Microsoft符號加載到同一文件夾中。

然后我再次將轉儲文件打開到Visual Studio 2010中。

我沒有看到比以前更有幫助的東西,我認為是由於這一點 - 看到這個SO問題的接受答案 我使用的是C#和.NET 2.0程序集,似乎我只能查看.NET 4.0程序集的源代碼。

我將在接下來的同一個問題上嘗試Hans Passant推薦的名為sos.dll的WinDbg加載項。

如何滿足使用同一版本的pdb文件的需要:

如果您使用WinDbg,我認為您可以針對相同的.pdb文件獲得此要求。 來自virtualdub “如果調試器很頑固並且不想加載符號,因為它認為它們不匹配,你可以使用.symopt + 0x40來設置”加載任何東西“標志。”

另外,如果我理解正確,您可以使用上面的sergmat引用的chkmatch工具來匹配.exe和.pdb文件。

據我所知,你有一個客戶的minidump,我認為他正在使用你的應用程序的Release版本和Debug PDB文件。

這就是你的問題,你的PDB和迷你轉儲不匹配。 為了查看清晰的堆棧跟蹤,PDB應該具有與生成轉儲文件的應用程序相同的構建配置/平台。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM