acm 调试

来源:互联网 发布:我太孤独 知乎 编辑:程序博客网 时间:2024/05/17 08:25
 

 

此教程是针对codeblocks的,请大家先安装 codeblock8.02  别装第十版,不稳定。下8.02版就行。

下载地址:

http://sourceforge.net/projects/codeblocks/files/Binaries/8.02/codeblocks-8.02mingw-setup.exe/download

安装步骤我就不说了。自己网上找,有一堆。

 

假如我编写了一段程序,编译也通过了,可就是没能得出最后结果。又一下看不出是哪里出错了。那么用调试就可以发现这些问题了!

例:

我想编一个程序,实现两个数的比较,如果谁大,输出谁。如果相等,输出-1。

 

打开编译器

写程序吧!

这是我写的程序,放心,肯定有错误,要不然咋演示?

编译,通过,运行,输入 2  3

出问题了。

现在我们来模拟一下程序执行过程,看看错误都出哪里了

1,                  关掉刚才的黑框,在你要下断点的地方按F5 ,断点就是你想让程序执行到哪暂停的意思。

比如,我现在在main()建立了一个断点。

然后把wathes选上。

2,                  然后按 上的

找不到?   

把debugger选上就有了。

3,

看到那个黄色的箭头了么?他的意思是程序执行到哪了,刚才我们再main下了断点,所以在那停住了。

,(Next Line)他会走一步,

当走这的时候再按一下

会看到消失了。其实不是消失,你在仔细看看这条语句,是输入。所以打开黑框,输入 2 3  回车

出来个框框

出错了吧,sigsegv  编译出错。仔细看看,发现a,b前面没有加& 找到错误了。点否,按  ,然后再改代码。

改好后重新调试

看,今次没有提示,直接指向第七行。

再按一下

看看现实出结果了,可是不是我们要的结果,说明函数cmp里面有问题,继续按

等到重新输入第二组用例后

(输出后面没加\n )

执行到这以后

看,它跳到了函数cmp里面。

在watch表里面加两个监测值 n1 ,n2

里面点右键 add watch 输入两次,分别是n1,n2

 

不对啊……咋进入return -1 了?再看看现在n1 的值变成5了!  (改变的值,它会用红色现实,这样显眼)

说明n1=n2  有问题。    很明显了吧 然后点结束 。改代码。重新测试一下。

(在windows中 ctrl+z 就是等于 EOF)

OK!