偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Windows Phone開發(fā)之VS調(diào)試(Debug)技巧

移動開發(fā)
宏會自動列出每個局部變量的名稱和值:總結(jié)Visual Studio的調(diào)試程序功能極其豐富,我強(qiáng)烈建議大家花些時間去掌握它的所有功能。上述技巧是大家平時很少注意的那些功能中的一小部分。這些技術(shù)賦予開發(fā)人員強(qiáng)大的調(diào)試能力,使調(diào)試程序(包括發(fā)行后的產(chǎn)品)變得更容易,更強(qiáng)大。

跳到當(dāng)前光標(biāo)處(Ctrl+F10)

我經(jīng)??吹饺藗?yōu)榱说竭_(dá)目標(biāo)代碼位置,而在程序中早早設(shè) 定了斷點(diǎn),然后反復(fù)地按F10/F11,一步步走到目標(biāo)代碼處。當(dāng)程序員的確需要仔細(xì)觀察每一步的狀態(tài)變化時, F10/F11是合理的選擇。然而多數(shù)情況下,人們只想快速到達(dá)他們真正關(guān)心的代碼處,這時候F10/F11就不是***選擇了。

這時,你應(yīng)該利用“跳到當(dāng)前光標(biāo)處”這個功能。先把光標(biāo)定位在要測的目標(biāo)代碼行上,再同時按Ctrl和F10,被測程序?qū)⒅苯犹皆撔型O?。你再也不用按許多次F10/F11了。即使目標(biāo)代碼位于獨(dú)立的類或方法中,你仍然可以從當(dāng)前正在檢查的地方跳過去。

條件中斷

另一種常見的情況是:開發(fā)人員設(shè)置斷點(diǎn),運(yùn)行程序,利用不同的輸入觸發(fā)斷點(diǎn),然后在斷點(diǎn)處手工檢查是否滿足某些特定的條件,從而決定是否繼續(xù)調(diào)查。如果當(dāng)前場景不是他們想要的,按F5繼續(xù)運(yùn)行程序,嘗試別的輸入,手動重復(fù)剛才的過程。

針對上述情況,Visual Studio提供了一個方便得多的功能——“條件中斷”。只有當(dāng)程序滿足了開發(fā)人員預(yù)設(shè)的條件后,條件斷點(diǎn)才會被觸發(fā),調(diào)試器中斷。這將避免頻繁地手工檢查/恢復(fù)程序運(yùn)行,大量減少調(diào)試過程中的手工和煩瑣工作。

如何設(shè)置條件斷點(diǎn)

設(shè)置條件斷點(diǎn)非常容易。在特定的行上,按F9設(shè)置斷點(diǎn)。

然后右擊斷點(diǎn)–編輯窗口左側(cè)的紅點(diǎn),在上下文菜單上選擇“Condition…”。

這時彈出一個對話框供你設(shè)置激活該斷點(diǎn)所需的條件。比如:我們希望只有當(dāng)局部變量paginatedDinners的尺寸小于10時,調(diào)試才中斷。

現(xiàn)在我再運(yùn)行這個程序,實現(xiàn)搜索,只有返回值小于10時,程序運(yùn)行才會被中斷。對于大于10的值,該斷點(diǎn)將被跳過。記錄到達(dá)斷點(diǎn)次數(shù)有時你希望,只有當(dāng)?shù)贜次滿足條件的運(yùn)行到達(dá)斷點(diǎn)時,才中斷程序運(yùn)行。例如:當(dāng)?shù)谖宕畏祷厣儆?0份晚餐的查詢結(jié)果時,中斷程序運(yùn)行。

可以通過右擊斷點(diǎn),然后在彈出菜單上選擇“Hit count…”菜單命令實現(xiàn)。這時系統(tǒng)彈出一個對話框,它允許你指定:

(1)當(dāng)滿足條件,而且進(jìn)入斷點(diǎn)的累計次數(shù)等于N時,斷點(diǎn)命中一次。

(2)當(dāng)滿足條件,而且進(jìn)入斷點(diǎn)的累計次數(shù)是N的倍數(shù)時,斷點(diǎn)命中一次。

(3)當(dāng)滿足條件,而且進(jìn)入斷點(diǎn)的累計次數(shù)大于N時,每次命中斷點(diǎn)。機(jī)器/線程/進(jìn)程過濾設(shè)置如下:右擊斷點(diǎn);在彈出菜單上選擇“Filter…” 菜單命令;然后指定命中斷點(diǎn)的特定條件:在指定的機(jī)器上、或指定的進(jìn)程中、或指定的線程中。跟蹤點(diǎn)—進(jìn)入斷點(diǎn)時的自定義操作許多人不知道“跟蹤點(diǎn) (TrackPoints)”這個調(diào)試功能。“跟蹤點(diǎn)“是種特殊的斷點(diǎn),當(dāng)它被命中時,它會觸發(fā)一系列自定義操作。如果你想觀察程序的行為,而又不想中斷 調(diào)試的時候,這個功能尤其有用。我將用一個簡單的控制臺程序來演示如何使用“跟蹤點(diǎn)”。如下是斐波那契數(shù)列的一個遞歸實現(xiàn):以上程序中,我們使用 Console.WriteLine() 輸出針對特定輸入值生成的最終斐波那契數(shù)列。如果希望在調(diào)試器里觀察操作中每一次遞歸運(yùn)算后的數(shù)列而又不實際中斷程序運(yùn)行,該怎么辦呢?“跟蹤點(diǎn)”可以輕 松實現(xiàn)。設(shè)置跟蹤點(diǎn)你可以在特定的行上,按F9加跟蹤點(diǎn)。然后

右擊斷點(diǎn),在上下文菜單中選擇“When Hit…”:在彈出對話框上,你可以設(shè)置命中該斷點(diǎn)時,所觸發(fā)的事件。

在上面例子中,我們設(shè)定一旦命中斷點(diǎn)時就打印追蹤信息。注意,我們已經(jīng)把局部變量“x”的值,作為追蹤信息的一部分輸出。局部變量可以通過{變量名}語法輸 出。你還可以利用系統(tǒng)內(nèi)置的命令($CALLER, $CALLSTACK, $FUNCTION等等),在追蹤信息中輸出常用的調(diào)試值。在上例中,我們同時選中了底端的“continue execution“選項,這說明我們不希望程序中斷調(diào)試狀態(tài),而是繼續(xù)運(yùn)行。唯一的不同是:每次斷點(diǎn)條件滿足時,我們的自定義追蹤信息都將被輸出?,F(xiàn)在 當(dāng)我們運(yùn)行程序時,會發(fā)現(xiàn)自定義追蹤信息自動顯示在Visual Studio的“輸出“窗口里。這讓我們很容易看到程序的遞歸調(diào)用過程:你也可以選擇往應(yīng)用程序中添加一個自定義追蹤信息的監(jiān)聽器。這時追蹤點(diǎn)的輸出信息 將通過它輸出,而不是Visual Studio的“輸出“窗口。跟蹤點(diǎn)—運(yùn)行自定義的宏上周,我在倫敦演講時,有聽眾問道:當(dāng)命中跟蹤點(diǎn)時,能否自動輸出所有的局部變量?Visual Studio中并沒有這樣的內(nèi)置功能,但我們可以寫一個自定義宏來實現(xiàn),然后在命中跟蹤點(diǎn)時調(diào)用該宏。這個的實現(xiàn)需要先打開Visual Studio的宏編輯器(工具->宏->宏IDE菜單命令),然后在項目資源管理器的MyMacros節(jié)點(diǎn)下選擇一個模塊或創(chuàng)建新模塊(如: 加個名為“UsefulThings”的模塊),再把下面的VB宏代碼貼到模塊中并保存。

  1. Sub DumpLocals() 
  2.  
  3. Dim outputWindow As EnvDTE.OutputWindow 
  4.  
  5. outputWindow = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput).ObjectDim currentStackFrame As EnvDTE.StackFrame 
  6.  
  7. currentStackFrame = DTE.Debugger.CurrentStackFrameoutputWindow.ActivePane.OutputString(“*Dumping Local Variables*” + vbCrLf) 
  8.  
  9. For Each exp As EnvDTE.Expression In currentStackFrame.Locals 
  10.  
  11. outputWindow.ActivePane.OutputString(exp.Name + ” = ” + exp.Value.ToString() + vbCrLf) 
  12.  
  13. Next 
  14.  
  15. End Sub 

上述宏代碼將循環(huán)當(dāng)前的堆棧,把所有的局部變量輸出到“輸出”窗口。使用自定義的“DumpLocals”宏然后,我們可以在如下的一個簡單程序中使用剛定 制的“DumpLocals”宏了:上述代碼中,我們用F9在“Add”方法的返回值處加了個斷點(diǎn),然后右擊斷點(diǎn),在彈出菜單上選擇“When hit”。將顯示如下對話框。和之前不一樣, 我們不選“Print a message”選項,也不手工設(shè)定需要輸出的變量;而是選擇“Run a marco”復(fù)選框,并指定到我們上面創(chuàng)建的UsefulThings.DumpLocals宏上:為了使程序能在命中跟蹤點(diǎn)后仍繼續(xù)運(yùn)行,我們將繼續(xù)選 中“continue execution”復(fù)選框。運(yùn)行程序現(xiàn)在按F5運(yùn)行程序,當(dāng)“Add”方法被調(diào)用時,我們會在Visual Studio的“輸出”窗口中看到如下結(jié)果。注意命中跟蹤點(diǎn)時,宏會自動列出每個局部變量的名稱和值:總結(jié)Visual Studio的調(diào)試程序功能極其豐富,我強(qiáng)烈建議大家花些時間去掌握它的所有功能。上述技巧是大家平時很少注意的那些功能中的一小部分。我之前寫過關(guān)于 VS 2010 調(diào)試器改進(jìn)的博文(包括固定數(shù)據(jù)提示窗、導(dǎo)入/導(dǎo)出斷點(diǎn)、保留上次變量的值,等等)。以后我還會發(fā)表更多關(guān)于VS 2010的新智能提示和文件調(diào)試信息的轉(zhuǎn)儲支持的博文。這些技術(shù)賦予開發(fā)人員強(qiáng)大的調(diào)試能力,使調(diào)試程序(包括發(fā)行后的產(chǎn)品)變得更容易,更強(qiáng)大。

責(zé)任編輯:閆佳明 來源: wpdever
相關(guān)推薦

2012-06-25 16:14:26

Windows Pho

2012-08-16 10:35:50

Windows Pho

2013-07-30 10:44:31

Windows PhoWindows Pho

2013-07-31 13:13:50

Windows PhoMVVM模式

2013-04-19 17:11:02

Windows PhoWindows Pho

2013-04-24 13:43:10

Windows Pho動畫PointAnim

2013-04-24 13:31:59

Windows Pho動畫之ColorAni

2013-04-24 13:19:06

Windows Pho動畫DoubleAni

2013-04-17 10:45:26

Windows PhoWindows Pho

2013-04-23 16:55:15

Windows Pho路徑之其它Geomet

2013-07-30 12:37:56

Windows PhoWindows Pho

2010-04-21 17:07:54

Windows Pho

2013-04-17 14:00:06

Windows PhoWindows Pho

2011-06-07 12:42:15

Windows Pho

2011-04-01 10:55:29

OSPFDebug

2013-04-16 17:02:50

Windows Pho概論

2013-04-19 16:34:56

Windows PhoWindows Pho

2013-07-30 11:18:37

Windows PhoWindows Pho

2016-03-01 14:37:38

iOSLLDB調(diào)試技巧

2019-08-16 09:22:38

技術(shù)調(diào)試互聯(lián)網(wǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號