欢迎来到天天文库
浏览记录
ID:1497526
大小:99.50 KB
页数:4页
时间:2017-11-12
《vc调试技巧之断点》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VC调试技巧之断点1.位置断点(LOCATIONBREAKPOINT)在代码中按F9设置一个位置断点,然后按F5运行,是最常用的断点方式,但是遇到如下代码时,就十分头疼了。inttest(void){inti=0,res=99999999999;for(i=0;i<999;i++){inttmp=getValue();//A行res/=tmp;//B行}returnres;}运行代码,发现程序崩溃于B行,原因是tmp的值为0了,此时就需要在A行设置一个断点,然后进入getValue函数内部中查看运行状态。由于断点在循环体内,可能需狂按F5几百次。使用位置断点
2、的断点跳跃就可以大大减少体力劳动。断点跳跃----执行断点但不在断点处停止,直到执行完了一个特定的次数为止。在BREAKPOINT框中,选中A行断点,点击CONDITION,弹出图1窗口,在“….SKIPBEFORESTOPPING“中输入1000,按F5运行,当程序崩溃时,按CTRL+B打开BREAKPOINT框,发现此断点后有:...100timesremaining,说明还剩下100次循环没有执行,即程序在执行在900次循环时就挂掉了。按上述步骤,将断点跳跃的值改为900,重新启动程序,当循环到900次时,断点就在A行启动,可按F11进入getValu
3、e函数体中寻找返回0的原因。4/4图1当知道程序在循环900次时挂掉,可以使用断点条件表达式,即表达式为真时才触发断点。在”Entertheexpressiontobeevaluated”中输入”i==900”,并重新运行程序,效果跟上述一样,断点在i等于900时启动。使用断点条件表达式要注意不能包含任何函数和宏。图2此外,断点条件表达式与断点跳跃可组合使用;BREAKPOINT框第二个编辑框中为要查看的项目数量。1.数据断点(DATABREAKPOINT)在调试软件的过程中,经常要对全局变量的变化过程进行追踪,但是又不知道在哪里设断点。此时可以使用数据断点
4、。按CTRL+B打开BREAKPOINT窗口,选中DATA选项页(如图3),在第一个输入框中输入“MMI_fixed_matrix_menu.highlighted_row”,4/4图3当MMI_fixed_matrix_menu.highlighted_row的值发生改变时,就会弹出警告框(如图4)并把程序停到改变该变量值的地方(如图5)图4图5若想知道变量是在何处被改为某个特定值,此时可将断点条件改为“MMI_fixed_matrix_menu.highlighted_row==0”,当条件满足时,断点启动。此外,还可以利用数据断点跟踪数组的越界导致覆盖
5、其他变量等十分棘手的问题。1.消息断点(MESSAGEBREAKPOINT)该断点用得很少,且一般可以用上述两种断点替代。2.高级断点4/4高级断点的语法由两部分组成:1.上下文(CONTEXT)-----即函数,源文件,可执行文件2.变量,表达式或绝对位置例如:在Main.c的第100行设一个位置断点,而test1.dll和test2.dll都使用了该行,但只想在test1.dll的调用中启动断点,具体用法如图6图64/4
此文档下载收益归作者所有