2016-11-07 93 views
-1

我正在Visual Studio社區2013下開發C++。它是不是UWP的C++/Win32項目,它是作爲Debug/x64平臺運行的。爲什麼不是用於緩存ntdll.dll的pdb

我的配置是:

Tools -> Options -> Debugging -> Symbols -> All module, unless excluded 
Tools -> Options -> Debugging -> Symbols -> Cache symbol in this directory 

緩存符號目錄包含一堆*.pdb文件,這是從來沒有碰到。

問題: 當我運行調試器偶爾,我得到消息,有關與MS符號服務器下載ntdll.dll的,哪些是我猜的系統,因爲我不承認他們爲我的項目的一部分相關的一些其他文件。

爲什麼要下載ntdll.dllThis文章說:

符號不加載的一些常見原因包括:

  1. 符號路徑不指向正確的位置
  2. 符號文件是從一個不同版本的模塊比在過程中加載的 - Visual Studio要求符號文件來自與模塊完全相同的內部版本。它不能加載來自不同的生成,即使源代碼是相同的

我還沒有重建ntdll.dll符號,我怎麼可能?這是不可能的,因爲它是Windows內核的一部分,所以爲什麼要一次又一次地下載調試符號而不是緩存呢?

編輯:

當我運行調試(F5),然後Debug -> Windows -> Output下,我看到下面一行:

輸出 Debug -> Windows -> Modules
'MyProject.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. Loading disabled by Include/Exclude setting. 

ntdll.dll C:\Windows\System32\ntdll.dll N/A No Loading disabled by Include/Exclude setting.  2 10.0.14393.447 (rs1_release_inmarket.161102-0100) 11/2/2016 11:13 AM 00007FFFDF410000-00007FFFDF5E1000 [12772] MyProject.exe  

正如我所說的它發生偶爾我不知道我能如何重現這一點。似乎在過去它的工作時間,並不再從MS服務器上下載ntdll.dll。我無法將x64更改爲x86,因爲我們的項目不能在x86上運行。

C:\Users\wakatana\AppData\Local\Temp\SymbolCache包含下列文件夾/文件(我想一個可能是86,另一個是64位,但我不知道):

ntdll.pdb\41C94DD545BD4FCBA2E8F404185B97DC1\ntdll.pdb 
ntdll.pdb\77A5329C3B1E425FAA9519DA285D8DA71\ntdll.pdb 

是否可以明確地告訴VS使用已緩存的版本ntdll.dllC:\Users\wakatana\AppData\Local\Temp\SymbolCache所有新項目或什麼是默認的VS行爲?

我的操作系統是Windows10家的最新更新

+0

我剛剛禁用了符號服務器,並接受有關缺少pdb文件的警告。雖然我想看到解決這個問題的答案。 – drescherjm

+1

你必須更好地記錄你的問題。隨着調試器的連接,使用調試> Windows>模塊。右鍵單擊列表中的ntdll.dll並選擇「符號加載信息」。將該框的內容複製/粘貼到您的問題中。並提及你的Windows版本。 –

+0

@WakanTanka,你能告訴我你調試哪個項目類型嗎?每次調試應用程序時,是否真的從符號服務器上下載了這個dll文件?據我所知,它對於某些應用程序(如UWP或其他)的Windows 10家庭版本有一些限制,因此,如果您的應用程序以「無需調試即可開始」執行,請更改調試/發佈平臺目標,如X86/x64安裝的Any CPU,結果如何? –

回答

0

它將與此特定的程序集有關。

如果我使用X86目標,我將得到wntdll.pdb文件。

enter image description here

如果我使用X64的目標,我會得到ntdll.pdb文件,但是像你這樣的,他們都在TEMP \ SymbolCache文件夾。我還在X64目標中獲得了「源信息剝離消息」的信息。它在TOOLS-> Options-> Debugging-> Symbols下的默認符號文件夾中確實沒有pdb文件。

enter image description here

因爲我得到了同樣的問題,因爲你,我提交了一個連接報告,產品團隊:

https://connect.microsoft.com/VisualStudio/feedbackdetail/view/3113479/why-isnt-pdb-for-ntdll-dll-cached

您還可以添加您的評論投上一票。

+0

對不起,以後回覆我已經投了你的文章並接受了答案。 –