码迷,mamicode.com
首页 > 移动开发 > 详细

Android系统开发(2)——GDB调试工具

时间:2014-08-22 00:24:25      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:android   linux   gdb   调试   

调试的过程

我们在eclipse中来看一下一般调试的过程:

1、debug模式编译

bubuko.com,布布扣

2、打上断点

bubuko.com,布布扣

3、运行调试

bubuko.com,布布扣

4、单步调试

bubuko.com,布布扣

step into:跳到函数体内部

step over:不跳到函数体内

step return:运行完当前函数

5、继续运行

continue

6、打印和监控值

GDB调试

先写一段C++的代码,代码内容如下:

bubuko.com,布布扣

使用debug模式编译:

bubuko.com,布布扣

进入Debug调试模式:

bubuko.com,布布扣

1、打断点,打断点的方式如下(GDB中的命令可以使用首字母来替代,比如break和b的作用相同)

break  函数名

break 行号

break 文件名:行号

break 行号 if条件

通过info break可以查看断点,通过delete可以删除断点,下面我们使用list命令查看源文件,然后打断点

bubuko.com,布布扣

查看断点

bubuko.com,布布扣

可以看到目前有一个断点,他的编号为1,在第四行;下面使用方法名打一个断点

bubuko.com,布布扣

2、开始运行(run) ,可以使用continue来继续向下运行,使用quit退出运行状态

bubuko.com,布布扣

可以看到在运行的时候停到了断点处

3、单步调试,但步调试分别对应如下三个命令

next------step over

step-----step into

finish-----step return

bubuko.com,布布扣

下面我们再来调试一段程序代码,代码内容和输出结果如下:

bubuko.com,布布扣

输出结果为:

bubuko.com,布布扣

这段代码在没有输出结果之前有些朋友可能会认为正确结果应该是50.5,下面我们就通过调试来看一下哪里出了问题

bubuko.com,布布扣

可以看到我们在第五行打了一个断点,当执行到第五行的时候其实该行并未执行,所以此时i的值是一个无效的值。

bubuko.com,布布扣

在上面我们使用了watch来观察变量i当i发生改变后就会显示i改变后的值,可以看到我们next后变量i的值变为0.01,下面我们使用条件断点来调试

bubuko.com,布布扣

可以看到在i循环到98次的时候实际的值并不是0.98而是比0.98大,我们next到第100次循环可以看到

bubuko.com,布布扣

此时条件不满足i==1,所以只能执行99次循环,结果就是49.5而不是50.5

输入wi可以方便我们调试

bubuko.com,布布扣


Android系统开发(2)——GDB调试工具,布布扣,bubuko.com

Android系统开发(2)——GDB调试工具

标签:android   linux   gdb   调试   

原文地址:http://blog.csdn.net/dawanganban/article/details/38737317

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!