儘管我一般不喜歡SO上的討論/主觀帖子,但我真的很欣賞人們放在一起的「隱藏的祕密」系列帖子。它們提供了您現在可能發現的一些常見工具的概述。Visual Studio .NET調試器的「隱藏的祕密」?
對於這個問題,我想探索Visual Studio .NET調試器。什麼是VS.NET調試器中的一些「隱藏的祕密」,您經常使用或最近發現並希望您早就知道?
儘管我一般不喜歡SO上的討論/主觀帖子,但我真的很欣賞人們放在一起的「隱藏的祕密」系列帖子。它們提供了您現在可能發現的一些常見工具的概述。Visual Studio .NET調試器的「隱藏的祕密」?
對於這個問題,我想探索Visual Studio .NET調試器。什麼是VS.NET調試器中的一些「隱藏的祕密」,您經常使用或最近發現並希望您早就知道?
$exception
將在監視窗口中顯示當前正在處理的異常,即使您沒有將Exception
實例分配給指定變量的捕獲。
一些有用的快捷鍵。
F11
步入方法。Shift-F11
步出一個方法。F10
跨越一個方法。作爲一名Web服務開發人員,他在大多數時間都使用與我的前端代碼相同的解決方案工作,我發現能夠將"attach" to a process作爲一個巨大的時間保護程序。
在我發現這個隱藏的gem之前,我總是需要在一些調用web服務方法的前端代碼上設置一個斷點並進入它。現在我知道了這個技巧/功能,我可以在我的代碼的任何部分輕鬆設置斷點,從而節省了我大量的時間和精力。
對於桌面應用程序,我發現它非常有用,可以將消息框或線程休眠放入不能斷點的區域,然後附加到那裏的進程。 – 2008-09-25 14:46:02
@ j0rd4n:如果你可以添加一個MessageBox,這意味着你可以添加代碼,這意味着你也可以使用`Debugger.Break()`以編程方式設置一個斷點。 – Abel 2010-08-03 22:13:51
這是一種舊的。如果添加監視表達式err,hr
,那麼這將保存GetLastError()的結果,格式爲HRESULT(僅限VC++調試器)。
我最喜歡的功能之一是"When Hit..."選項在斷點上可用。您可以打印一個消息具有可變的,有很多的其他信息,如沿着價值:
$ADDRESS
- 當前指令$CALLER
- 以前的功能名稱$CALLSTACK
- 調用堆棧$FUNCTION
- 當前函數名稱$PID
- 進程ID$PNAME
- 進程名稱$TID
- 線程ID$TNAME
- 線程名稱你也可以有它運行宏,但我從來沒有使用該功能。
您可以將windbg擴展加載到Visual Studio調試器中,並在即時窗口中使用它們。
對於.net應用程序System.Diagnostics
有很多有用的調試工具。該Debugger
類,例如:
Debugger.Break(); // Programmatically set a break point
Debugger.Launch(); // Launch the debugger if not already attached
Debugger.IsAttached // Check if the debugger is attached
System.Diagnostics
也有很多不錯的屬性。我已經使用了兩個用於改變細節調試器顯示屬性放入當地人窗口,並通過屬性跳過代碼的一步,你不關心調試:
// Displays the value of Property1 for any "MyClass" instance in the debugger
[DebuggerDisplay("{Property1}")]
public class MyClass {
public string Property1 { get; set; }
[DebuggerStepThrough]
public void DontStepInto() {
// An action we don't want to debug
}
}
,張貼在另一篇文章薩拉福特正在VS調試器上做一個當前系列。
她的博客是VS技巧的最好來源:http://blogs.msdn.com/saraford/archive/tags/Visual+Studio+2008+Tip+of+the+Day/default.aspx
到點#2,您還可以右鍵單擊一行代碼並選擇「設置下一個語句」,它會將執行點移動到該行。 – CodingWithSpike 2009-06-19 12:30:03
您可以在「監視」窗口中右鍵單擊一個對象,然後單擊「創建對象ID」。
它將爲該實例分配一個ID號,允許您在複雜的對象圖中看到哪些對象引用同一實例。
事情我經常使用:
單擊菜單項「調試|例外」(或Ctrl-d,E的簡稱),你可以啓用打破在任何異常被拋出的時候,或者選擇不打破某些例外。
您可以設置調試器從MS服務器下載一些框架源代碼和符號,並進入框架代碼。 (一些庫,如System.ServiceModel,尚不可用)。它在調試下的選項窗口中。見MSDN How-To。
您可以使用VS.NET調試器來調試運行在IE中的Javascript。您只需安裝IE javascript調試器,並在IE設置中啓用javascript調試。然後在JS錯誤中會彈出一個「你想調試」對話框,你可以選擇在VS.NET中進行調試。
當執行暫停時,您可以上下拖動當前行光標(黃色箭頭)。
此外,爲了在異常暫停期間啓用此功能,您必須首先單擊「啓用編輯」功能以啓用異常詳細信息。
您也可以VS突破上處理的異常通過檢查一個感興趣的下: 調試 - >例外:拋出該異常列
您可以打開並放置一個斷點在源文件,如果文件屬於另一種解決方案(外部文件)。調試器仍然可以達到斷點。無需打開另一個Visual Studio實例來調試外部文件。有助於調試您收到的Web服務。只要所有的資源都是最新的和編譯的,這就可以工作。
無需將其放入手錶中,它會自動顯示爲本地窗口中的第一項。 – 2009-10-15 19:41:01