gdb如何显示宏定义的值

关于 MinGW gdb 调试 qt程序用printqstring 来显示的设置。 <br />   一直以来不太喜欢暴风语音,广告太多了,所以转而用开源SMPlayer 觉得蛮好用的。<br />但是发觉播放列表有老去读取播放文件里名称,而不读取文件名。<br />所以动手改了一下,但是发现调试有点难,因为用gdb print 无法显示 QString<br />到网上找了一些资料,说的不够详细。大致都说.gdbinit拷贝$HOME目录下,<br />尝试了一下,不行。<br />    后来看到一段英文,如下:<br />for windows user:<br /> if one 阅读详情

   今天调试程序时,一直想到#define的值打印出来看一看,如#define NUMBER '0',gdb中执行:p NUMBER时出现如下错误:(我的编译命令为gcc -g test.c -o test)

   No symbol "NUMBER" in current context.

  


    google后才知道如果需要在gdb中能查看宏定义,gcc编译的时候需要加上 -gdwarf-2和-g3的参数。

加了-g3的参数后,gcc编译的时候,会将扩展的debug 信息编译进二进制文件里面,包括宏定义信息。

所以,如果要使用gdb调试二进制文件里面的宏定义信息,这个选项必须开启。


DWARF是一种应用的比较广泛的elf(可执行和链接格式), 这的-gdwarf-2意思是使用版本2的格式


于是重新编译:gcc -g -gdwarf-2 -g3 test.c -o test

就可以查看宏定义的量了

     



BK7238(XH-WB3S)固件烧录实战:从AT固件选择到稳定下载全解析 本文详细解析了BK7238(XH-WB3S)模组固件烧录的全过程,从AT固件版本选择到稳定下载的实战技巧。重点介绍了烧录前的准备工作、硬件连接的正确姿势、烧录软件的实战技巧以及疑难问题排查指南,帮助开发者高效完成BK7238模组的固件烧录。 阅读详情

相关推荐

FOC电机控制实战:增量式编码器零位校准的5个关键步骤(附STM32代码)

本文详细解析了FOC电机控制中增量式编码器零位校准的5个关键步骤,包括电角度锁定、定时器计数清零、机械偏移角补偿等,并提供了STM32平台的实战代码。通过精准的零位校准,可显著提升电机控制系统的精度和稳定性,适用于工业伺服和机器人关节等高精度场景。

rum55的博客 617

gdb调试中打印宏

gdb调试打印宏定义

qq_46111138的博客 1925

Fanuc机器人的坐标变换矩阵的研究2

一、Funuc用户坐标系的介绍 二、用户坐标系与世界坐标系的坐标转换 三、 以用户坐标系1为基础旋转变换后的用户坐标系 四、关于点的WPR的含义 4.1:点在用户坐标系和世界坐标系下的坐标关系 4.2 通过转换矩阵返回去推导WPR

qq_34047402的博客 1523

GDB命令详解(进一步学习)

GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。同时GDB也具有例如ddd这样的图形化的调试端。 一般来说,GDB主要完成下面四个方面的功能: (1)启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 (2)可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表...

changdizm的博客 573

ctfshow 萌新22 (类似级客巅峰web4)

在之前ctfshow平台的萌新22,大家都认为是无解的,题目也介绍了"还能搞,阿呆表示将直播倒立放水"。但是在级客巅峰结束的那天晚上,群里的师傅介绍说,如果修改了php.ini里面的配置(register_argc_argv)可以做出来。最后是真的做出来了。 使用阿呆~~~? 下面是自己的思考,感谢Guoke师傅和ha1c9on师傅的帮助 一. 源代码 <?php if(isset($_GET['c'])){ $c=$_GET['c']; if(!preg_mat.

Firebasky的博客 4214

别再为采样窗口发愁了!手把手教你用STM32实现三电阻分扇区电流采样(附代码避坑)

本文详细介绍了STM32平台下三电阻分扇区电流采样的实现方法,重点解决采样窗口选择不当和扇区切换逻辑问题。通过PWM定时器与ADC协同工作的底层机制分析,提供可移植的代码示例和实战经验,帮助工程师在电机矢量控制(FOC)系统中实现高精度相电流采样。

weixin_42531516的博客 165

[linux c] gdb如何debug宏定义

本文大概阐述如何让gdb能够显示宏定义的值以及对应的原理 gcc默认编译的时候,gdb调试过程中是不能看到宏定义的,"p 宏名" 会显示错误,如下: (gdb) p CLIENT6_BEGIN_FLG No symbol "CLIENT6_BEGIN_FLG" in current context. (gdb) 其中 #define CLIENT6_BEGIN_FLG "" 这样g

jibing57的学习摘录 6481

变压器耦合放大器(低频应用+高频应用)

变压器耦合放大器(低频应用+高频应用)

m0_54943120的博客 2274

gdb调试宏定义的方法

逛知乎时刷到了,讲述了如何在GDB中调试宏,笔者在复现的时候未成功,一直显示上下文中找不到对应的符号,用文中的-g3方法仍然无法打印出该符号,使用文中的方法利用readelf查看生成的调试信息,可以看到对应的宏信息,但仍然无法打印该标志。

weixin_45207619的博客 1043

SMOKE 3D:从 Python 到 C++ 实现车辆与行人单目 3D 视觉识别在 RK3588 上的深度部署

SMOKE的网络结构通常基于高性能的骨干网络(如DLA-34,您使用的模型就是基于此),通过编码器-解码器架构来提取特征。输入:RGB图像(本项目为骨干网络:用于特征提取。检测头热力图分支:预测关键点热力图。通常在热力图上进行NMS来找到局部最大值,即潜在的关键点位置。回归分支:对于每个关键点位置,预测上述的8维3D属性向量。分类分支:预测每个关键点对应的物体类别。置信度分支:预测每个关键点的置信度。本教程详细介绍了SMOKE单目3D目标检测模型在RK3588上的部署。我们从SMOKE的。

LXY_LOVE36的博客 436

Uniapp微信小程序:详解根据角色权限动态展示底部tabbar,支持不同身份显示不同底部导航+灵活权限组合完整源码,菜单切换不闪烁、秒加载不卡(提供动态原生Tabbar配置+自定义组件形式2种方案)

uni-app微信小程序实现根据用户不同角色显示不同的tabBar,uniapp微信小程序原生tabbar实现动态菜单导航,微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色,动态pages,uni-app微信小程序动态tabBar,根据不同用户展示不同的tabBar,uni-app微信小程序动态切换tabBar,根据不同用户角色展示不同的tabBar,微信小程序自定义底部tabbar动态修改,Uniapp小程序根据权限(角色)不同动态展示底部tabbar,解决tabbar闪烁卡顿问题,小

✅ 精选推荐文章 4283

gdb调试

gdb调试 gdb调试编译时需要加-g, 命令为: g++/gcc -g xxx.out 如果使用了线程函数,需要再加`-pthread`,即 g++/gcc -g xxx.out -pthread gdb调试宏定义并显示宏定义的值: 需要添加-g3 -gdwarf-2两个参数,即 g++/gcc -g -g3 -gdwarf-2 xxx.out ...

temperamentalkj 781

手把手教你学基于 Linux 的 NPU 固件开发-第 10 讲:可靠性设计(RAS)——让系统坚如磐石错误检测、纠正与上报机制(ECC、Parity)

组件推荐保护机制备注HBM/DDRScrubbing必须开启,定期巡检片上 SRAMECC(权重/激活值),Parity(指令)权衡面积与可靠性计算单元ABFT或DMR(关键路径)防止计算逻辑错误片上网络CRC重传保证数据传输完整性系统软件AER 上报CE 监控自动恢复闭环管理,杜绝 SDC运维策略预测性维护Checkpoint变被动为主动核心心法(信任硬件,但必须验证。在纳米尺度下,错误是必然发生的物理现象。

MHD0815的博客 90

Linux -gdb如何显示宏定义的值

本文大概阐述如何让gdb能够显示宏定义的值以及对应的原理 gcc默认编译的时候,gdb调试过程中是不能看到宏定义的,"p 宏名" 会显示错误,如下: (gdb) p CLIENT6_BEGIN_FLG No symbol "CLIENT6_BEGIN_FLG" in current context. (gdb) 其中 #define CLIENT6_BEGIN_FLG "&lt;Client...

波波诸葛伟 4659

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

gdb调试宏定义并显示宏定义的值

宏定义#define APLLCON0 *((volatile unsigned int *)0xFF500100)

zhangjs0322的专栏 2万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

gdb调试(线程和正在运行中的程序)

用了好久的gdb 但对于多线程的调试自己还时存在一些问题,因此这次花点时间整理整理。 所有的gdb调试文章 gdb是有一组命令辅助多线程调试的。 info threads 显示可调试的所有线程,gdb 会给每个线程分配一个ID 我们可以是使用这个ID来操作对应的线程。调试目标线程 thread ID 调试指定ID的线程*代表被调试的 线程 set scheduler-locking 调...

我是一片云 4497

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

gdb显示变量 和 数组

程序变量 查看文件中某变量的值: file::variable function::variable 可以通过这种形式指定你所想查看的变量,是哪个文件中的或是哪个函数中的。例如,查看文件f2.c中的全局变量x的值: gdb) p 'f2.c'::x 查看数组的值 有时候,你需要查看一段连续的内存空间的值。比如数组的一段,或是动态分配的数据的大小。你可以使用GDB的“@”操

bingqingsuimeng的专栏 3875

Gdb 如何debug宏定义

为什么80%的码农都做不了架构师?>>> ...

weixin_33981932的博客 337

gdb 调试宏定义macro

c语言中的宏定义,有着各种好处,当然也有它不好的一面。它实现的三个主要功能是: 1)字符串替换 2)头文件包含 3)通用代码模块的扩展 在代码调试时候,调试宏定义是比较麻烦的一件事,下面就介绍一种比较简单的方法。 #include<stdio.h> #define max(a, b) ((a) &gt...

weixin_34255055的博客 481

GDB高级技巧

GDB高级用法

一见 8807

用GDB无法Step进去某个函数

这篇只是记录自己的不小心,下次别再犯同样的错误。 手工tags: GDB step define 宏定义 今天发现某一个函数的结果极其奇怪,正好最近在学用GDB,就用GDB调试一下。 (gdb) n 11 amic_list_append(list, ptr); (gdb) s 13 printf("[%s]\n", (char *)list->first->da

soooooot的专栏 5988

postgresql无任何优化以及调试宏定义设置

postgresql无任何优化以及调试宏定义设置 debug编译去除-O2优化 postgresql debug编译配置如下: ./configure --enable-debug --prefix=/home/postgres/pginstall 但这样虽然增加了-g选项, 但仍然时-O2优化, gdb debug时会跳行, 不爽. 改变如下: ./configure --enable-deb...

liuhhaiffeng的专栏 622

gdb调试技巧备忘

准备工作为了能让程序更直观的被调试,在编译时应该添加一些选项 -g: 添加调试选项 -ggdb3: 调试宏定义 启动方式不带参数gdb ./a.out 带参数gdb ./a.out set args -a -b -c any_argument_you_need b main run 调试core文件gdb bin_name core_name 调试正在运行的程序大致按如下步骤 ps ax

littlewhite1989的专栏 5732

gdb单步调试

C/C++代码编译时生成调试信息 gcc -g hello.c -o hello 启动gdb gdb program 常用指令 断点相关 b pkt.c:22(在pkt.c文件的22行打断点) b eth_rcv (在函数eth_rcv入口打断点) info b;显示当前所有断点; d num;删除断点num; n num;向后执行num步 打印变量: p temp;默认十进制打印 p /x temp;按十六进制打印 x 按十六进制格式显示变量。 d 按十进制格式显示变量。.

任我行的博客 3120

GDB高级使用技巧

前面两篇gdb的文章基本上已经介绍的差不多了,但是还有一些可以提高调试效率的方式需要介绍一下。 1.调试宏定义 如果gcc只是-g选项,那么宏定义是不能被调试的,-g是有等级的,需要使用-gdwarf-2 -g3才可以调试宏定义 如果宏定义只是普通的数值替换 通过p 宏定义就可以打印出值 如果宏定义是一系列语句的组合,可通过macro expand 宏定义 把对应的宏语句打印出来,宏定义里的参数可以是任意参数 2.调试coredump 程序运行可能由于段错误导致运行失败,为了定位到错误需要查看程

wh_computers的博客 1471
上一篇: RPM 简单介绍
下一篇: gcc 多源文件的编译方法
doodlesomething
博客等级 码龄13年 53粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值