vc++6.0断点调试

一:所谓断点就是告诉调试器在何处暂时程序的运行,以便查看程序的状态以及浏览和修改变量的值等,但是在不同的运行环境中断点的类型是不一样的,在vc++6.0中用于c++调试的断点可一分为3个类型,位置断点,数据断点,条件断点。
位置断点是指示程序运行的中断的代码行号
数据断点是当某个表达式的值为真或者改变数值时中断程序的运行
条件断点是位置断点的扩展,他们的方式相同,当某个表达式的值为真或者改变数值时中断程序的运行
在程序中设置和清楚断点有两种方式,一种是简单的快捷方式,另一种是使用edit-->breakpoints(快捷键alt+f9),系统弹出breakpoint,选择不同的页面进行不同的断点设置.
二:
断点最大的作用就是调试的时候用的,
比如说你觉得自己的程序某处有问题, 就在那一行(或前后不远处)加上断点,程序运行到这里自动会停,然后你看看各项的值(什么表达式啊,函数返回值啊)有没有异常,这样更利于查错
还有就是如果你插了断点但程序调试的时候始终没停,说明程序根本没运行到你插断点的地方
断点是调试时很重要的工具
三:如何设置断点
    按F9在当前光标处增加一个断点和取消一个断点。另外,在编辑状态下,按Ctrl+B组合键,弹出断点设置对话框。然后单击【Condition…】按钮弹出设置断点条件的对话框进行设置。
  鼠标置于在要运行到的语句,再按F9设置好断点,按F5后VC执行到所设置的语句  
   F10和F11单步调试,F10直接执行函数,不进入子函数内部;F11进入子函数内部执行语句
四:
F9, 插入或删除断点。
F5,进入调试模式运行
F10: step over // 单步
F11: step in // 单步并进入函数

查看变量:在watch里面,输入你的变量名即可。你需要先把程序运行起来,到达你的断点之后,在输入你想观察的变量名。

 二: 断点
  断点是调试器设置的一个代码位置。当程序运行到断点时,程序中断执行,回到调试器。断点是 最常用的技巧。调试时,只有设置了断点并使程序回到调试器,才能对程序进行在线调试。

  设置断点:可以通过下述方法设置一个断点。首先把光标移动到需要设置断点的代码行上,然后按F9快捷键弹出Breakpoints对话框,方法是按快捷键CTRL+B或ALT+F9,或者通过菜单Edit/Breakpoints打开。打开后点击Break at编辑框的右侧的箭头,选择 合适的位置信息。一般情况下,直接选择line xxx就足够了,如果想设置不是当前位置的断点,可以选择Advanced,然后填写函数、行号和可执行文件信息。
  去掉断点:把光标移动到给定断点所在的行,再次按F9就可以取消断点。同前面所述,打开Breakpoints对话框后,也可以按照界面提示去掉断点。
  条件断点:可以为断点设置一个条件,这样的断点称为条件断点。对于新加的断点,可以单击Conditions按钮,为断点设置一个表达式。当这个表达式发生改变时,程序就 被中断。底下设置包括“观察数组或者结构的元素个数”,似乎可以设置一个指针所指向的内存区的大小,但是我设置一个比较的值但是改动 范围之外的内存区似乎也导致断点起效。最后一个设置可以让程序先执行多少次然后才到达断点。
  设置条件断点一定要先设置断点的位置,不是说条件断点就不需要再程序中设置停止行。

  在vc当中如何进行条件断点调试,比如希望停止在for循环的第25次
  if (i == 24)
  {
    i= i;//这一句废,为的是断点能加在这儿
  }
  加调试代码condition中i==24

  想要设定条件为一个字符串指针等于某个字串时,比较麻烦可以用类型转换来实现,比如设置char型指针str在等于"2002"时停止,那么我们就在条件里设置 *(DWORD*)(str) == 0x32303032 就好了。如果有其他条件在用||和&&就好了。比如要求紧接着2002的还必须是1111,那么我们在刚才的条件后面加上 && *(DWORD*)(str + 4) == 0x31313131。

  数据断点:数据断点只能在Breakpoints对话框中设置。选择“Data”页,就显示了设置数据断点的对话框。在编辑框中输入一个表达式,当这个 表达式的值发生变化时,数据断点就到达。一般情况下,这个表达式应该由运算符和全局变量构成,例如:在编辑框中输入 g_bFlag这个全局变量的名字,那么当程序中有g_bFlag= !g_bFlag时,程序就将停在这个语句处。
  消息断点:VC也支持对Windows消息进行截获。他有两种方式进行截获:窗口消息处理函数和特定消息中断。
  在Breakpoints对话框中选择Messages页,就可以设置消息断点。如果在上面那个对话框中写入消息处理函数的名字,那么 每次消息被这个函数处理,断点就到达(我觉得如果采用普通断点在这个函数中截获,效果应该一样)。如果在底下的下拉 列表框选择一个消息,则每次这种消息到达,程序就中断。

三:vc编译器的一些小窍门。

一些小窍门

  1) 有时候,你可能在编译的时候,计算机突然非法关机了(可能某人不小心碰了电源或你的内存不稳定等原因)。当你重启机器后打开刚才的项目,重新进行编译,发现VC会崩掉。你或许以为你的VC编译器坏了,其实不然(你试试编译其它项目,还是好的!),你只要将项目的.ncb、.opt、.aps、.clw文件以及Debug、Release目录下的所有文件都删掉,然后重新编译就行了。

  2) 如果你想与别人共享你的源代码项目,但是把整个项目做拷贝又太大。你完全可以删掉以下文件:.dsw、.ncb、.opt、.aps、.clw、. plg文件以及Debug、Release目录下的所有文件。

  3) 当你的Workspace中包含多个Project的时候,你可能不能直观地、一眼看出来哪个是当前项目。可以如下设置:Tools->Options->Format,然后在Category中选择Workspace window,改变其默认的字体(比如设成Fixedsys)就行了。

  4) 如何给已有的Project改名字?将该Project关掉。然后以文本格式打开.dsp文件,替换原来的Project名字即可。

  5) VC6对类成员的智能提示功能很有用,但有时候会失灵。你可以先关掉项目,将.clw和.ncb删掉,然后重新打开项目,点击菜单项View->ClassWizard,在弹出的对话框中按一下“Add All”按钮;重新Rebuild All。应该可以解决问题。

 

  • 15
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值