2012-03-28 43 views
1

我開發了一個將在服務器上運行24小時的小型MFC應用程序。 (Windows Server 2008 R2,x64)用於分析崩潰轉儲的WinDbg在本地計算機上無效

我故意讓應用程序崩潰,看看它的小型轉儲文件是否已正確創建並正常工作,並且它可以與WinDbg一起使用。

在這裏,我是如何做到的。

0:000> .symfix c:\symbols 
0:000> .sympath+ C:\Projects\*********\x64\Release 
0:000> .reload 
0:000> !analyze -v 
-> Works! I can see full call stack and the line where the error occured! 

但是,當我做我的本地筆記本電腦(Windows XP,86) 同樣的事情,我可以在調用堆棧文本看到的是非常基本的信息,如下面。 (這並不無論顯示什麼線我應該看看調試。)

STACK_TEXT: 
0012fd60 0040695c 00000004 dd0fbe7e 00d67d10 **************!CWnd::RunModalLoop+0xf7 
0012fdac 004010e0 dd0fbcce 0056bae8 0056bae8 **************!CDialog::DoModal+0x130 
0012ff1c 0050e492 00380032 00000000 7ffde000 **************!**************::InitInstance+0xa0 
0012ff30 004f7bd7 00400000 00000000 00020934 **************!AfxWinMain+0x48 
0012ffc0 7c7e7077 00380032 002d0033 7ffde000 **************!__tmainCRTStartup+0x11a 
0012fff0 00000000 004f7c2a 00000000 00000000 kernel32!BaseProcessStart+0x23 
-> Meaningless information in this case b/c the error occurs in OnBnClicked function. 

我花了幾個小時谷歌搜索,但覺得失去了尋找這個問題的答案。 爲什麼它不能在我的筆記本電腦上工作?

我應該檢查什麼?我錯過了什麼?任何想法將非常感激。 在此先感謝。

+0

您是否必須將PDB文件放在其他PC上以獲取所有信息?您是否重新編譯了PC上的程序,覆蓋了EXE中被絕對路徑引用的PDB文件? – harper 2012-03-28 03:52:26

+0

謝謝。我同意這必須是因爲PDB文件。但事情是我在64位和32位上做了同樣的事情,它只能在64位上工作。我在下面添加了一條評論...任何想法將不勝感激。 – 2012-03-29 06:11:30

回答

2

您將需要相同的pdbs,而無需從您的筆記本電腦中移除私人符號,以便獲得具有正確源代碼行信息的合理調用堆棧,同時我注意到您似乎已緩存了一些符號c:\symbols這些是相同的,窗戶的符號?

檢查您的visual C++設置以確保您沒有從pdbs中剝離私有符號,它很可能會在您嘗試設置斷點,搜索符號或執行崩潰分析時發出警告,指出它是unable to verify the checksum或類似的消息。

我也注意到你在64位服務器上運行你的應用程序,然後在32位筆記本電腦上運行WinDbg的正確版本是我的下一個問題,有32位和64位版本。

你還在用什麼版本的windbg?各種版本通常存在缺陷,因此您可能需要檢查您在筆記本電腦上運行的是與服務器上相同的版本。

+0

感謝您的回答。我嘗試儘可能多地找到了一些東西。在32位計算機上創建的所有轉儲文件都無法正常工作,但在x64上可以正常工作。經過很長時間的研究,我也注意到我的Visual Studio 2010在32位編譯時使用了這個名爲'analyze-'的選項,而在64位上沒有包含分析或分析選項。這就是我所能提供的一切,儘管我仍然會努力解決這個難題...... – 2012-03-29 06:09:38

+0

我終於找到了原因。如果有人在這裏問我,我會寫我如何解決這個問題。我最終花了整整一天的時間。 ... – 2012-03-29 08:01:39

+0

@YayCplusplus很高興聽到你解決了你的問題,請發佈答案,以便stackoverflow社區的好處,歡呼聲。 – EdChum 2012-03-29 10:47:15