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 ...
随机推荐
- Word如何设置单元格垂直居中
那两个上面是水平居中,下面是垂直居中.
- .net 多文件上传
版权声明:本文为博主原创文章,未经博主允许不得转载. 1.页面 <head runat="server"> <title>上传文件</title> ...
- Spring-data-jpa 之Specification in的用法
1.一个简单的 Predicate 的示例 构建简单的Predicate示例: Predicate p1=cb.like(root.get(“name”).as(String.class), “%”+ ...
- 14、高可用keepalived搭建及切换
keepalived主从切换试验: 1.先搭建192.168.1.20与192.168.1.21的主主架构 192.168.1.76为VIP 2.在2机都安装keepalived tar - ...
- 64位的centos6.9的vnc-sever的安装及桌面环境安装
1.VNC (Virtual Network Computer)是虚拟网络计算机的缩写.VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 ...
- C#的Xamarin开发小米盒子应用并以WCF实现微信通知
对于熟悉C#语言的开发人员而言,用Xamarin开发Android应用也是一个不错的选择.小米盒子是Android系统.当然也就能够使用Xamarin来开发.首选来看效果图. watermark/2/ ...
- HTC VIVE SDK 中的例子 hellovr_opengl 程序流程分析
最近Vive的VR头盔设备很火,恰逢项目需求,所以对 SDK 中的例子 hellovr_opengl 做了比较细致的代码分析,先将流程图绘制如下,便于大家理解. 在ViVe头盔中实现立体效果的技术核心 ...
- C#中的访问修饰符
1. 简述 private. protected. public. internal 修饰符的访问权限.private : 私有成员, 在类的内部才可以访问.protected : 保护成员,该类内部 ...
- 解决Linux关闭终端(关闭SSH等)后运行的程序或者服务自动停止【后台运行程序】
问题描述:当SSH远程连接到服务器上,然后运行一个服务 ./catalina.sh start,然后把终端开闭(切断SSH连接)之后,发现该服务中断,导致网页无法访问. 解决方法:使用nohup命 ...
- Android SlidingMenu 使用具体解释
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/36677279 非常多APP都有側滑菜单的功能.部分APP左右都是側滑菜单~Sli ...