1、GDB程序调试
GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具。一般来说GDB主要完成下面四个部分的功能。
1)启动你的程序,可以按照你的自定义的要求运行程序。
2)可让被调试程序在你所指定的调试的断点处停住(断点可以使条件表达式)。
3)当程序被停住时。可以检查此时你的程序中所发生的事,包括查看当前状态下程序中指定变量的值。
4)动态的改变你程序的执行环境。
步骤:
1、先使用vi编辑器编辑文件test.c,用于GDB调试器调试。

2、使用命令gcc -g test.c -o test,编译test.c,生成包含标准调试信息的文件test。
3、使用命令gdb test,启动gdb进行调试,在gdb的启动界面中显示了gdb的版本、自由软件等信息,按回车确认后进入了由"gdb"为提示符的命令界面。
4、使用l(list)命令,查看源文件,可以看到每行代码中都有行号,这样方便我们设置断点。注意:使用l命令,默认从代码开头,一次显示10行的内容,再次使用l命令,显示接下来的10行,显示指定行的 内容,可以使用l(list) [起始行],[结束行]的命令。例如 l 3,9,查看3到9行的内容。
5、使用b(break)命令,查看源文件,可见只需在命令“b”后加上对应的行号,就能在该行设置上断点,在程序运行起来后,一当遇到断点就会停在断点所在行之前。
6、使用命令info b,查看断点设置情况。
7、使用命令r(run)运行代码,默认是从程序开头开始执行,当执行到断点处,程序就停止了,另外,还可以通过此命令向程序传入参数,格式为run [参数1] [参数2].....
8、使用命令p(print),格式为p [变量名],查看变量的值。
9、使用命令s(step),进行单步调试,当遇到函数时,执行s会跳入函数中,并且每输入一次s命令,程序会向下执行一步。
10、使用命令n(next),进行单步调试,遇到函数时,执行n不会进入函数中,而将函数也作为一步执行。
11、使用命令finish,挑出一个函数(将这个函数运行完)。
12、使用c(continue),恢复程序运行,我们在程序代码中设置了两个断点,当程序停在第一个断点后,我们可以使用c命令使程序继续跑起来,直到第2个断点处。
13、使用命令q(quit),退出gdb的调试。
总结:
l(list) [行号]:显示代码中[行号]处10行内容。
l(list) [文件名] [行号]/[起始行号],[结束行号],指定list的文件名
p(print):除直接跟变量名外,还可跟函数调用。print add(3,4)
whatis:查看变量类型,格式为whatis [变量名]
break(b):b [行号]:在指定行设置断点
break [函数名]:在进入指定函数时,程序将终止
break [行号]/[函数名] if [条件]:在条件成立时,才会停止。
break [例程入口]:当程序包含多个代码文件时,进入到指定的文件才会停止。
tbreak:设置临时断点,到达后被自动删除,用法同break。
delete(d):删除断点,格式为:d(delete) [断点标号],不带标号则删除所有断点。
disable/enable:除能或使能断点,格式为disable/enable [断点标号],如果不带断点标号,则对所有都做相应操作。
condition:格式:condition [断点号]<条件表达式>,用来修改对应断点的条件。
ignore:格式:ignore [断点号] <num>执行时忽略断点号num次
set:设置变量的值,格式为:set [变量名]=[值]
help(h):查看指定命令的使用方法:help(h) [命令名]。


函数学习方法:
假设学习打开文件这个函数
首先到《UNIX环境高级编程》中找到open这个函数,那么要怎么使用这个函数呢?把这个函数名带入man命令,找出其参数和返回值,就可以知道怎么使用了
1、GDB程序调试的更多相关文章
- Linux gcc和gdb程序调试用法 {转}
gcc一般调试格式: gcc -Wall -o test test.c // -wall 显示程序错误详细信息 gcc -v // 显示gcc的版本 gcc -o{1,2,3} t ...
- 1-2 编程基础 GDB程序调试
简介 GDB是GNU发布的一款功能强大的程序调试工具.GDB主要完成下面三个方面的功能: 1.启动被调试程序 2.让被调试的程序在指定的位置停住. 3.当程序被停住时,可以检查程序状态(如变量值). ...
- GDB 程序调试简单实践
用了好久的GCC/G++ 却一直都没用过GDB调试过程序,有时程序不是非常大,一般有错,直接看编译器编译结果就几乎相同知道错在哪儿了,或者使用codeblocks单步调试,甚至回到windows以下调 ...
- gdb,程序调试助手
启动GDB:(其中我的app是编译之后的可执行文件) 退出命令:quit或者简写q 帮助获取: gdb通过完备的在线帮助,使我们使用起来更加方便.所有的帮助信息都是通过help命令获得的,运行help ...
- 【Linux】GDB程序调试
一.GDB简介 GDB是GNU发布的一款功能强大的程序调试工具.GDB主要完成下面三个方面的功能: 启动被调试程序. 让被调试的程序在指定的位置停住. 当程序被停住时,可以检查程序状态(如变量值) 二 ...
- GDB程序调试
GDB使用流程 1.编译生成可执行文件: gcc -g tst.c -o tst2.启动GDB gdb tst3. 在main 函数处设置断点 break main4. 运行程序 run GDB 命令 ...
- ARM平台如何玩转GDB远程调试?
前 言 关于GDB工具 GDB工具是GNU项目调试器,基于命令行使用.和其他的调试器一样,可使用GDB工具单步运行程序.单步执行.跳入/跳出函数.设置断点.查看变量等等,它是UNIX/LINUX操作 ...
- 程序调试手段之gdb, vxworks shell
调试一个程序主要用到的功能: 启动程序 设置函数断点 设置数据断点 单步执行 查看内存值 修改内存值 linux下的gdb,和vxworks下的shell 虽然使用方式和调试命令略有不同,但是都能满足 ...
- GDB+GDBServer调试Linux应用程序
参考:http://blog.csdn.net/shanghaiqianlun/article/details/7820401 一.gdb+gdbserver总体介绍 远程调试环境由宿主机GDB和目标 ...
随机推荐
- nginx支持pathinfo的方法,亲测有效的
修改配置文件,修改特点域名的配置文件 location ~ \.php { #去掉$ root H:/PHPServer/WWW; fastcgi_pass ; fastcgi_index index ...
- 8. 启动Tomcat闪退无法启动原因解决
原因可能是由于下面问题导致的: 1.Tomcat环境在不同电脑上引用的jdk路径不同 比如:在A电脑上Tomcat引用的jdk路径为:C:\Java\jdk1.6.0_10 而在B电脑上jdk的安装路 ...
- Redis 通用操作2
01, 一次设置多个键值 => mset key1 value1 key2 value2 key3 value3 ...... 02, 一次获取多个值 => mget ke1 key2 k ...
- RabbitMQ-从基础到实战(4)— 消息的交换(中)
转自:https://www.cnblogs.com/4----/p/6590459.html 1.简介 本章节和官方教程相似度较高,英文好的可以移步官方教程 在上一章的例子中,我们创建了一个消费者, ...
- css兼容性记录
* , ie6,ie7可以识别: _和- , ie6可以识别: !important ,表示高优先级,ie7及以上,firefox都支持,ie6认识带!important的样式属性, ...
- 使用ngxtop实时监控nginx
Ngxtop实时解析nginx访问日志,并且将处理结果输出到终端,功能类似于系统命令top,所以这个软件起名ngxtop.有了ngxtop,你可以实时了解到当前nginx的访问状况,再也不需要tail ...
- Git reset head revert 回滚
Overview 涉及Git一些日常操作 :) 基础知识 <Pro Git>至少了解branch,commit的概念,及基本的原理 Git常用魔法 存档:master代码回滚方法 我是QA ...
- bat 批量更改文件名的批处理文件
bat 批量更改文件名的批处理文件 最近下了不少动画,不过文件名都太长,一般都是 [字幕组][名称][集数][语言][分辨率][编码].后缀 这样的格式 我喜欢简单的名字,比如 01.rmvb 之类, ...
- javascript中this之说
this是在运行时基于函数的执行环境绑定的:在全局函数中,this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象.不过,匿名函数的执行环境具有全局性,因此其this对象通常 ...
- Cookie进行会话管理
一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学曾 ...