2011-04-28 110 views
7

如果我斷點多線程應用程序,會發生什麼情況。斷點多線程應用程序

它會停止所有的線程,只是一個斷點指向或整個程序崩潰?

如果有可能我只想停止一個線程,或者這會弄亂我的應用程序?

如果我不能斷點多胎面應用程序什麼是我可用的調試技術?

回答

1

它停止所有線程。

通常不可能停止一個線程。有關使用GDB調試線程的更多信息,請參閱本手冊的this part

+0

它會重新啓動所有線程if我繼續 ? – Skeith 2011-04-28 12:14:49

+0

在某些情況下,您可以重新啓動所有線程,或者只是一個線程。 – James 2011-04-28 12:15:18

0

既然你沒有用特定的語言/平臺標記你的問題,我會給出一個Java相關的答案。

在大多數IDE中,您可以在斷點上設置屬性,特別是條件屬性。所以,如果你知道你的線程的名稱,你可以做這樣的事情:

"ThreadName".equals(Thread.currentThread().getName())

...並利用同一類(在其中設置斷點)所有其他線程將繼續暢通無阻。

+0

在intellij中,至少,你也可以檢查選項「只停止這個線程,而不是所有」 – yshavit 2012-03-15 16:10:15

6

JAVA:就個人經驗而言,您可以通過停止所有線程或單個線程來調試多線程應用程序。這很可能會取決於您所使用的IDE,並且要連接到什麼應用程序,但對我來說它:

  • Eclipse在調試模式連接到Tomcat服務器JPDA運行
  • 放置一個斷點在代碼中,轉到Eclipse的調試視角(有時會暫停但不切換透視圖)

  • 在斷點窗口中,您將看到一個斷點列表。每一個你可以右鍵單擊並設置屬性...如果你想停止一個斷點上的所有線程,點擊Suspend VM單選按鈕。如果您只想停止單個線程,請單擊掛起線程。

我不確定您現在能否選擇使用單線程停止選項時要暫停的線程。在掛起虛擬機,你可以看看調試窗格,並看到你的線程...向下滾動,你可以在線程之間跳轉(守護線程10 vs守護線程9,類似的東西)