2014-04-25 43 views
3

出於好奇。我想知道是否有可能在調試過程中進入(F11)後臺工作。它通常只是跳到下一行代碼。 VS設置是否需要更改?它只是它的意思?在調試期間,進入後臺工作者/線程。可能?

任何澄清將不勝感激。謝謝。

+1

應該這樣做沒問題 - 只需在線程函數中放置一個斷點並逐步完成。在斷點處,所有線程都暫停。 [請參閱此處瞭解更多信息](http://msdn.microsoft.com/zh-cn/library/bb157786.aspx)。 –

+0

@RogerRowland是的,這就是我通常所做的。我只是想知道爲什麼它不會像正常功能那樣進入內部。 – Dumisani

+1

調試/ Windows /線程給你一個正在運行的線程列表。雙擊一個例如而程序在斷點處暫停並且您看到線程停止的位置。參看http://msdn.microsoft.com/en-us/library/w15yf86f.aspx。正如羅傑所說,從那裏調試的行爲非常正常。 –

回答

2

它通常只是跳到下一行代碼。

這是因爲BackgroundWorker正在另一個線程上執行,它必須先創建並啓動,這需要一些時間。如果你繼續踩下去,你會在某個時候進入工人,但是沒有確切的時間。

如果要調試它,只需在工作代碼的開始處放置一個斷點即可。

+0

這是信息。謝謝:) – Dumisani

4

正如評論所說,你只需要爲後臺任務中的第一行代碼設置一個斷點。 (或者:Debugger.Break()。)

此外,我建議你看看Debug > Windows > Threads窗口,它在多線程調試的情況下非常有用。

+0

我也會推薦平行觀察窗口。 –

1

調試開始後,打開Sebestyén回答中提到的線程窗口。當所需的線程開始時,請注意線程窗口中出現的新行的「位置」列。一旦它有你想要的線程的名稱,右鍵單擊它並選擇「切換到線程」。 這解決了當我試圖調試特定線程時,調試器光標繼續前進到代碼的其他線程(其他線程正在運行,我想)的問題。

2

Haggisatonal答案

禁用VS宿主進程(項目 - >屬性 - >調試 - >啓用在Visual Studio宿主進程)

鏈接

Visual Studio 2015 Debug doesn't work in multithread application

+0

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效 – abarisone

相關問題