嵌入式开发值GDB调试程序实现

GDB是GNU发布的一款更能强大的程序调试工具。

GDB主要完成下面三个功能:

1、启动被调试程序,

2、让被调试的程序在指定的位置停住,

3、当程序停住时可以检测变量的值.

#include<stdio.h>

Void main()

{

Int i;

For(i=1;i<100;i++)

{

Return +=i;

}

Printf(“result i%ds = ”,i);

}

GDB快速进阶值调试步骤:

1、编译生成可执行文件

Gcc -g test.c -o test

2、启动GDB

Gdb test

3、在main函数处设置断点

Break main

4、运行程序

run

5、下一步  next

6、结束     c

GDB命令演示

List(l) 查看程序

gdb) list

1#include<stdio.h>

2void main()

3{

4 int i;

5long result=0;

6for(i=1;i<=100;i++)

7{

8result +=i;

9}

10

(gdb)

 

Break(b)函数名 在某函数入口添加断点

 

Break(b)行号 在指定行添加断点

Break(b)文件 在指定文件的指定行添加断点

Break(b)行号加if条件当条件为真时,指定行号处断点生效

例如:b 5 if i=10,

Info break 查看断点分布

Delete 断点编号 删除断点

Run 开始运行程序

Next 单步执行程序(不进入子函数)

Step 单步运行程序(进入子函数)

Continue 继续运行程序

Print 变量名 查看指定变量值

Finish 运行程序到结束

Watch 变量名 对指定变量监控

Quit 退出调试状态

 

 

[[email protected] Scripts]$ gcc -o gdb gdb.c

[[email protected] Scripts]$ ll

total 32

-rwxrwxr-x 1 oldboy oldboy 4707 Mar 13 06:53 gdb

-rw-rw-r-- 1 oldboy oldboy  129 Mar 13 06:52 gdb.c

-rwxrwxr-x 1 oldboy oldboy 4665 Mar 13 06:20 hello

-rw-rw-r-- 1 oldboy oldboy   63 Mar 13 06:18 hello.c

-rw-rw-r-- 1 oldboy oldboy  860 Mar 13 06:43 hello.o

-rw-rw-r-- 1 oldboy oldboy  352 Mar 13 06:42 hello.s

[[email protected] Scripts]$ ./gdb

result=5050

[[email protected] Scripts]$ gcc -g gdb.c  -o

gcc: argument to ‘-o‘ is missing

[[email protected] Scripts]$ gcc -g gdb.c  -o gdbts

[[email protected] Scripts]$ ll

total 40

-rwxrwxr-x 1 oldboy oldboy 4707 Mar 13 06:53 gdb

-rw-rw-r-- 1 oldboy oldboy  129 Mar 13 06:52 gdb.c

-rwxrwxr-x 1 oldboy oldboy 5863 Mar 13 07:00 gdbts

-rwxrwxr-x 1 oldboy oldboy 4665 Mar 13 06:20 hello

-rw-rw-r-- 1 oldboy oldboy   63 Mar 13 06:18 hello.c

-rw-rw-r-- 1 oldboy oldboy  860 Mar 13 06:43 hello.o

-rw-rw-r-- 1 oldboy oldboy  352 Mar 13 06:42 hello.s

[[email protected] Scripts]$ gdb gdbts

GNU gdb (GDB) Red Hat Enterprise Linux (7.2-90.el6)

Copyright (C) 2010 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.  Type "show copying"

and "show warranty" for details.

This GDB was configured as "i686-redhat-linux-gnu".

For bug reporting instructions, please see:

<http://www.gnu.org/software/gdb/bugs/>...

Reading symbols from /home/oldboy/Scripts/gdbts...done.

(gdb) b main

Breakpoint 1 at 0x80483cd: file gdb.c, line 5.

(gdb) run

Starting program: /home/oldboy/Scripts/gdbts

Breakpoint 1, main () at gdb.c:5

5long result=0;

Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.107.el6.i686 glibc-2.12-1.192.el6.i686

(gdb) next

6for(i=1;i<=100;i++)

(gdb) next

8result +=i;

(gdb) next

6for(i=1;i<=100;i++)

(gdb) next

8result +=i;

(gdb) next

6for(i=1;i<=100;i++)

(gdb) c

Continuing.

result=5050

Program exited with code 014.

(gdb)

Breakpoint 6, main () at gdb.c:8

8result +=i;

(gdb) print i

$5 = 24

(gdb) next

6for(i=1;i<=100;i++)

(gdb) print i

$6 = 24

(gdb) next

Breakpoint 6, main () at gdb.c:8

8result +=i;

(gdb) print i

$7 = 25

(gdb) quit

A debugging session is active.

Inferior 1 [process 3082] will be killed.

Quit anyway? (y or n) y

时间: 2024-10-12 10:43:38

嵌入式开发值GDB调试程序实现的相关文章

嵌入式开发值zynq---zynq中tlv320aic23b spi的驱动移植

http://blog.csdn.net/djason43/article/details/52876742 http://blog.csdn.net/lxmky/article/details/6858322 http://blog.163.com/[email protected]/blog/static/33915087201207102129276/ http://blog.csdn.net/stephen_yu/article/details/7205671

嵌入式开发值zynq驱动—— zynq SPI Flash 驱动过程

http://blog.csdn.net/pengwangguo/article/details/52292664 http://blog.csdn.net/pengwangguo/article/details/51991750 http://www.cnblogs.com/surpassal/category/412020.html http://blog.csdn.net/a746742897/article/details/52803865 http://blog.csdn.net/em

【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)

作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705  参考博客 : [嵌入式开发]嵌入式 开发环境 (远程登录 | 文件共享 | NFS TFTP 服务器 | 串口连接 | Win8.1 + RedHat Enterprise 6.3 + Vmware11) 开发环境 : -- 操作系统 : Vmware11 + RedHat6.3 企业版 + Win8.1; -- 硬件 : OK-6410-A 开发

用GDB调试程序

(转自)http://wiki.ubuntu.org.cn/%E7%94%A8GDB%E8%B0%83%E8%AF%95%E7%A8%8B%E5%BA%8F 使用GDB 一般来说GDB主要调试的是C/C++的程序.要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中.使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点.如: $gcc -g -Wall hello.c -o hello $g++ -g -Wall hello.cpp -o hello 如果没有-g

计算机三级嵌入式开发技术

一单项选择题 1. 世界上第一台计算机研制成功的年代是( C ) Α.1944年 B.1945年 C.1946年 D.1947年 2. 十进制数235,用二进制表达为( A ) Α.11101011 B.11101010 C.11101001 D.11101110 3. ARM采用定长指令格式,所有指令都是32位,Bit[31:28]为( B ) Α.目标寄存器编码 B.条件执行 C.指令操作符编码 D.永远是0 4. 8080处理器是( C ) Α.32位处理器 B.16位处理器 C.8位处理

用gdb调试程序笔记: 以段错误(Segmental fault)为例

用gdb调试程序笔记: 以段错误(Segmental fault)为例[转] 1.背景介绍2.程序中常见的bug分类3.程序调试器(如gdb)有什么用4.段错误(Segmental fault)介绍5.gdb调试入门 一.背景介绍这个笔记主要介绍开源的程序调试器(gdb)的入门知识,目的是使unix/linux环境的编程新手能够快速学会使用gdb调试程序的方法,同时也是对我使用gdb的一个经验总结.本文假设你能使用简单的unix/linux命令并能用gcc(GNU C Compiler, GNU

GDB调试程序常用命令

使用GDB调试程序的一般步骤: 第一步:编译程序(-g参数告诉编译器生成调试信息) >gcc test.c -g 第二步:运行gdb >gdb a.exe 第三步:查看源码,l列出居首的10行代码,字母l是list的缩写,注意:这里"(gdb)"是gdb的提示符,不是我们手工键入的. (gdb) l 第四步:加断点(字母b是break的缩写) ,这里以在第四行加断点为例. (gdb) b 4 第五步:执行(字母r是run的缩写),因为前面的b命令把断点设在了第4行,所以执行

嵌入式开发技术三级

1.酒店客房的门锁系统是由总台服务器和若干客房指纹锁组成,其基本功能具体描述如下: a.客房的指纹锁与总台服务器之间通过通信网络连接. b.旅客在总台登记住宿时,录入其指纹信息,并提取其特征值存储在总台服务器中.同时录入一个密码(若干位数字组成),以备指纹无法开锁时,用密码开锁. c.旅客在开客房指纹锁时,把相应手指放在门锁的指纹采集部件上,采集相应的指纹图像信息,并传输给总台服务器. d.总台服务器接收到某个客房指纹锁传输来的指纹图像信息后,进行特征值求取并进行匹配,若匹配正确,则回送开锁指令

&nbsp; &nbsp; JAVA SCRIPT SLIDESHOW 嵌入式开发的 VOID 运行链接开发

运行程序正在开始 简单地说,从不同的创建中来通过运行代码的原始去进行识别,应用代码编写如下: 嵌入式输入一段代码: 这段代码是从线路视频中去探访:<div id="anvsoftJavaScriptSlideshow" style="width: 650px; height: 370px; position: relative;"> <script src="anvsoftJavaScriptSlideshow-1.0.0.min.js?