- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC调试技巧之断点
VC调试技巧之断点
位置断点 (LOCATION BREAKPOINT)
在代码中按F9设置一个位置断点,然后按F5运行,是最常用的断点方式,但是遇到如下代码时,就十分头疼了。
int test void int i 0, res 座机电话号码999;
for i 0; i 999; i++ int tmp getValue ; // A行 res / tmp; //B行 return res; 运行代码,发现程序崩溃于B行,原因是tmp的值为0了,此时就需要在A行设置一个断点,然后进入getValue函数内部中查看运行状态。由于断点在循环体内,可能需狂按F5几百次。使用位置断点的断点跳跃就可以大大减少体力劳动。 断点跳跃----执行断点但不在断点处停止,直到执行完了一个特定的次数为止。在BREAK POINT框中,选中A行断点,点击CONDITION,弹出图1窗口,在“….SKIP BEFORE STOPPING“中输入1000,按F5运行,当程序崩溃时,按CTRL+B打开BREAKPOINT框,发现此断点后有:...100 times remaining,说明还剩下100次循环没有执行,即程序在执行在900次循环时就挂掉了。按上述步骤,将断点跳跃的值改为900,重新启动程序,当循环到900次时,断点就在A行启动,可按F11进入getValue函数体中寻找返回0的原因。 图 1
当知道程序在循环900次时挂掉,可以使用断点条件表达式,即表达式为真时才触发断点。在”Enter the expression to be evaluated” 中输入”i 900”,并重新运行程序,效果跟上述一样,断点在i等于900时启动。使用断点条件表达式要注意不能包含任何函数和宏。 图 2
此外,断点条件表达式与断点跳跃可组合使用;BREAKPOINT框第二个编辑框中为要查看的项目数量。
数据断点 (DATA BREAKPOINT)
在调试软件的过程中,经常要对全局变量的变化过程进行追踪,但是又不知道在哪里设断点。此时可以使用数据断点。按CTRL+B打开BREAKPOINT窗口,选中DATA选项页(如图3),在第一个输入框中输入 “MMI_fixed_matrix_menu.highlighted_row”, 图3
当MMI_fixed_matrix_menu.highlighted_row的值发生改变时,就会弹出警告框(如 图4)并把程序停到改变该变量值的地方(如 图5) 图 4 图 5
若想知道变量是在何处被改为某个特定值,此时可将断点条件改为“MMI_fixed_matrix_menu.highlighted_row 0”,当条件满足时,断点启动。
此外,还可以利用数据断点跟踪数组的越界导致覆盖其他变量等十分棘手的问题。
消息断点(MESSAGE BREAKPOINT)
该断点用得很少,且一般可以用上述两种断点替代。
高级断点
高级断点的语法由两部分组成:1. 上下文(CONTEXT)-----即函数,源文件,可执行文件
2.变量,表达式或绝对位置
例如:在Main.c的第100行设一个位置断点, 而test1.dll和test2.dll都使用了该行, 但只想在test1.dll的调用中启动断点,具体用法如图6 图 6
1 / 4
文档评论(0)