2011-12-08 126 views
8

我有DLL,我有確切的來源用於創建該DLL。我們希望我們的本地符號服務器能夠在客戶收到轉儲文件時運行。 (在我們的產品的下一個補丁/發佈之前,無法在客戶站點更新DLL)是否有可能(重新)創建DLL後的PDB文件

+0

你試過重新編譯這個dll文件嗎? – rekire

+0

調試器與舊的DLL文件不匹配新的PDB – Arve

回答

6

這似乎是不可能的。看一看這個位置:Why does Visual Studio require debugger symbol files to exactly match the binary files that they were built with?

或者這篇文章:PDB Files: What Every Developer Must Know

報價出來的「PDB文件:每個...」:

的極其重要的部分是如何調試知道這是與此二進制文件完全匹配的PDB文件的 。這是通過嵌入在PDB文件和二進制文件中的GUID 完成的。如果GUID確實與 不匹配,那麼您肯定不會在源代碼 級別調試該模塊。
.NET編譯器和本機鏈接器將此GUID放入 二進制文件和PDB中。由於編譯行爲會創建此GUID,因此暫停並考慮這一點。如果你有昨天的版本,並且沒有保存PDB文件,你會不會再次調試二進制文件? 不!這就是爲什麼要保存每個 版本的PDB文件至關重要。因爲我知道你在想這件事,所以我會繼續回答你已經形成的 問題:不,無法更改 GUID。

+2

看起來你是對的。但它看起來像chkmatch可以在一些情況下使用:http://www.debuginfo.com/tools/chkmatch.html – Arve

+0

哇,有趣的鏈接!好的,*通常*這是不可能的。我希望chkmatch可以幫助你。 – Markus

相關問題