VC6.0之Debug调试总结

zgjxwl 2009-09-26 01:29:46
题记:鉴于很多人不知道怎么调试。。。遂写篇关于调试的文章。。。

欢迎拍砖。希望大牛可以批评指正,并加以补充。。

有很多其他的调试手段,俺还没用过。。。希望大牛可以说出来分享下,让俺也学习学习


该文章写在了我的blog里:
VC6.0Debug调试总结:http://blog.csdn.net/zgjxwl/archive/2009/09/26/4596959.aspx

VC6.0Debug调试总结

1. 如何显示Debug工具栏窗口?

①:在任意工具栏的位置,单击鼠标右键,勾选Debug项

②:Tools---->Customize--àToolbars--àDebug--àclose

引申:工具栏和工具条的区别?

一个工具栏可以放置多个工具条。

2.关于断点调试

F9:设置或去除断点。如果当前行未设置断点,按F9可在当前行设置断点,如果当前行已设置断点,按F9则为去除断点设置。

Alt+F9:调出断点设置窗口

在这个窗口里可以设置断点,去除所有已经设置的断点或者单个断点,也可以转到已设置的断点处,通过按钮Edit Code,可以设置需要被计算的表达式,可以设置,监视(Watch)数组或结构体元素的个数,可以在窗口过程函数中设置断点,可以为任何一个想要监视(Watch)的消息(Message)设置一个断点。

3.关于开始调试

①:Build--àStart Debug--àGo

②:F5

注:F5有两层含义。对于非调试阶段,按F5用于开始调试。对于调试阶段(已经进入调试阶段),按F5用于运行程序到下一个断点处

4. 关于停止调试

一旦按F5之后进入调试阶段,IDE编辑器上就会增加一个Debug菜单选项(里面包含一些常用调试手段)

这里列出不常见的两个,有Exceptions,Threads,Modules,可以通过点击Modules进入Module List对话框,在这里可以看到一些模块(Module),如kernel32.dll,可以Google kernel32.dll的一些信息。。。这里略过,我也不是很熟悉。。。--b,欢迎大牛补充。。。都说说是怎么用的。

①:Debug--àStop Debugging

②:Shift+F5

5.关于重新开始调试(或者说重头开始调试)

这个功能既可以在调试阶段使用,也可以在非调试阶段使用,用于进入调试阶段。

在调试阶段,它的功能如下:(即不停止调试的情况下)

如果在一个程序里有多个断点,比如断点1、断点2、。。。断点5.首先,按F5调试,进

入调试阶段,程序首先执行到断点1处,如果再按F5就会执行到断点2处,依次类推,直到断点5处,如果当程序执行到断点5处,再按F5,则程序不会再中断,程序完全运行起来。

可是,在调试阶段,如何从断点2~断点5处之间的任意一个断点跳到断点1处去重新执行呢?比如,程序已经执行到断点4处,现在程序员想回到断点1处,重新再查看(监视)每个断点处的情形(也许是他记性不好,也许是他眼花了,也许是他操作太快,比如多按了几下F5键 (*^__^*)……,这种情况大家也碰到过吧,往往很多人选择了,停止调试,再重新开始进入调试,再重新来一遍,当然,这样可以,只是有点麻烦。。。)

现在,其实还有一种方法。。。我之前也没发现。。。--b。在这种情况下,就可以用重新开始调试了(注意,这个重新开始调试是指再不停止调试的情况下,重新开始调试),比如,现在在断点4处,想回到断点1处,就可以按Ctrl+Shift+F5(重新开始调试的快捷键)

①:Debug--àRestart

②: Ctrl+Shift+F5

6. 关于单步调试

前提条件---à调试阶段

①:Debug--àStep Into (F11)

逐语句。(例如,遇到函数调用时会进入被调函数)

②:Debug--àStep Over (F10)

逐过程(例如,遇到函数调用语句时,不会进入被调函数)

③:Debug--àStep Out (Shift+F11)

跳出过程调用(例如,当F11逐语句进入被调函数后,按Shift+F11会跳出被调函数)

④:Debug--àRun to Cursor (Ctrl+F10)

运行到光标所在位置。(注:貌似执行只能向前不能向后,即光标定位不能在已经执行过的代码里),经测试,如果光标在已执行的代码里,按Ctrl+F10则程序会完全执行起来,猜测。。。是不是执行完程序,再重新,从头开始执行到光标处,貌似显示的是没执行到光标处。。。--b欢迎批评补充。

7.关于变量监视

①:Debug--àQuickWatch (Shift+F9)

调出QuickWatch对话框,添加要监视查看(watch)的表达式(expression),然后

Add Watch,程序之后就会监视该表达式

②:View--àDebug Windows---àWatch (Alt+3)

监视你设置的需要被监视的变量。

③:View--àDebug Windows---àVariables (Alt+4)

监视所有变量。

注:View下的Debug Windows下的所有项均在Debug工具条中有。

注:在Debug下,可以将变量选中,直接拖到Variables的窗口中监视。。。,是不是很方便很HIGH



还有一些调试手段没写上去,比如说:调用堆栈,call stack
一般再这种情况下使用:http://zhidao.baidu.com/question/116919544.html

上面有的写的不太详细,欢迎大家补充指正。

...全文
1241 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzz807533441 2011-09-20
  • 打赏
  • 举报
回复
太谢谢啦。。。。。。。。。。。。
  • 打赏
  • 举报
回复
mark
改天再看
strwolf 2009-09-28
  • 打赏
  • 举报
回复
恩 不错
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 fallening 的回复:]
恩,推推荐荐
[/Quote]
.
24K純帥 2009-09-28
  • 打赏
  • 举报
回复
ding..LZ有心呐
david-yue 2009-09-28
  • 打赏
  • 举报
回复
难得有心人啊,总结得不错!
cphj 2009-09-28
  • 打赏
  • 举报
回复
好人啊,介绍经验还送分
kaka_21 2009-09-27
  • 打赏
  • 举报
回复
ding
zgjxwl 2009-09-27
  • 打赏
  • 举报
回复
俺当初就是有很多不明白。。。但是讲调试手段的确实不多。。。
zgjxwl 2009-09-27
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 sherrik 的回复:]
有本老书,windows程序调试  可以去看看
[/Quote]
哦?专门讲调试的。额。。。我看看
sherrik 2009-09-27
  • 打赏
  • 举报
回复
有本老书,windows程序调试 可以去看看
ztenv 版主 2009-09-27
  • 打赏
  • 举报
回复
调试之前设置 工作路径还是很重要的
chb610 2009-09-27
  • 打赏
  • 举报
回复
学习
sdbradycn 2009-09-26
  • 打赏
  • 举报
回复
很不错。。。顶了。。。
zgjxwl 2009-09-26
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 loveour 的回复:]
支持下晨雨~
[/Quote]
谢谢支持!
loveour 2009-09-26
  • 打赏
  • 举报
回复
支持下晨雨~
aopha 2009-09-26
  • 打赏
  • 举报
回复
谢谢分享
CC2008NB 2009-09-26
  • 打赏
  • 举报
回复
学习了
thy38 2009-09-26
  • 打赏
  • 举报
回复
嗯,总结得不错!
zgjxwl 2009-09-26
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 loaden 的回复:]
VS调试其实没有多少技术性。
倒是WinDbg的使用,有一定的难度。
[/Quote]
最好希望一些大牛来补充一下。。。包括一些技巧等等。其实。。。感触最深的就是调用堆栈了。

里面还有很多关于调试的东东。。。不知道是干嘛用的。欢迎补充。。。
加载更多回复(21)

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧