关闭

vc6.0 调试小结

704人阅读 评论(0) 收藏 举报


现在都用vs2008了,VC6的速度还是很怀念,来个小结吧。

断点相关快捷键:
1.F9在当前光标所在的行下断点,如果当前行已经有断点,则取消断点.
  F5调试状态运行程序,程序执行到有断点的地方会停下来.
  F10单步执行程序.
  CTRL+F10运行到光标所在行.
  F11和F10的区别是,如果当前执行语句是函数调用,则会进入函数里面.
  SHIFT+F11跳出当前所在函数.

特别说明:
  a.有的地方不能下断点.比如空行,基本类型定义语句(不初始化),等等非执行语句.比如
    int i;  // 此行不能下断点
  b.不是所有断点都会(断).比如下断点的语句在程序里面没有被执行.
  c.此外,ALT+F9还可以下条件断点,不过这个不常用,有兴趣的可以自己研究:)

2.如何调试Release版的程序?
  有些程序在debug下运行的很好,但在release下却总是失败,默认情况下release是不能调试的. 怎么解决呢?
  其实"debug"和"release"都只是一个代号而已,各自对应一组不同的编译选项.
  在release的默认设置下,ALT+F7 ,调出工程设置对话框,切换到link选项卡,勾选"Generate debug info",然后再切换到C/C++选项   卡,在"Optimizations"里面选"Disable(Debug)",在下面的"Debug info"里面选"Program Database for Edit and Continue".然   后点OK保存设置,重新编译程序,下断点即可.
3.上面两点已经能应付很多种情况了,但是有时候即使在debug下也不能下断点,我以前也曾经遇到过这种问题,一个调了4层的dll,就是不能下断点.其实还除了上面的方法,还有一种最底层的实现技术:使用汇编.
  细心的人可能会发现,有时候在调试状态下当程序出现异常的时候,光标会指向汇编代码,而这个代码就是int 3,这其实是一个中断.
  在你的代码的任意地方加上
  __asm{
  int 3
};
  用debug编译,然后直接运行程序.当程序执行到上述代码的时候,就会出现一个框,告诉你说一大堆信息,说程序错了,下面有"调试"、"终止"、"忽略",不用理,点调试就可以进入跟 踪了。这种方法我还没有失 手过:)

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1187042次
    • 积分:12910
    • 等级:
    • 排名:第1130名
    • 原创:164篇
    • 转载:263篇
    • 译文:0篇
    • 评论:117条
    文章分类
    最新评论