我正在使用第三方DLL。對於某些特定情況,DLL中的函數會拋出異常。是否有可能在Visual Studio中調試DLL?在Visual Studio中調試第三方DLL?
the answer from Andrew Rollings之後,我能夠查看代碼,但有沒有簡單的方法通過Visual Studio中的代碼進行調試?
我正在使用第三方DLL。對於某些特定情況,DLL中的函數會拋出異常。是否有可能在Visual Studio中調試DLL?在Visual Studio中調試第三方DLL?
the answer from Andrew Rollings之後,我能夠查看代碼,但有沒有簡單的方法通過Visual Studio中的代碼進行調試?
如果該DLL採用.NET語言,則可以使用類似.NET Reflector的工具對其進行反編譯,然後根據源代碼進行調試。
或者如果源代碼可用,您可以詢問供應商。這可能是最簡單的方法。
它是.Net DLL,我有一個反射器,讓我試試這樣做。謝謝。 – Biswanath 2008-12-08 15:55:47
NET的反射6配備了Visual Studio的加載項,可以讓你對你沒有的源代碼組件使用Visual Studio的一步,通過調試。 – 2009-10-29 18:22:55
基於Andrew的答案,您只需將反編譯後的源代碼作爲項目中的新庫,並在源代碼中設置斷點即可。刪除所有對第三方DLL的引用,以便它是正在執行的反編譯代碼。
其他的事情:
+1提高對違反法律或違反許可協議 – JeffH 2009-04-21 16:05:11
我以爲.NET Reflector有一些調試插件。這將是一個好主意,因爲反編譯和重新編譯代碼通常會失敗,並且您需要在代碼中做很多修改才能修復它。
嘗試給.NET反射器調試器。它可能會幫助你很多。
有兩種方法我遇到:
1)訪問從使用項目的DLL項目。 這涉及在單獨的Visual Studio實例中構建DLL,然後通過Visual Studio中的其他項目(假定您有源代碼)訪問DLL。 有多種方式來實現:
Trace.WriteLine
語句。System.Diagnostics.Debugger.Break()
語句添加到DLL代碼。當在Visual Studio中運行調用項目 時, 程序執行將在那裏停止。 從這裏您可以添加訪問 調用堆棧(包括DLL本身的所有功能 調用),並設置斷點 點(雖然 圖標斷點將出現禁用 和休息 點會讀「懸停文本目前沒有命中斷點,當前沒有符號 「)。System.Diagnostics.Debugger.Break()
(見上)。2)附加一個使用過程的DLL項目。 這涉及將Visual Studio調試器掛接到正在運行的進程中。
對我來說調試了幾個第三方庫以及.NET本身的東西是WinDbg。這是一個來自微軟的令人敬畏的調試器,我曾用它來排除框架內發生的一些粘性問題。
如果它是託管DLL,則需要使用Son of Strike(SOS)擴展。它也可以調試本地。您需要了解一些有關使用它的說明和彙編/ CIL說明。您應該能夠確定異常以及導致它的原因。我們使用WinDbg/SOS來查找HttpWebResponse中的實例,如果您使用Gzip壓縮來下載頁面,並且服務器返回一個錯誤的Gzip頭部,.NET將在線程池中運行解壓縮,並且崩潰將取消您的過程。快樂調試。
.NET Reflector 6附帶了一個Visual Studio插件,它允許您在沒有源代碼的程序集上使用Visual Studio的逐步調試。
看一看這個博客帖子:
http://www.simple-talk.com/community/blogs/alex/archive/2009/09/22/74919.aspx瞭解更多詳情。
這仍然是一個非常早期的構建。所以不能保證它可以工作,並且可能會破壞你的視覺工作室配置或項目配置。確保你有任何項目使用備份(或源代碼管理)。
這裏下載: http://www.red-gate.com/MessageBoard/viewforum.php?f=109
至於塞薩爾雷耶斯在堆棧溢出問題Visual Studio - Attach source code to reference,ReSharper 5(或更高版本)中提到有這個能力。我們應該在這裏提一下
還有一個選項是dotPeek 1.2(從ReSharper的創作者一個自由的反編譯器)。下面是一個很好的帖子,描述如何配置VS符號服務器和dotPeek 1.2來調試VisualStudio反編譯的代碼:http://blog.jetbrains.com/dotnet/2014/04/09/introducing-dotpeek-1-2-early-access-program
是的,將代碼提取到文件中,將它們添加到dll項目並重新編譯dll。 將此項目添加到您的解決方案中,並將參考更改爲指向該項目。 然後你應該可以調試它。 – 2008-12-08 17:28:24
我有類似的問題。所有的資源都屬於我,但我不能將它們添加到參考項目中。有超過20個項目涉及...並沒有下面的解決方案真的有幫助 – TimothyP 2009-12-14 05:54:28