2012-11-21 57 views
4

我只是想知道如果有人知道是否有可能設置debuger這樣F11只對單線程感興趣?我有兩個運行atm的線程,但我只對其中的一個感興趣。因此,我不希望屏幕繼續向上跳轉,以顯示第一個線程在做什麼。編號喜歡設置它,以便它只顯示第二個線程正在做什麼。Visual Studio,F11,只對某個特定線程在做什麼感興趣?

任何指針,將不勝感激,謝謝。

回答

4

一種方式做這將是凍結線程你不感興趣的。

在Visual Studio中,顯示「線程」窗口,可以從調試 - >窗口菜單。

然後,當你使用F11跟蹤,如果你是在線程中斷調試沒有興趣,發現這個線程的線程窗口中,右鍵單擊它並選擇在上下文中的「凍結」選項菜單。

現在,當你繼續使用F10F11追查,你將永遠不會在冷凍線程斷點命中。

請注意,凍結線程根本不會執行,所以如果您在調試時確實需要它執行一些工作,則可能需要不時凍結並再次凍結。

+0

謝謝冉,非常感謝。 –

+0

+1正確答案。但我很震驚的是,在中斷時自動凍結其他線程的功能並不存在,因爲我在這裏看到:http://social.msdn.microsoft.com/Forums/vstudio/en-US/86f0b04b-ce91-4e5a-b694- 67b802928fe3/IS-IT-可能對做單線程調試-的默認行爲-IN-A-多線程程序?論壇= vsdebug –

1

如果你打開調試器的「線程」窗口,你會看到每個線程都有一個「Just My Code」標誌。我發現如果您只爲當前正在執行的線程設置標誌,則「步入」功能(F11)和「跳過」(F10)函數似乎只針對該線程。雖然這是針對本地線程的,但它對於使用線程的託管代碼也同樣適用。

但是,如果您不小心,功能可能非常脆弱 - 任何線程的斷點仍會中斷(除非斷點僅針對感興趣的線程進行過濾)。如果另一個線程在您設置此標誌之前處於中間,那麼當您試圖通過當前線程時,該線程仍可能與調試器「交互」。所以你需要在使用這個功能時仔細管理你的斷點。

然而,總而言之,它似乎工作得很好。

請注意,我認爲這個術語很混亂,因爲「Just My Code」也用於描述一個託管調試器功能,用於設置調試器以免麻煩進入「非用戶」代碼(由屬性控制方法)。本地線程「只是我的代碼」是不同的,我實際上找不到太多的文檔(How to: Flag and Unflag Threads)。這種針對單個線程進行步進的特定行爲似乎沒有提及 - 我無意中偶然發現了這種行爲。