版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Visual Studio 2010 的調(diào)試(斷點設(shè)置、變量查看)(1)、在需要暫停的位置設(shè)置斷點 (方法一:將鼠標(biāo)置于將要設(shè)置斷點的行,按 F9或在調(diào)試中選擇設(shè)置斷點;方法二:單擊將要設(shè)置斷點的代碼行的左側(cè)邊區(qū)域),如下圖所示:| Global Sspe)-lude Xar dgamei hint Cardgame: :talparticipants=(-int nnain ()Cardgame #bridge-0;Cardgame* blackjack。;Cardgame* solitaire=Q;Cardgame* paker=0;bridge=new Cardgame(4): blac
2、kjack=new Cardgame (E); sclit aire=nevr Cardgwe (1); delete blackjack: delete bridge;poker二new Cardgame(5); delete solitaire: delete poker;return 0;(2 )、點擊 開始調(diào)試”或F5 ,進(jìn)行調(diào)試;(3)、當(dāng)程序執(zhí)行到斷點處,執(zhí)行暫停(處于中斷模式),如下圖所示:(Global Scope- main。#include Cardgame. hnint Cardgame:totalparticipants=O;- int utam()ICardgame
3、*bridge=0:Cardgame# blackack=0;Cardgame* solitaire=0;Cardgame# poker=0;bridge=nev Cardgame(4):black jack=new Cardgame CS): solitaire=new Cardgame(1);delete blackjack:deiste bridge:poker=new Cardgajue (5);delete solitaire;delete poker;return 0;(4)、此時可檢查變量的值方法一:將鼠標(biāo)指針懸停在該變量上方,該變量的值將顯示,如下圖紅色背景的單詞,其實此時鼠標(biāo)
4、位于字母r和t中間,在它的右下側(cè)顯示了的它值。(此 方法只要把鼠標(biāo)放到變量的上面就可以)(Global Scope) M mainfl? #include Cardgame, hint Cardgame:totalparticipants=0:y Cardgameilotalparticipants 18E! int main ()(Cardgame *bridge-Q;Cardgane* blackjacked :Cardajne* solitaire=0;Cardgame* poker=0;bridge=new Cardgame(4);blaclcjack=new Cardgame (8)
5、;solitaire=new Cardgame (1);delete blackjack;delete bridge:poker二n日w Cardgame(5);delete solitaire;delete poker;return 0;方法二:將鼠標(biāo)放在某變量上,單擊鼠標(biāo)右鍵,并 添加監(jiān)視(Add Watch ),該變量的名字和值將會在生成的監(jiān)視窗”顯示W(wǎng)atch 1 NameVdlue小 C ardg ia:me:rt3ta Ip artnc vpan 0(5)、此時可選擇 逐行調(diào)試或F11、逐過程”調(diào)試或F10,如連續(xù)按F10 ,可查看表中的值的變(Globa Scope.i-I /
6、rriarnOCar+bridgc=0 :Cardgame* blackj ack=0;Cardgame* solitaire=0;Cardgame* poker=0;bridge=nev Cardgame (4):black jack=new Cardgame CS): solit aire=new Cardgame Cl): delete blackjack;delete bridge;-/ mainO化,(Global Scope)Cardgame *bridge=0;Cardsame# blackjack=O;Cardgame# solitaire=0;Cardgame# poker=
7、0;bridge-new Cardgante(4);blackjack=new Cardgame CS): solitaire=new Cardgane (1);delete blackjack;delete bridge:Match 1NameValue Cardgam:totalparticipan 1(6)、直到程序尾,結(jié)束調(diào)試注:在(4)中,查看變量的值,我們也可以用 SHIFT+F9 ,打開快速監(jiān)視窗, 然后在其輸入變量名,查看變量的值,或打開快速監(jiān)視窗后,再填加 監(jiān)視窗VS2010 中的調(diào)試技巧許多Visual Studio下的程序員,甚至一些很有經(jīng)驗的開發(fā)人員,都不知道這些技巧。
8、希望這篇文章能幫你掌握這些技巧。它們都很簡單,卻能幫你節(jié)約大量的時間。跳到當(dāng)前光標(biāo)處(Ctrl+F10 )我經(jīng)常看到人們?yōu)榱说竭_(dá)目標(biāo)代碼位置,而在程序中早早設(shè)定了斷點,然后反復(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)代碼位于獨立的類或方法中,你
9、仍然可以從當(dāng)前正在檢查的地方跳過去。條件中斷另一種常見的情況是:開發(fā)人員設(shè)置斷點,運行程序,利用不同的輸入觸發(fā)斷點,然后在斷點處手工檢查是否滿足某些特定的條件,從而決定是否繼續(xù)調(diào)查。如果當(dāng)前場景不是他們想要的,按F5繼續(xù)運行程序,嘗試別的輸入,手動重復(fù)剛才的過程。針對上述情況,Visual Studio 提供了一個方便得多的功能 一一條件中斷只有當(dāng)程 序滿足了開發(fā)人員預(yù)設(shè)的條件后,條件斷點才會被觸發(fā),調(diào)試器中斷。這將避免頻繁地手工檢查/恢復(fù)程序運行,大量減少調(diào)試過程中的手工和煩瑣工作。如何設(shè)置條件斷點設(shè)置條件斷點非常容易。在特定的行上,按 F9設(shè)置斷點。page ? 0, pavar pagi
10、natedDinners = new PaginatedList(dinners,return View(paginatedDinners)然后右擊斷點-編輯窗口左側(cè)的紅點,在上下文菜單上選擇Condition paginatedDinners);Delete Breakpoint0r Dibble Breakpoint CtrkF9Location.- Cotdition,” Hit Count.Filter.When HitEdMmb 比Aft+F9AExport. r彈出一個對話框供你設(shè)置激活該斷點所需的條件。比如:我們希望只有當(dāng)局部變量paginatedDinners的尺寸小于10時,
11、調(diào)試才中斷。我們可以寫出如下的表達(dá)式:現(xiàn)在我再運行這個程序,實現(xiàn)搜索,只有返回值小于10時,程序運行才會被中斷。對于大于10的值,該斷點將被跳過。記錄到達(dá)斷點次數(shù)有時你希望,只有當(dāng)?shù)?N次滿足條件的運行到達(dá)斷點時,才中斷程序運行。例如:當(dāng)?shù)谖宕畏祷厣儆?0份晚餐的查詢結(jié)果時,中斷程序運行??梢酝ㄟ^右擊斷點,然后在彈出菜單上選擇“Hit count菜單命令實現(xiàn)。paginatedDinners);。 Oeiete Breakpoint(3 Disable Breakpoint Ctri+ F9Location. 匚 onditicin Hit CountFilter When Hit”,Edit
12、labels.oAlt+F9T L/ Export,.這時系統(tǒng)彈出一個對話框,它允許你指定:(1)當(dāng)滿足條件,而且進(jìn)入斷點的累計次數(shù)等于N時,斷點命中一次。(2)當(dāng)滿足條件,而且進(jìn)入斷點的累計次數(shù)是N的倍數(shù)時,斷點命中一次。(3)當(dāng)滿足條件,而且進(jìn)入斷點的累計次數(shù)大于N時,每次命中斷點。Breakpoint Hit CountA breakpoint is hit when the breakpoint location is reached and the condition is satisfied. The hit count is the number cf times the bre
13、akpoint has been hit.W hen the breakpoint is hit:break when the hit count is equal to bra*break A/hen the hrt count k eqoal toCancelbreak when the hit count is a multiple ofbrea Ic when the hit count is greater than or equal to機器/線程/進(jìn)程過濾設(shè)置如下:右擊斷點;在彈出菜單上選擇“Filter 菜單命令;然后指定命中斷點的特定條件:在指定的機器上、或指定的進(jìn)程中、或指
14、定的線程中。跟蹤點一進(jìn)入斷點時的自定義操作許多人不知道 跟蹤點(TrackPoints) ”這個調(diào)試功能。 跟蹤點是種特殊的斷點,當(dāng)它 被命中時,它會觸發(fā)一系列自定義操作。 如果你想觀察程序的行為, 而又不想中斷調(diào)試的時 候,這個功能尤其有用。我將用一個簡單的控制臺程序來演示如何使用跟蹤點”。如下是斐波那契數(shù)列的一個遞歸實現(xiàn):When Hit.Edit label工Ht+吃 LM/ConsoleApplication.Prograniusing System;A namespace MyConsoleApplicationH class Program(static int Fibonacci
15、(int x)return 1;)return Pibonacci(x - 1) + Pibonacci(x - 2);契數(shù)列。如果希望在調(diào)試器里觀察操作中每一次遞歸運算后的數(shù)列而又不實際中斷程序運行,該怎么辦呢?跟蹤點”可以輕松實現(xiàn)。設(shè)置跟蹤點static void Main() (Console.WriteLine( Fibonacci no. = 0 , Fibonacci(10); Console.ReadKey();以上程序中,我們使用Console.WriteLine()輸出針對特定輸入值生成的最終斐波那你可以在特定的行上,按 F9加跟蹤點。然后右擊斷點,在上下文菜單中選擇When
16、 Hit”:Location,.Condition.J De:lete Breakpoint港 Disable Breakpoint Ctrl+F9(x - 1) + FibonacHit Count.,Filter.,.在彈出對話框上,你可以設(shè)置命中該斷點時,所觸發(fā)的事件。在上面例子中,我們設(shè)定一旦命中斷點時就打印追蹤信息。注意,我們已經(jīng)把局部變量“對值,作為追蹤信息的一部分輸出。局部變量可以通過變量名語法輸出。你還可以利用系統(tǒng)內(nèi)置的命令($CALLER, $CALLSTACK, $FUNCTION 等等),在追蹤信息中輸出 常用的調(diào)試值。在上例中,我們同時選中了底端的 acontinue
17、execution 選項,這說明我們不希望程 序中斷調(diào)試狀態(tài),而是繼續(xù)運行。唯一的不同是:每次斷點條件滿足時,我們的自定義追蹤信息都將被輸出。Visual Studio 的輸出窗現(xiàn)在當(dāng)我們運行程序時, 會發(fā)現(xiàn)自定義追蹤信息自動顯示在 口里。這讓我們很容易看到程序的遞歸調(diào)用過程:你也可以選擇往應(yīng)用程序中添加一個自定義追蹤信息的監(jiān)聽器。這時追蹤點的輸出信息將通過它輸出,而不是 Visual Studio 的 輸出 窗口。跟蹤點一運行自定義的宏上周,我在倫敦演講時,有聽眾問道:當(dāng)命中跟蹤點時,能否自動輸出所有的局部變量?Visual Studio中并沒有這樣的內(nèi)置功能,但我們可以寫一個自定義宏來實現(xiàn)
18、,然后在命中跟蹤點時調(diào)用該宏。這個的實現(xiàn)需要先打開Visual Studio的宏編輯器(工具- 宏-宏IDE菜單命令),然后在項目資源管理器的MyMacros 節(jié)點下選擇一個模塊或創(chuàng)建新模塊(如:加個名為“UsefulThings ”的模塊),再把下面的VB宏代碼貼到模塊中并保存。Sub DumpLocals() Dim outputWindow As EnvDTE.OutputWindow outputWindow = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput).ObjectDim currentStackFrame As En
19、vDTE.StackFramecurrentStackFrame = DTE.Debugger.CurrentStackFrameoutputWindow.ActivePane.OutputString( *Dumping Local Variables* + vbCrLf)For Each exp As EnvDTE.Expression In currentStackFrame.Locals outputWindow.ActivePane.Ou tputString(exp.Name + = + exp.Value.ToString() +vbCrLf) NextEnd Sub上述宏代碼將
20、循環(huán)當(dāng)前的堆棧,把所有的局部變量輸出到 輸出窗口。使用自定義的“DumpLocalsT宏?/hen Hit.Edit labels.Alt ”9將顯示如下對話框。和之前不一樣,我們不選Print a message 選項,也不手工設(shè)定需要輸出的變量;而是選擇Run a marco”復(fù)選框,并指定到我們上面創(chuàng)建的static void Main。上述代碼中,我們用 F9在“Add方法的返回值處加了個斷點,然后右擊斷點,在彈出菜單上選擇 When hiteLine(Result: Key();然后,我們可以在如下的一個簡單程序中使用剛定制的DumpLocals 宏了:cldss Programst
21、atic int Add(int numlj int num2)ConsoleHriteLineResult: + Add(5,6);Console.ReadKey();Fitter.Delete BreakpointDisable Breakpoint Ctrl+F9Condition,.Hit Count.return num! + num2;十 num2jUsefulThings.DumpLocals 宏上:為了使程序能在命中跟蹤點后仍繼續(xù)運行,我們將繼續(xù)選中acontinue execution ”復(fù)選框。運行程序現(xiàn)在按F5運行程序,當(dāng)“Add方法被調(diào)用時,我們會在 Visual Studio 的 輸出”窗口 中看到如下結(jié)果。注意命中跟蹤點時,宏會自動列出每個局部變量的名稱和值:OutputShoutpijl trcm: Debug/*Dump
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職市政工程技術(shù)(橋梁養(yǎng)護(hù)技術(shù))試題及答案
- 2025年高職新能源裝備技術(shù)(風(fēng)電設(shè)備維護(hù))試題及答案
- 2025年大學(xué)大一(計算機應(yīng)用技術(shù))數(shù)據(jù)庫開發(fā)實務(wù)階段測試題
- 財保職業(yè)發(fā)展路徑
- 神池介紹教學(xué)課件
- 2026新疆昌吉州檢察機關(guān)招聘聘用制書記員8人備考題庫及完整答案詳解一套
- 河北省滄州市吳橋中學(xué)2026屆高三一模語文試題(含答案)
- (九年級道德與法治)2025年秋綿陽市鹽亭縣九年級(上)期末教學(xué)質(zhì)量監(jiān)測試卷
- 2026國家知識產(chǎn)權(quán)局專利局專利審查協(xié)作北京中心福建分中心專利審查員招聘100人備考題庫帶答案詳解
- 2026云南迪慶州德欽縣公安局招聘警務(wù)輔助人員2人備考題庫含答案詳解
- GB/T 17213.4-2015工業(yè)過程控制閥第4部分:檢驗和例行試驗
- FZ/T 73009-2021山羊絨針織品
- JJF 1069-2012 法定計量檢定機構(gòu)考核規(guī)范(培訓(xùn)講稿)
- GB∕T 5900.2-2022 機床 主軸端部與卡盤連接尺寸 第2部分:凸輪鎖緊型
- 2011-2015廣汽豐田凱美瑞維修手冊wdl
- DFMEA編制作業(yè)指導(dǎo)書新版
- KTronics籃輸送式洗碗碟機操作手冊
- DB35∕T 1844-2019 高速公路邊坡工程監(jiān)測技術(shù)規(guī)程
- 城市管理綜合執(zhí)法局城管執(zhí)法與執(zhí)法程序PPT模板
- 閥門基礎(chǔ)知識上
- 第二章注射成型工藝與模具結(jié)構(gòu)
評論
0/150
提交評論