嵌入式调试器 gdb的使用
2016-07-09 10:41
274 查看
1.gdb简介
2.gdb常用命令及举例
3.调试的方法补充
一、gdb简介
在任何的程序开发过程中每一个程序开发员都避免不了程序的出错,为此程序的调试对于每个程序员是必不可少的。
gcc调试C程序时只能根据gcc编译时发出的错误警告进行修改,而gdb可以有更强的调试功能。gdb调试器是由GNU开发的一款调试器,它可以和Visual C++、Visual Basic等开发工具的调试器媲美。
gdb主要有下列这些功能:
1.可以在指定的断点处让被调试程序停止
2.启动被调试程序,可以按自己的意愿运行程序
3.可以动态地改变程序的执行环境
二、gdb的常用命令及举例
1.生成调试信息
在使用gdb调试器时,编译时我们必须将gdb的调试信息加到可执行文件中,我们通过-g实现。
gcc -g filename
2.启动gdb
3.gdb下的常用命令及命令举例
运行程序:run
源代码罗列:list(或l)
断点设置:break
删除断点:delete
三、调试的方法补充
程序员在开发一项软件时通常有两个版本,一个是测试版本,一个是发行版本。通常测试版本里含有测试信息,而发行版本则不显示这些信息。通常他们采用的是在程序中添加下面这样的一个头文件。
通常其中定义有_DEBUG_这一宏定义,此处没有定义,这一头文件用于发行版程序。#define debug_msg(fmt, args...) printf(fmt, ##args)这一语句表示当定义了_DEBUG_这一宏时将源代码中的debug_msg(fmt,
args...)替换成printf(fmt, ##args),这样程序员在调试时就可以很容易发现错误的位置并进行修改。
若要在头文件中添加宏定义_DEBUG_,可在编译hello.c文件时输入gcc
hello.c -D_DEBUG_,-D的功能是在编译hello.c文件时在其头文件中添加-D后的宏定义。
2.gdb常用命令及举例
3.调试的方法补充
一、gdb简介
在任何的程序开发过程中每一个程序开发员都避免不了程序的出错,为此程序的调试对于每个程序员是必不可少的。
gcc调试C程序时只能根据gcc编译时发出的错误警告进行修改,而gdb可以有更强的调试功能。gdb调试器是由GNU开发的一款调试器,它可以和Visual C++、Visual Basic等开发工具的调试器媲美。
gdb主要有下列这些功能:
1.可以在指定的断点处让被调试程序停止
2.启动被调试程序,可以按自己的意愿运行程序
3.可以动态地改变程序的执行环境
二、gdb的常用命令及举例
1.生成调试信息
在使用gdb调试器时,编译时我们必须将gdb的调试信息加到可执行文件中,我们通过-g实现。
gcc -g filename
2.启动gdb
3.gdb下的常用命令及命令举例
命令 | 命令描述 |
run | 运行程序 |
List(或l) | 列出源代码,接着上次的位置往下列,每次列10行 |
break | 设置断点 |
next(或n) | 一步步执行下一行语句,不会进入子函数 |
info | 列出信息 |
print(或p) | 打印表达式的值 |
step | 单步执行下一语句,遇到函数时会进入函数去一步步执行 |
break 函数名 | 在调用到某一函数时停止 |
delete 断点号 | 删除某一断点 |
Continue | 运行到下一断点结束,无断点则一直执行 |
finish | 执行完当前函数返回到调用它的函数 |
源代码罗列:list(或l)
断点设置:break
删除断点:delete
三、调试的方法补充
程序员在开发一项软件时通常有两个版本,一个是测试版本,一个是发行版本。通常测试版本里含有测试信息,而发行版本则不显示这些信息。通常他们采用的是在程序中添加下面这样的一个头文件。
通常其中定义有_DEBUG_这一宏定义,此处没有定义,这一头文件用于发行版程序。#define debug_msg(fmt, args...) printf(fmt, ##args)这一语句表示当定义了_DEBUG_这一宏时将源代码中的debug_msg(fmt,
args...)替换成printf(fmt, ##args),这样程序员在调试时就可以很容易发现错误的位置并进行修改。
若要在头文件中添加宏定义_DEBUG_,可在编译hello.c文件时输入gcc
hello.c -D_DEBUG_,-D的功能是在编译hello.c文件时在其头文件中添加-D后的宏定义。
相关文章推荐
- jQuery简单入门示例之用户校验demo示例
- Android学习第3天,test、sqlite、listview、dialog
- setting-up-webpack-dev-middleware-in-your-express-application
- LeetCode题解:2. Add Two Numbers
- android本地音乐播放器
- Linux内核---55.动态创建设备结点
- 计算一个字符串在另外一个字符串中出现的次数
- Linux系统重启python程序
- HTTP协议介绍(POST、GET、Content-Type)
- 川模型 一款新的测试模型的提出与研究
- 川模型 一款新的测试模型的提出与研究
- Linux内核---54.一个非常简单的字符设备
- 集成代码生成器 SpringMVC
- eclipse提高工作效率的几种做法
- Python time模块学习
- 升级Xcode8后的相机crash问题-IOS10权限问题
- 图解DHCP的4步租约过程
- access的逻辑类型
- 28. Implement strStr()
- ios 仿京东商品详情(背景缩小,下部弹出功能)