导航:首页 > 源码编译 > gdb编译时加断点

gdb编译时加断点

发布时间:2022-04-29 00:41:43

‘壹’ gdb能运行时,加入断点吗

肯定可以,调试器就是为了调试的,肯定有断点功能。

‘贰’ gdb断点怎么实现的

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

‘肆’ 在c语言中怎样设置断点

1、首先在C语言编程软件中,写上注释内容,如下图所示。

‘伍’ linux下gdb调试设置断点的问题

确认编译时有-g选项,否则不能用。
如果已经有了,没有重名的文件,直接
b xxx.c:22
或者
b 函数名

‘陆’ 多个源文件,gdb时如何在指定的某个文件中设置断点

有两种办法, 1 利用 源文件+行号设置断点, 2 readelf -wi test > test.wi 在test.wi总查找你想设置断点的方法名称,然后能够找到这个方法对应的mangle以后的符号名称,在GDB中,用这个符号名称设置断点就可以了。

‘柒’ gdb调试时,断点设置好了,可是run不起作用。。输入next:The program is not being run.

直接输入start命令即可进入main函数

‘捌’ gdb调试设置了断点后如何继续往下运行程序

输入run或r回车就能运行到设置的断点处,输入next或s回车单步运行

‘玖’ 深度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之后才能设置。
watch {var1,var2,var3}自动跟踪改变的值,只要有改变才显示watch。要删除watch,用d N,N代表watch编号,用i b可以查看该编号。注意:watch需要r之后才能设置。
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 调试给函数打上断点,需要加上参数吗

确认编译时有-g选项,否则不能用。 如果已经有了,没有重名的文件,直接 b xxx.c:22 或者 b 函数名

阅读全文

与gdb编译时加断点相关的资料

热点内容
专业安全文件夹 浏览:777
表格里的根号算法怎么打 浏览:193
javacorepdf 浏览:573
pdf转换word编辑 浏览:446
35岁程序员实习期恐慌 浏览:701
如何做一个系统u盘文件夹名字 浏览:968
如何确认哪个ip重启了服务器 浏览:130
照片压缩软件绿色版 浏览:109
pgp基于什么体系加密 浏览:637
python合法赋值语句格式 浏览:713
程序员数学线性代数 浏览:624
看帧率app如何使用 浏览:525
从DHC服务器租用IP地址 浏览:477
编译怎么学 浏览:333
数码管显示0到9plc编程 浏览:667
服务器是为什么服务的 浏览:769
java定义数据类型 浏览:878
安卓pdf手写 浏览:431
什么是app开发者 浏览:288
android闹钟重启 浏览:105