使用Visual Studio 2010調試C++項目時,它找不到crt的源代碼。當我試圖進入一個這樣的模塊時,它顯示「No Source Available」。它也不提供Browse
的選項,以便我可以幫助它找到源位置。沒有msvcr100d.dll!的源代碼__ CrtDumpMemoryLeaks()
在選項解決方案 - >通用屬性 - >調試源文件下,更新了crt源的正確位置。
由於缺乏crt的源代碼級別的調試,我必須通過反彙編來閱讀這些變得越來越困難。
任何人都可以幫我弄清楚可能會出錯嗎?
請注意**我通過Visual Studio使用外部構建系統來構建我的C++項目。
在漢斯的指導下,我如何縮小問題範圍。
雖然斷點仍然有效,但我列出了所有符號加載信息。我意識到msvcr100d.i386.pdb
與dll不匹配。它實際上一路走下來從微軟的公共符號存儲中獲取,當然這些符號被剝離掉了。所以這是我的問題的根源。
這裏是在social.msdn
謝謝您的迴應。部分改變編譯器開關會有點困難,因爲它可能會改變行爲,並且完全因爲我正在使用外部構建系統。但是這樣說,你所說的是對我有意義的。時間戳不匹配可能是可能的。我認爲connect.microsoft.com會是這個查詢的理想選擇。再次感謝你。 – Abhijit 2012-04-04 12:38:10
這不是時間戳不匹配。該.pdb有所有源文件和行信息被剝離。對於在發佈模式下構建的DLL,這是非常典型的,例如,Windows DLL的所有.pdbs都是以這種方式發佈的。一點都不,因爲你沒有任何源代碼。但它不是一個發佈模式DLL,你有源:)可能是一個愚蠢的錯誤,連接可以告訴你。 – 2012-04-04 12:43:36
賓果:-)你是對的。我想在pdb和dll之間不匹配的時間戳,但不相信他們實際上剝離了這些符號。這裏是我如何從調試輸出'Loaded'C:\ Windows \ SysWOW64 \ msvcr100d.dll',加載符號(去除源信息)來驗證它。 – Abhijit 2012-04-04 12:48:54