您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

VS2008中的调试技巧

2024/2/23 16:43:57发布23次查看
关于bug调试的技巧,现将罗列如下,以后还会继续补充: 1,跳到当前光标处(ctrlf10) 先将光标定位到要测的代码上,同时按下ctrlf10,程序将会直接跳到该行代码处停下。 2, 条件中断 当程序满足开发人员设定的条件后,条件断点才会被触发,调试器中断。 首
关于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宏代码贴到模块中进行保存。
[vb] view plaincopyprint?
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的“输出”窗口中显示。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product