版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Visual Studio 2010 的调试(断点设置、变量查看)(1)、在需要暂停的位置设置断点 (方法一:将鼠标置于将要设置断点的行,按 F9或在调试中选择设置断点;方法二:单击将要设置断点的代码行的左侧边区域),如下图所示:| 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 )、点击 开始调试”或F5 ,进行调试;(3)、当程序执行到断点处,执行暂停(处于中断模式),如下图所示:(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)、此时可检查变量的值方法一:将鼠标指针悬停在该变量上方,该变量的值将显示,如下图红色背景的单词,其实此时鼠标
4、位于字母r和t中间,在它的右下侧显示了的它值。(此 方法只要把鼠标放到变量的上面就可以)(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;方法二:将鼠标放在某变量上,单击鼠标右键,并 添加监视(Add Watch ),该变量的名字和值将会在生成的监视窗”显示Watch 1 NameVdlue小 C ardg ia:me:rt3ta Ip artnc vpan 0(5)、此时可选择 逐行调试或F11、逐过程”调试或F10,如连续按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)、直到程序尾,结束调试注:在(4)中,查看变量的值,我们也可以用 SHIFT+F9 ,打开快速监视窗, 然后在其输入变量名,查看变量的值,或打开快速监视窗后,再填加 监视窗VS2010 中的调试技巧许多Visual Studio下的程序员,甚至一些很有经验的开发人员,都不知道这些技巧。
8、希望这篇文章能帮你掌握这些技巧。它们都很简单,却能帮你节约大量的时间。跳到当前光标处(Ctrl+F10 )我经常看到人们为了到达目标代码位置,而在程序中早早设定了断点,然后反复地按F10/F11 , 一步步走到目标代码处。当程序员的确需要仔细观察每一步的状态变化时, F10/F11是合理的选择。然而多数情况下,人们只想快速到达他们真正关心的代码处,这 时候F10/F11 就不是最佳选择了。这时,你应该利用 跳到当前光标处”这个功能。先把光标定位在要测的目标代码行上, 再同时按Ctrl和F10,被测程序将直接跳到该行停下。你再也不用按许多次F10/F11 了。即使目标代码位于独立的类或方法中,你
9、仍然可以从当前正在检查的地方跳过去。条件中断另一种常见的情况是:开发人员设置断点,运行程序,利用不同的输入触发断点,然后在断点处手工检查是否满足某些特定的条件,从而决定是否继续调查。如果当前场景不是他们想要的,按F5继续运行程序,尝试别的输入,手动重复刚才的过程。针对上述情况,Visual Studio 提供了一个方便得多的功能 一一条件中断只有当程 序满足了开发人员预设的条件后,条件断点才会被触发,调试器中断。这将避免频繁地手工检查/恢复程序运行,大量减少调试过程中的手工和烦琐工作。如何设置条件断点设置条件断点非常容易。在特定的行上,按 F9设置断点。page ? 0, pavar pagi
10、natedDinners = new PaginatedList(dinners,return View(paginatedDinners)然后右击断点-编辑窗口左侧的红点,在上下文菜单上选择Condition paginatedDinners);Delete Breakpoint0r Dibble Breakpoint CtrkF9Location.- Cotdition,” Hit Count.Filter.When HitEdMmb 比Aft+F9AExport. r弹出一个对话框供你设置激活该断点所需的条件。比如:我们希望只有当局部变量paginatedDinners的尺寸小于10时,
11、调试才中断。我们可以写出如下的表达式:现在我再运行这个程序,实现搜索,只有返回值小于10时,程序运行才会被中断。对于大于10的值,该断点将被跳过。记录到达断点次数有时你希望,只有当第 N次满足条件的运行到达断点时,才中断程序运行。例如:当第五次返回少于10份晚餐的查询结果时,中断程序运行。可以通过右击断点,然后在弹出菜单上选择“Hit count菜单命令实现。paginatedDinners);。 Oeiete Breakpoint(3 Disable Breakpoint Ctri+ F9Location. 匚 onditicin Hit CountFilter When Hit”,Edit
12、labels.oAlt+F9T L/ Export,.这时系统弹出一个对话框,它允许你指定:(1)当满足条件,而且进入断点的累计次数等于N时,断点命中一次。(2)当满足条件,而且进入断点的累计次数是N的倍数时,断点命中一次。(3)当满足条件,而且进入断点的累计次数大于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机器/线程/进程过滤设置如下:右击断点;在弹出菜单上选择“Filter 菜单命令;然后指定命中断点的特定条件:在指定的机器上、或指定的进程中、或指
14、定的线程中。跟踪点一进入断点时的自定义操作许多人不知道 跟踪点(TrackPoints) ”这个调试功能。 跟踪点是种特殊的断点,当它 被命中时,它会触发一系列自定义操作。 如果你想观察程序的行为, 而又不想中断调试的时 候,这个功能尤其有用。我将用一个简单的控制台程序来演示如何使用跟踪点”。如下是斐波那契数列的一个递归实现: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);契数列。如果希望在调试器里观察操作中每一次递归运算后的数列而又不实际中断程序运行,该怎么办呢?跟踪点”可以轻松实现。设置跟踪点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.,.在弹出对话框上,你可以设置命中该断点时,所触发的事件。在上面例子中,我们设定一旦命中断点时就打印追踪信息。注意,我们已经把局部变量“对值,作为追踪信息的一部分输出。局部变量可以通过变量名语法输出。你还可以利用系统内置的命令($CALLER, $CALLSTACK, $FUNCTION 等等),在追踪信息中输出 常用的调试值。在上例中,我们同时选中了底端的 acontinue
17、execution 选项,这说明我们不希望程 序中断调试状态,而是继续运行。唯一的不同是:每次断点条件满足时,我们的自定义追踪信息都将被输出。Visual Studio 的输出窗现在当我们运行程序时, 会发现自定义追踪信息自动显示在 口里。这让我们很容易看到程序的递归调用过程:你也可以选择往应用程序中添加一个自定义追踪信息的监听器。这时追踪点的输出信息将通过它输出,而不是 Visual Studio 的 输出 窗口。跟踪点一运行自定义的宏上周,我在伦敦演讲时,有听众问道:当命中跟踪点时,能否自动输出所有的局部变量?Visual Studio中并没有这样的内置功能,但我们可以写一个自定义宏来实现
18、,然后在命中跟踪点时调用该宏。这个的实现需要先打开Visual Studio的宏编辑器(工具- 宏-宏IDE菜单命令),然后在项目资源管理器的MyMacros 节点下选择一个模块或创建新模块(如:加个名为“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、循环当前的堆栈,把所有的局部变量输出到 输出窗口。使用自定义的“DumpLocalsT宏?/hen Hit.Edit labels.Alt ”9将显示如下对话框。和之前不一样,我们不选Print a message 选项,也不手工设定需要输出的变量;而是选择Run a marco”复选框,并指定到我们上面创建的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 宏上:为了使程序能在命中跟踪点后仍继续运行,我们将继续选中acontinue execution ”复选框。运行程序现在按F5运行程序,当“Add方法被调用时,我们会在 Visual Studio 的 输出”窗口 中看到如下结果。注意命中跟踪点时,宏会自动列出每个局部变量的名称和值:OutputShoutpijl trcm: Debug/*Dump
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 杜甫生平事迹与诗歌赏析教学方案
- 数学五年级重点难点归纳与精讲
- 企业安全风险管理指南
- 石材幕墙施工方案73510
- 慢性病管理路径及护理措施
- 一年级数学上册总复习教案新人教版
- 建筑工程成本预算与报价指南
- 小学数学课后作业设计与批改指南
- 交通警示桩施工标准操作流程
- 西餐厅日常工作流程
- 安徽省市政设施养护维修工程计价定额2022 上册
- 《中小学幼儿园安全指南》解读专题培训
- 海南建设投资集团秋招面笔试题及答案
- 小球藻课件的
- 课题果酒和果醋的制作腐乳制作泡菜制作教案
- 中国民航安全宣讲课件
- 城市生活污泥及水基岩屑综合利用技改项目环境影响报告表
- DBJT 13-504-2025 城市消防远程监控系统技术标准
- 2025年城市地下管线普查实施可行性研究报告
- 帕金森综合症护理查房
- 煤矿监测监控培训课件
评论
0/150
提交评论