2010-01-05 71 views
4

我正在使用調試器(vs2008)。Visual Studio 2008/2010 SP1,如何跳出一個catch?

一旦我進入catch語句,我想知道是否有任何方法將執行光標設置回try的開頭。

只是拖動它似乎沒有工作,是否有一些設置我需要改變?

例子:

try 
{ 
    //Want the cursor back here 
} 
catch 
{ 
    //some code, cursor is here... 
} 
+0

我和你有同樣的問題 – 2011-04-05 06:23:14

+0

我已經更新了我的答案。顯然它與32位和64位環境有關。 – Thorarin 2011-04-10 08:28:13

回答

2

顯然,這取決於你所使用的.NET運行時的味道。在我第一次寫這篇文章的時候,我嘗試了它的時候效果很好,但是我正在使用我的工作電腦,安裝了32位操作系統。

我使用此代碼段進行測試:

try 
{ 
    throw new Exception(); 
} 
catch 
{ 
    Console.WriteLine("Error"); // Breakpoint here 
} 

你不能設置在try行的光標。它將在緊隨其後的行之後(塊聲明的開始)。

將光標拖到該行或try行對我編譯.NET程序for x86時正常工作。如果您正在運行32位操作系統,它也可以工作。但是,當你在64位環境和編譯任何CPU或,您將收到以下錯誤消息:

Unable to set the next statement to this location. The attempt to unwind the callstack failed.

由於這是僅用於調試的目的,可能的解決方法是爲x86編譯,因此將使用32位運行時。轉至Build菜單並選擇配置管理器。在平臺,請選擇x86新...如果它目前不在列表中。在後一種情況下,你會得到一個新的對話框。挑選的選項,如下圖所示,然後單擊OK:

New Project Platform

+0

我不這麼認爲。當在catch塊內時,我們不能跳回來嘗試塊 – 2011-04-05 04:59:58

+0

@Nam Gi VU:我已經做了更多的調查並更新了響應。這也許可以解釋爲什麼當你遇到問題時,它爲我工作。 – Thorarin 2011-04-10 08:08:42

1

如果我右擊並執行「設置下一條語句」然後我得到了下面的錯誤對話框:

無法設置下一條語句到這個位置。解除調用堆棧的嘗試失敗。

平倉是不可能在下列情況:

  1. 調試經剛剛在實時調試開始。
  2. 放鬆正在進行中。
  3. System.StackOverflowException或System.Threading.ThreadAbortException異常已被引發。

通過消除不能移動光標(與設置下一條語句相同)的原因必須是#2。

+0

「放鬆」究竟是什麼。請向我解釋。謝謝! – 2011-04-05 06:28:45

+0

@Nam看到[這個問題](http://stackoverflow.com/questions/2005606/net-what-is-an-unwind),這實際上是由我的問題,因爲這個答案! :-) – Justin 2011-04-05 06:54:52

+0

可愛。我將把你的問題作爲其餘的模板,如果你沒有問及即時調試和不能跳回異常的原因 – 2011-04-06 09:34:51