注册 登录  
 加关注

网易博客网站关停、迁移的公告:

将从2018年11月30日00:00起正式停止网易博客运营
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

风雨启示录

欢迎光临我的网店优优我心:http://uumyheart.taobao.com

 
 
 

日志

 
 

编程:C/C++中使用断点写调试方法  

2010-04-29 20:04:22|  分类: C语言学习笔记 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
具体操作:
F9 --- 设置/取消断点
F10 --- 单步执行
F11 --- 比f10的步幅小,F10在函数的调用时,直接跳过,在F11下,会进入函数体!
F5 --- 执行到下一个断点!
了解调试,首先要知道"断点"这个概念.断点就是程序运行中可能会中断的地方,方便开发者在程序运行的过程中查看程序当前的运行状态,比如变量的值,函数的返回值等等.究竟怎么使用断点呢?
1.F9在当前光标所在的行下断点,假如当前行已经有断点,则取消断点.
F5调试状态运行程序,程序执行到有断点的地方会停下来.
F10单步执行程序.
CTRL+F10运行到光标所在行.
F11和F10的区别是,假如当前执行语句是函数调用,则会进入函数里面.
SHIFT+F11跳出当前所在函数.
非凡说明:
a.有的地方不能下断点.比如空行,基本类型定义语句,等等非执行语句.比如
int i; // 此行不能下断点
int j=0;// 这里可以下
CStringstr;// 这里可以下
intk = Max;// 这里可以下
b.不是所有断点都会.比如下断点的语句在程序里面没有被执行.
c.此外,ALT+F9还可以下条件断点,不过这个不常用,有爱好的可以自己研究:)
2.如何调试Release版的程序?
有些程序在debug下运行的很好,但在release下却总是失败,默认情况下release是不能调试的. 怎么解决呢?
其实"debug"和"release"都只是一个代号而已,各自对应一组不同的编译选项.
在release的默认设置下,ALT+F7 ,调出工程设置对话框,切换到link选项卡,勾选"Generate debug info",然后再切换到C/C++选项卡,在"Optimizations"里面选"Disable",在下面的"Debug info"里面选"Program Database for Edit and Continue".然后点OK保存设置,重新编译程序,下断点即可.
3.上面两点已经能应付很多种情况了,但是有时候即使在debug下也不能下断点,我以前也曾经碰到过这种问题,一个调了层的dll,就是不能下断点.其实还除了上面的方法,还有一种最底层的实现技术:使用汇编.
细心的人可能会发现,有时候在调试状态下当程序出现异常的时候,光标会指向汇编代码,而这个代码就是int 3,这其实是一个中断.
在你的代码的任意地方加上
__asm
;
用debug编译,然后直接运行程序.当程序执行到上述代码的时候,就会出现一个框,告诉你说一大堆,说程序错了,下面有"调试"、"终止"、"忽略",不用理,点调试就可以进入跟踪了。
  评论这张
 
阅读(1723)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018