Linux gdb调试器
gdb的启动
--gdb 程序名 [corefile]
--corefile是可选的,但能增强gdb的调试能力
--强调:启动gdb必须在编译命里加上"-g"参数,"-g"一般写在遍历命令的靠前位置,例如--gcc -Wall -g -o hello.o -c hello.c
"-q"命令
--命令格式:gdb -q 执行程序
--不显示gdb版本信息
gdb命令集合
--直接运行调试命令 gdb 程序名
--"run"
开始调试程序
--"where"
显示导致段错误的执行函数树
--"list[m,n]"
m,n是要显示包含错误首次出现位置的起始行和结尾行。不带参数的list命令将显示附近的10行代码
--"print"
print 变量,表达式
print 'filename'::变量或表达式 --''是必须的,以便让gdb知道指的是一个文件名。
print funcname::变量或表达式
--"whatis"
告诉你变量的类型
--"ptype"
告诉你结构的定义
--"break"
设置断点
break linenum(行号)
break funcname(函数名)
break filename:linenum
break filename:funcname
--"continue"
从断点以后继续执行,并非单步
--"delete"
删除一个端点
语法格式:delete 断点编号
断点编号是由"info break"获取的
--"info break"
查看已设置断点的信息
--"set variable"
命令格式是:set variable varname=value
varname是变量名称,value是变量的新值
gdb单步调试
--"step"
当遇到一个函数的时候,step将进入函数,每次执行一条语句,相当于vs中的F10命令
--"next"
当遇到一个函数的时候,next将执行整个函数,相当于vs中的F5命令
--"return "
相当于在函数中直接return ,并且将value作为返回值返回给调用者。
--如果需要重复执行一条命令,不需要每次都键入命令,gdb记住了最后一个被执行的命令,只要简单的按
enter键就可以重复执行最后的命令
gdb调试带参数的程序
进入gdb调试界面
输入参数命令set args 后面加上程序所要用的参数,注意,不再带有程序名,直接加参数,如:
set args a.txt b.txt
回车后输入 run
gdb多文件调试
如果调试的文件不在当前目录下,需要将文件目录加载到程序中,如果在当前目录下不需要加载目录
--命令行 "DIR ../common"
在文件中添加断点
--命令行 "bread helper.c:68" 在helper.c文件的第68行加断点
跳出循环:
until LineNum
执行到一个比当前行号大的行,或者也可以指定在当前frame中的某一行 跳出函数:
finish
执行,直到选定的frame执行结束,然后打印返回值,将其放入历史值中,停止
gdb多线程调试
在多线程编程中,经常会遇到死锁问题,这时候需要使用pstack命令来查看线程在哪个函数中锁住了
Linux gdb调试器的更多相关文章
- Linux gdb调试器用法全面解析
GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要可帮助工程师完成下面4个方面的功能: 启动程序,可以按照工程师自定义的要求随心所欲的运行程序. 让被调试的程序在工程师指定的断 ...
- linux基础2——gdb调试器
gdb调试器使用的一般步骤(不断更新完善): 1.编译过程中要用-g参数来添加调试符号——gcc test.c -g: 2.gdb启动可执行文件——gdb a.out: 3.出现gdb符号表示启动成功 ...
- Linux C 程序 函数,数组,指针,gdb调试器(SEVEN)
函数,数组,指针,gdb调试器 1.函数定义 如果明确指定返回类型,默认为int 参数传递:实参对形参的参数传递是单向的,实参只是把自己的值赋给形参. 形参的 ...
- Linux GDB调试全面解析
GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要可帮助工程师完成下面4个方面的功能: 启动程序,可以按照工程师自定义的要求随心所欲的运行程序. 让被调试的程序在工程师指定的断 ...
- 使用GDB调试器(一)
使用GDB调试器 GDB概要---- GDB是GNU开源组织公布的一个强大的UNIX下的程序调试工具.也许,各位比較喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但假设你是在UNIX平台下做软 ...
- Ubuntu下GDB调试器的使用
gdb调试器时一款GNU组织开发.发布的UNIX/Linux环境下的程序调试工具,没有图形界面,但功能强大. GDB使用流程: 先编写一个测试文件gdbTest.c 保存后用gcc对文件进行编译,需要 ...
- GCC编译器和GDB调试器常用选项
http://blog.csdn.net/u014328976/article/details/46745349 GCC编译器 gcc hello.c -o hello ...
- Mac os系统gdb调试器的安装与使用
Mac os系统gdb调试器的安装与使用 1.简介 Mac os下的Terminal 终端中默认情况下并没有安装gdb调试器,但是可以通过gcc编译器进行代码编译,如果出错了就需要通过gdb调试器进行 ...
- gdb调试器在windows下的相关内容
1.gdb调试器在visual studio或dev c++中也有类似的调试图形化可视界面,但是gdb不同的是它是由命令行组成,他的界面对于习惯图形化可视界面的用户来说一时间会不知所措 2.通过gcc ...
随机推荐
- 数据库问题5-SYS.SYSPROCESSES使用和查找死锁
http://blog.sina.com.cn/s/blog_62c4727d0100jc5z.html (一)理論部份 sys.sysprocesses (Transact-SQL) http:// ...
- 几种常用的json序列化和反序列化工具介绍
一.前言 Json序列化和反序列化工作中会时常用到,也是目前数据交互的常用格式,Rest风格的接口加上json格式的数据交互,真的是天作之合. 目前Json字符与Json对象的相互转换方式有很多,接下 ...
- ios(iphone/ipad)一个简单的用代码判断当前设备的方法
直接NSLog(@"current_device:%@",[UIDevice currentDevice].model); 即可看出它输出的是当前设备,所以根据这个字符串可简单的判 ...
- Linux下使用GDB进行调试
Linux下使用GDB进行调试的常用命令记于此. $ sudo su # g++ -g test.cpp -o test -pthread # gdb test <------- ...
- Objective-C:运行时runtime
1.是否可以把比较耗时的操作放在通知中心中? 通知在哪一个线程发的,那么对通知事件的处理就在同一个线程中进行; 如果在异步线程发的通知,那么可以执行比较耗时的操作: 如果在主线程发的通知,那么就不 ...
- D3.js系列——布局:弦图和集群图/树状图
一.弦图 1.弦图是什么 弦图(Chord),主要用于表示两个节点之间的联系的图表.两点之间的连线,表示谁和谁具有联系. 2.数据 初始数据为: var city_name = [ "北京& ...
- HBase设计与开发
HBase设计与开发 @(HBase) 适合HBase应用的场景 成熟的数据分析主题,查询模式已经确定且不会轻易改变. 传统数据库无法承受负载. 简单的查询模式. 基本概念 行健:是hbase表自带的 ...
- Spark streaming + Kafka 流式数据处理,结果存储至MongoDB、Solr、Neo4j(自用)
KafkaStreaming.scala文件 import kafka.serializer.StringDecoder import org.apache.spark.SparkConf impor ...
- 转:http2的资料与使用
https://imququ.com/post/http2-resource.html
- [Functional Programming] Combine Multiple State ADT Instances with the Same Input (converge(liftA2(constant)))
When combining multiple State ADT instances that depend on the same input, using chain can become qu ...