vs2010断点调试详细教程
设置断点:在如下图中的红⾊圆点处设置断点,红⾊圆点表⽰已经在这⾏设置断点。快捷键F9。
启动调试:按F5或者点击左边红框中的按钮。右边框是开始执⾏(不调试)Ctrl+F5。
调试⼯具栏:下⾯是⼯具栏中对应的名称和快捷键。
在调试过程中F5是执⾏到下⼀个断点。F11是逐语句,在执⾏到下图中的断点时,按F11会执⾏到Fibonacci⽅法⾥⾯逐步记录执⾏过程。F10是逐过程,与逐语句不同的是,在执⾏到下图中断点时,再执⾏会执⾏断点下⾯的语句,⽽不是去执⾏语句中的⽅法。
局部变量:在调试过程中可以查看局部变量窗⼝,如下图⾥⾯会有变量的当前状态。如果不到的话在
数组的状态表⽰如下图:
InteliTrace记录每⼀步的调试状态。
条件中断
开发⼈员设置断点,运⾏程序,利⽤不同的输⼊触发断点,然后在断点处⼿⼯检查是否满⾜某些特定的条件,从⽽决定是否继续调查。如果当前场景不是他们想要的,按F5继续运⾏程序,尝试别的输⼊,⼿动重复刚才的过程。
针对上述情况,Visual Studio提供了⼀个⽅便得多的功能——“条件中断”。只有当程序满⾜了开发⼈员预设的条件后,条件断点才会被触发,调试器中断。这将避免频繁地⼿⼯检查/恢复程序运⾏,⼤量减少调试过程中的⼿⼯和烦琐⼯作。
如何设置条件断点:
设置条件断点⾮常容易。在特定的⾏上,按F9设置断点。
然后右击断点–编辑窗⼝左侧的红点,在上下⽂菜单上选择“条件”。
writeline教程
这时弹出⼀个对话框供你设置激活该断点所需的条件。⽐如:我们希望只有当x==5时,调试才中断。我们可以写出如下的表达式:
现在我再运⾏这个程序按F5达到条件断点,只有当x等于5时,程序运⾏才会被中断。对于其它条件下的x值,断点将被跳过。
记录到达断点次数
有时你希望,只有当第N次满⾜条件的运⾏到达断点时,才中断程序运⾏。例如:当第⼀次命中断点。可以通过右击断点,然后在弹出菜单上选择“命中次数”菜单命令实现。
这时系统弹出⼀个对话框,它允许你指定:(1)当满⾜条件,⽽且进⼊断点的累计次数等于N时,断点命中⼀次。(2)当满⾜条件,⽽且进⼊断点的累计次数是N的倍数时,断点命中⼀次。(3)当满⾜条件,⽽且进⼊断点的累计次数⼤于N时,每次命中断点。
注意:如果多个条件同时⽤的话,结果取交集。
断点筛选器
例如,在调试⼀个服务程序时在其内部打上了断点,由于这是⼀个公⽤的服务不希望其他访问这个服务的程序被所设断点调试
⼲扰,怎么办?断点筛选器就是限制只在某些进程和线程中设置断点。筛选器⽂本框中输⼊以下⼀个或多个⼦句,可以使⽤& (AND)、||(OR)、!(NOT)和圆括号组合这些⼦句描述应在何处设置断点的表达式,或者清除该表达式以便在所有进程和线程中设置断点。⽐如,希望断点只在被机器名为xye-PC的机器访问时才触发,我们可以右击断点进⾏断点筛选器设置。当其他机器访问程序的时候断点不会触发,其他机器访问时感觉不到断点的存在。
跟踪点—进⼊断点时的⾃定义操作
许多⼈不知道“跟踪点(TrackPoints)”这个调试功能。“跟踪点“是种特殊的断点,当它被命中时,它会触发⼀系列⾃定义操作。如果你想观察程序的⾏为,⽽⼜不想中断调试的时候,这个功能尤其有⽤。
我将⽤⼀个简单的控制台程序来演⽰如何使⽤“跟踪点”。如下是斐波那契数列的⼀个递归实现:
以上程序中,我们使⽤Console.WriteLine() 输出针对特定输⼊值⽣成的最终斐波那契数列。如果希望在调试器⾥观察操作中每⼀次递归运算后的数列⽽⼜不实际中断程序运⾏,该怎么办呢?“跟踪点”可以轻松实现。
设置跟踪点:
你可以在特定的⾏上,按F9加跟踪点。然后右击断点,在上下⽂菜单中选择“命中条件”:
在弹出对话框上,你可以设置命中该断点时,所触发的事件。
在上⾯例⼦中,我们设定⼀旦命中断点时就打印追踪信息。注意,我们已经把局部变量“x”的值,作为追踪信息的⼀部分输出。局部变量可以通过{变量名}语法输出。你还可以利⽤系统内置的命令($CALLER, $CALLSTACK, $FUNCTION等等),在追踪信息中输出常⽤的调试值。
在上例中,我们同时选中了底端的“continue execution“选项,这说明我们不希望程序中断调试状态,⽽是继续运⾏。唯⼀的不同是:每次断点条件满⾜时,我们的⾃定义追踪信息都将被输出。
现在当我们运⾏程序时,会发现⾃定义追踪信息⾃动显⽰在Visual Studio的“输出“窗⼝⾥。这让我们很容易看到程序的递归调⽤过程:
你也可以选择往应⽤程序中添加⼀个⾃定义追踪信息的。这时追踪点的输出信息将通过它输出,⽽不是Visual Studio 的“输出“窗⼝。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论