现在的位置: 首页 > 综合 > 正文

VS2008中的调试技巧

2018年02月13日 ⁄ 综合 ⁄ 共 1873字 ⁄ 字号 评论关闭

 关于Bug调试的技巧,现将罗列如下,以后还会继续补充:

 

1,跳到当前光标处(Ctrl+F10)

先将光标定位到要测的代码上,同时按下Ctrl+F10,程序将会直接跳到该行代码处停下。

 

2,条件中断

当程序满足开发人员设定的条件后,条件断点才会被触发,调试器中断。

首先在特定代码行上,设定断点,在断点处右键,在弹出的快捷菜单上选择“Condition…”,弹出BreakPoint Condition对话框,

在编辑框中输入条件,当条件为真时,条件断点才会被触发,调试器中断;否则,该断点将被跳过。

 

3,记录到达断点次数

只有当第n次满足条件,运行到断点时,才中断程序运行,

首先在特定代码行上,设定断点,在断点处右键,在弹出的快捷菜单上选择“Hit Count...”,弹出BreakPoint Hit Count对话框,

1)break when the hit count is equal to

当满足条件,并且第5次进入断点时,断点命中一次。

2)break when the hit count is a multiple of

当满足条件,并且进入断点的次数是5的倍数时,断点被命中。

3)break when the hit count is greater than or equal to

当满足条件,并且进入断点的次数大于5时,断点被命中。

 

4,机器/线程/进程过滤

首先在特定代码行上,设定断点,在断点处右键,在弹出的快捷菜单上选择“Filter...”,弹出BreakPoint Filter对话框,

 

5,跟踪点—进入断点时的自定义操作

跟踪点是种特殊的断点,当命中跟踪点时,会触发一系列自定义操作。如果你想观察程序的行为,又不想中断调试的时候,这个功能尤其有用。

首先在特定代码行上,设定断点,在断点处右键,在弹出的快捷菜单上选择“When Hit...”,弹出When BreakPoint Is Hit对话框,

一旦命中断点就打印跟踪信息,我们已经把局部变量x的值作为跟踪信息的一部分进行输出。局部变量可以通过{变量名}语法进行输出。

还可以利用系统内置的命令($CALLER, $CALLSTACK, $FUNCTION等等),在跟踪信息中输出常用的值。

在上面的例子中,同时选中了Continue execution选项,因为我们不想中断调试,而是想程序继续运行。每次断点满足条件时,我们自定义的信息都会被输出。

跟踪信息显示在VS2008的“输出”窗口中。

6,跟踪点—运行自定义的宏

上面的跟踪点调试,只是输出了某个局部变量的信息,当命中跟踪点时,如果我们想输出所有局部变量的信息。可以这样做:

VS没有这样的内置功能,需要我们通过自定义宏来实现,然后在命中跟踪点时,调用该宏。

首先打开VS的宏编辑器,工具-宏-宏IDE,然后在项目资源管理器MyMacros节点下,New一个Module,随便命名(例如“UsefulThings”),

再把下面的VB宏代码贴到模块中进行保存。

Public Module UsefulThings
    Sub DumpLocals()
        Dim outputWindow As EnvDTE.OutputWindow
        outputWindow = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput).Object
        Dim currentStackFrame As EnvDTE.StackFrame
        currentStackFrame = DTE.Debugger.CurrentStackFrame
        outputWindow.ActivePane.OutputString("*Dumping Local Variables*" + vbCrLf)
        For Each exp As EnvDTE.Expression In currentStackFrame.Locals
            outputWindow.ActivePane.OutputString(exp.Name + " = " + exp.Value.ToString() + vbCrLf)
        Next
    End Sub

End Module

上述宏代码将循环当前的堆栈,把所有的局部变量输出到“输出”窗口。

下面使用上面自定义的宏:

首先在特定代码行上,设定断点,在断点处右键,在弹出的快捷菜单上选择“When Hit...”,弹出When BreakPoint Is Hit对话框,

调试运行程序,当命中跟踪点时,宏会自动列出每个局部变量的名称和值,并在VS的“输出”窗口中显示。

 

参考文章:

http://www.mscto.com/aspnet/20110912100334.html

抱歉!评论已关闭.