2011-03-28 44 views
6

**後處理編輯的內容,下面不能附加在.NET 4.0中

更多信息剛看了有關高級DOTNET調試(由布賴恩·拉斯姆森)兩個偉大的影片,我想重複一些步驟,但就是不知道如何與TIS錯誤進行:

An attempt to set a processes DebugPort or ExceptionPort was made, 
but a port already exists in the process. 

我發現在谷歌的一些答案,我通常理解的錯誤說什麼,但我就是不明白,一個奇怪的事實:當我編譯我的簡單應用程序< .NET 4.0,我可以附加爲電影顯示,試圖做相同的事情後,我編譯目標.NET 4.0禁用我附加。

谷歌的答案之一是「嘗試使用無創模式從windbg附加」但是..布賴恩不使用任何這樣的複選框。它只適用於他的視頻。

有什麼區別?漁獲何處?它是Windows 7還是Vista?也許一些不同的編譯設置很重要

我正在使用MS VS 2k10與MS SDK和從msdn下載的Windbg x86以及正確配置爲http服務器的符號。該系統是MS Vista x86。

資源(確切的時間> = 8:15): http://channel9.msdn.com/posts/MDCC-TechTalk-Advanced-NET-Debugging-part-2

編輯: 錯誤示出附連到處理時,從運行VS.試圖附加到VS運行的進程,windbg不顯示任何內容。

編輯2: Windbg在我的系統中有一些令人耳目一新的問題。使用幾次「Windows \ [Undock | Dock all]」菜單選項,我能夠看到附加過程的內容,這是缺少的。

所以現在唯一的問題是:附加到從VS開始的進程,當它使用目標< 4.0再次編譯一次= 4.0時,有什麼區別?爲什麼當瞄準4.0 windbg無法附加到非「無創」模式的過程。 VS 2k10有什麼變化?

+0

我怎麼能不喜歡這:)感謝客氣的話。 – 2011-03-28 13:47:29

+0

經過一個小時的谷歌搜索,我發現類似的問題之一在stackoverflow答案。我感到驚訝,看到你作爲回答者,並檢查你15分鐘前在線。我幾乎可以肯定,你會回答這個問題;) 我說過,視頻很棒,非常有幫助嗎?繼續做好Brian的工作。感謝您分享您的知識。 – qlf00n 2011-03-28 14:00:19

回答

8

我把它從Visual Studio(F5)調試,然後嘗試附加。一次只能有一個活動的調試器,所以這就是爲什麼你會得到這個錯誤。如果您想從VS啓動進程,請在不進行調試的情況下運行(Ctrl-F5)。如果你這樣做,你應該能夠從WinDbg附加。

編輯:很抱歉,我錯過了關於.NET各種版本在這方面表現不同的觀點,所以讓我試着再次解決您的問題。它在視頻中「正常工作」的原因是因爲我每次從VS啓動時都使用運行而不進行調試。所以如果你只是想跟隨視頻中的例子,你所需要做的就是不經調試就運行。

我開始在CLR2和x86上使用WinDbg/SOS。從VS啓動一個x86 .NET進程會觸發這個錯誤,所以我養成了不用調試就啓動的習慣。

但是,正如您已經發現的情況下,您可以真正附加到正在被VS調試的進程。我可以重現您描述的場景,但我也可以附加到從VS2008調試開始的x64,.NET 2進程,但如果平臺設置爲x86,則無法附加到同一進程。

顯然有細微的差別,我沒有意識到,它似乎並沒有專門與.NET版本,因爲我可以附加到一個x64 .NET2過程,即使它是在VS調試器的控制。

如果我找到其他詳細信息,我會更新我的答案。

+0

我試圖理解,爲什麼我可以附加到進程,這是從VS(調試器,不使用Ctrl-F5)開始,當目標.NET <4.0時?當我嘗試附加時,將目標編譯更改爲4.0會生成錯誤。唯一的區別是針對.NET平臺。 – qlf00n 2011-03-28 13:57:40

+0

感謝您在x64平臺上檢查此項。我不確定這是否只發生在我的配置上。 – qlf00n 2011-03-29 08:48:27