回 帖 发 新 帖 刷新版面

主题:简单介绍如何调试程序

经常看到论坛有人提问想帮调下程序的,要不就是贴好长一程序上来,说不知道哪错了,想帮忙调试一下。我觉得调试程序这件事还是自己做的好,不然编码能力怎么提高呢?

  怎么调呢?

  我简单的介绍两种方法:

1、利用编程工具本身

  我最常用也最好用的就是‘跟踪’,像VC里按F10、F11进行程序跟踪,跟踪的时候,可以观察变量的变化情况,非常好用。

  还有就是设置‘断点’,在需要停下来的地方设一个断点,运行到那个地方,停下来,观察一下变量的情况,在VC里用F9,设置后那一行程序前会有一个小圆圈。

2、利用编程语言

  使用断言ASSERT()。这个是个标准C函数,在不同的环境下有不同的定义。但用处差不多,都是断言一个表达式为是否为真。

  如果表达式为假,那在那个地方停下来,方便调试。

  这是一个专门在调试状态下用的函数,如果软件正式发布,ASSERT()会被删掉。

最后,就是设计方法啦,如果有好的设计方法,调试起来也会容易很多,整个程序分成若干模块,各模块分别测试,最后再整体集中测试,也就是要求模块化的设计程序。

只是一些个人的经验,仅供参考!

回复列表 (共21个回复)

11 楼

楼上什么意思?

12 楼


老大我用vc的时候按你说的按F11 但是后面跳出这个是什么意思啊 

find source 
please ener the path for PRINTF.C 是个对话框 

不明白怎么弄 帮我解决下 3Q![em1]

13 楼


老大我用vc的时候按你说的按F11 但是后面跳出这个是什么意思啊 

find source 
please ener the path for PRINTF.C 是个对话框 

不明白怎么弄 帮我解决下 3Q!

14 楼


老大我用vc的时候按你说的按F11 但是后面跳出这个是什么意思啊 

find source 
please ener the path for PRINTF.C 是个对话框 

不明白怎么弄 帮我解决下 3Q!

15 楼

一般的地方用F10,有问题的地方才按F11,你的问题具体我也不清楚啊~~可能是你的对话框资源有问题

16 楼

我还不会使用希望大家给一点讲解   3Q!

17 楼

嗯,wonderful!
基本上用过,其实还是平时养成良好的风格最要紧

18 楼

我也刚刚学这个调试,貌似是有函数可以进入的地方按F11就会进去,如果不是函数,按F11就会有你说的提示出来

19 楼

此贴好象是为我准备的啊。
我基本不会调试,只会用vc++单步跟进,观察变量,添加断点,执行到什么地方的功能

如果编译器有些缺陷,不支持新标准,但又不敏感。编译连个警告都不给一个,却给编译出个在某些情况下可以正确执行,某些情况下又不能正确执行的,说不通的错误,调试时也无从下手。我就遇见了这个问题。

在此论坛的c与c++版,求了一贴,无人能解。我需要的解答不是换新标准的编译器这么简单。我需要知道的是旧编译器编译出了什么结果。

调试程序,没有很多的汇编基础是调试不出什么名堂的。而有些程序员调试也就是根据经验和添加断点来定位错误的位置的。而不一定会遇见我遇见的错误,这些程序员们所做的工作就是避免错误,而不是找出错误的根本原因。

对于我的那个问题,如果某位高手从反汇编得到的代码给我一解释,我还是能看懂的。我的汇编知识不足以用来调试程序,但是能够看懂别人的讲解。

20 楼

自淫(引)一把
[quote]这些程序员们所做的工作就是避免错误,而不是找出错误的根本原因。[/quote]
程序员不是搞研究的,是搞生产的。
只去避免错误,是无可厚非的。因为生产需要效率

我来回复

您尚未登录,请登录后再回复。点此登录或注册