2009-12-11 34 views
0

我使用VS.NET附加到一個進程,該進程有很多DLL加載,我構建了一個DLL並嘗試在我的DLL中設置一個斷點。我點擊「New Breakpoint」並鍵入我的函數名稱Func_A並選中「Use Intellisense to verify」框。然後我點擊確定,但VS.net抱怨它找不到該函數。使用VS.NET調試應用程序

當連接進程時,我檢查了VS.NET的輸出,它沒有在我的DLL行後面有一個「無法加載符號」的消息,所以我認爲它已經成功找到了我的PDB文件。我不知道爲什麼我不能設置斷點。

我的項目是C#託管項目。請注意,對於所有的DLL,一些有調試信息,有些沒有,但我相信VS.Net已經確定了我的調試信息。

請建議等方式來嘗試...

另一個問題是,有沒有什麼工具來查看,可在裝配DLL文件中設置斷點的功能是什麼?

回答

1

如果你看到了很多的DLL裝載那麼很可能你正在運行在本地模式下的調試器。這是Tools + Attach to Process對話框中的一個選項,一定要選擇Managed。

到目前爲止,避免這種問題的最簡單方法是加載源代碼文件並通過單擊編輯器窗口的左側欄來設置斷點。另外,請勿使用「附加到進程」。使用Project + Properties,Debug選項卡,選擇「啓動外部程序」,然後選擇加載程序集的.exe文件。您現在只需按F5即可開始調試。請注意,Express版本中不提供此選項。

1

可以做一些更多的細節做的真的,但在這裏不用...

你有DLL的來源?如果是這樣,只需打開代碼並添加斷點即可。

如果你不這樣做,那麼你基本上依賴於Intellisense,我發現它並不總是可靠的,特別是如果涉及託管的C++程序集。爲了幫助,您可以使用Reflector來查看DLL,以獲取完整的名稱空間函數名稱,並嘗試忽略Intellisense。

使用反射器還可以讓你看看DLL是否被模糊處理(如果第三方)。

希望這有助於給你一些關於如何解決它的新想法。

ķ