×

gdb多文件断点

gdb多文件断点(gdb断点管理命令)

admin admin 发表于2023-04-04 22:24:07 浏览69 评论0

抢沙发发表评论

本文目录一览:

深度linux V20如何安装gdb,如何用gdb调试程序、用gdb设置断点删除断点、gdb自动显示变量值、看内存值?

因本人通过几个小时的时间才解决这个问题,希望我的答案能节省大部分初学者在gdb上的时间。我也是今天才接触gdb,以下是有关深度linux V20的gdb调试问题的初步总结:

安装gdb方式,sudo apt-get install gdb ,有ok点击ok安装,直到安装结束。

gcc -g aa.c之后才能调试a.out文件。(aa.c表示你的源文件)

用法gdb a.out或者gdb进入后file a.out

l N是查看N行附近的代码,直接l是显示接下去的代码。r运行过程中遇到断点,按l则显示断点附近代码。

l 函数名是查看函数名里边的代码

q退出调试。

p 变量,查看变量即时值。

r运行。

n单步执行。

s单步执行-进入函数。

c连续多步运行,直到下个断点(循环的下一次断点)暂停。

b N第N行设置断点。

b 函数名,在函数名的入口处设置断点。

b 文件名:行号,在指定文件名行号设置断点。其中文件名是源文件的文件名。

(条件断点)b 行号 if 变量==N,表示该行号的断点必须满足变量==N的条件下才停下来。

ignore 断点编号 N,表示该断点编号在接下来的运行过程中忽略N次,即第N+1次该断点才会停下来。

info break显示全部断点。简写i b

delete 1-3删除编号为1到3的断点。简写 d 1-3。d 4只删除编号为4的断点。

delete break删除所有断点。无法简写

clear 20删除20行断点。

运行中disable break n 禁用断点号为n的断点。enable break n 使能断点为n的断点号重新启用。其中break可以简写为b

display {var1,var2,var3}自动显示var1~3变量的值。要删除display则用delete display N,N表示display的编号,如果不加N则表示删除全部的display。如果要自动显示数组内容,用display 数组名。注意:display需要r之后才能设置。-gdb多文件断点

watch {var1,var2,var3}自动跟踪改变的值,只要有改变才显示watch。要删除watch,用d N,N代表watch编号,用i b可以查看该编号。注意:watch需要r之后才能设置。-gdb多文件断点

gdb死循环程序按键盘ctrl+c可结束程序

****************

要查看内存地址的内容用x /nfu 内存地址。以下是n、f、u的解释

其中n表示要显示多少个内存单元。

f表示显示方式, 可取如下值

x 按十六进制格式显示变量。

d 按十进制格式显示变量。

u 按十进制格式显示无符号整型。

o 按八进制格式显示变量。

t 按二进制格式显示变量。

a 按十六进制格式显示变量。

i 指令地址格式

c 按字符格式显示变量。

f 按浮点数格式显示变量。

u表示一个地址单元的长度

b表示单字节,

h表示双字节,

w表示四字节,

g表示八字节

*****************

gdb断点怎么实现的

2009年12月29日,程序调试工具 GDB 7.0.1 发布,新版本修正了7.0版本的一些严重的堆栈溢出bug,这些bug可能导致 GDB 调试进程中断,修正了在 FreeBSD 和 IRⅨ 系统下无法编译的问题,增加了对 Thumb2调试的支持,还有其他一些小bug的修复。-gdb多文件断点

2010年03月19日,GDB 7.1 发布,

详细改进内容:多程序调试的支持;

位置独立的可执行文件(派)调试的支持;

新的目标(包括一个模拟器):Xilinx MicroBlaze和瑞萨RX;

Python支持增强;

c++支持扩展;

新tracepoint功能;

过程记录的改进;

远程协议扩展。

2010年09月06日 ,GDB 7.2 发布,

该版本改进记录:

⒈ 支持D语言

⒉ C++ 改进,支持参数依赖查找ADL,静态常量类成员和改进了用户自定义操作符的支持

⒊ Python 调试的改进,包括断点、符号、符号表、程序空间、线程等可通过命令行进行操作

⒋ Furthermore,enhancements were made for tracepoints and for GDBserver.在跟踪点和GDB程序上有了改善。

⒌ 支持 ARM Symbian 平台

⒍ 其他方面的改进和bug修复。

2011年08月26日,GDB 7.3a 发布,

变化:

1。GDB可以理解线程的名字。

2。这个命令”线程名称”(指定一个名称)和“线程找到[REGEXP]”(匹配名称、目标ID,或者额外的信息)被添加。

3。Python脚本支持是大大增强。

4。在c++的支持,异常处理是提高,模板参数放在范围在一个实例化时调试。

5。线程调试的核心转储在GNU / Linux成为可能。

6。最初支持C语言版本的OpenCL。

7。许多其他改进。

如何在gdb上指定线程和指定参数打断点

可以使用gdb命令,调试多线程。

在调试的过程中,

可以输入命令:thread这是会列出多个线程的进程号。

然后你可以选择进入哪个线程进行调试。

只要输入:thread 线程进程号就可以了。

同单线程调试的方法没有多大区别。

请自己查看help命令。