2015-12-16 16 views
0

類型我使用Visual Studio 2010無法中斷執行。這個過程不是當前正在執行的代碼

我正在一個DLL,它是由IIS在微軟的過程w3p.exe加載一個奇怪的問題。當我在另一臺機器上啓動遠程調試器並附加我的本地機器時,一切都很好,我可以調試。 問題是當我在本地運行它。我知道DLL被加載(因爲日誌文件),我可以將調試器附加到進程中。但是,當我嘗試Break all時出現錯誤,提示

無法中斷執行。此進程當前不在執行您選擇調試的代碼類型。

項目設置肯定是指向剛剛編譯正在運行的DLL的項目,所以我不太瞭解這個錯誤消息。

另外,當我設置斷點沒有任何反應。雖然調試器已連接,因爲當我停止IIS時,我收到一條錯誤消息,告訴我需要先停止調試器。

我使用的是故意的應用程序錯誤fopen(NULL, NULL),這將讓我在調試版本附加一個調試器。但是這相當複雜,因爲我必須在實際開始調試之前手動清除調用堆棧。使用__debugbreak()沒有幫助,所以我必須使用這種笨拙的解決方法。

所以任何人可以告訴我爲什麼這個遠程工作,而不是在本地?

+0

檢查 - >窗口 - > Modules'窗口,從預期的位置加載。此窗口還顯示調試器是否加載了模塊和pdb位置的調試符號(如果成功)。 – dewaffled

+0

這個DLL沒有其他位置,所以它必須從那裏加載或根本不加載。正如我所說的,我可以在日誌中驗證DLL是否已加載。 – Devolus

+0

@frymode,現在找到解決方案。 – Devolus

回答

1

所以我終於找到了解決我的問題。

當打開連接對話框中有一個與它旁邊有一個按鈕Select一個選項Attach to: Managed...。默認情況下,它被設置爲Managed (v4.0)。現在我加了Native code,這解決了我的問題。我現在也可以在當地附上。

我真的不明白爲什麼這個工程在遠程機器上,因爲代碼是完全一樣的,所以不應該有這樣的差異。如果您的DLL出現在`調試

+0

你救了我的靈魂! – Phiber

相關問題