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 ...
随机推荐
- win8.1无法安装安装.net framework 3.5 解决办法【转】
安装流程1.以系统管理员开启命令提示符(命令提示字符)2挂载windows8.1异3,在命令提示符下输入Dism /online /enablefeature/featurename:NetFx3 / ...
- Android Studio生成APK自动追加版本号、自定义apk名称、指定签名证书文件
你也可以查看我的其他同类文章,也会让你有一定的收货! 生成APK自动追加版本号 可自动区分debug和release,并追加版本号: 打开 build.gradle 在 android 节点中插入下面 ...
- ylbtech-LanguageSamples-ExplicitInterface(显示接口)
ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-ExplicitInterface(显示接口) 1.A,示例(Sample) 返回顶部 ...
- iOS:Objective-c的MD5/SHA1加密算法的实现
介绍: Objective-c实现MD5和SHA1算法相对还是比较简单的,可以直接调用系统的C/C++共享库来实现调用MD5即Message Digest Algorithm 5(信息-摘要算法 5) ...
- GyoiThon:基于机器学习的渗透测试工具
简介 GyoiThon是一款基于机器学习的渗透测试工具. GyoiThon根据学习数据识别安装在Web服务器上的软件(操作系统,中间件,框架,CMS等).之后,GyoiThon为已识别的软件执行有效的 ...
- javascript快速入门17--事件
事件(上) JavaScript事件列表 事件 解说 一般事件 onclick 鼠标点击时触发此事件 ondblclick 鼠标双击时触发此事件 onmousedown 按下鼠标时触发此事件 onmo ...
- hive开窗函数over(partition by ......)用法
一.over(partition by ......)主要和聚合函数sum().count().avg()等结合使用,实现分组聚合的功能 示列:根据day_id日期和mac_id机器码进行聚合分组求每 ...
- asp.net购物车,订单以及模拟支付宝支付(二)---订单表
购物车准备完毕之后,就要着手订单表的设计了 表结构如下: T_Orders T_OrderBooks 为什么这里要分为两个表? 仔细想想,现实生活中的发票 特地去网上找了一张,不是很清晰 但是,正常人 ...
- python使用pickle,json等序列化dict
import pickle, json, csv, os, shutil class PersistentDict(dict): ''' Persistent dictionary with an A ...
- GCD编程-串行队列与并发队列
接着上面的GCD封装,以下进行列子验证 1.导入GCD.h 2.创一个串行队列: - (void)serailQueue{ //创建出队列 GCDQueue *queue = [[GCDQueue ...