GDB使用的2个技巧

ROS2 gdb调试实战:从基础到高级技巧 本文详细介绍了使用gdb调试ROS2程序的实战技巧,涵盖从编译设置(Debug/RelWithDebInfo模式)、两种启动调试方法(直接调试与Launch文件集成),到核心gdb命令使用、多线程调试以及核心转储分析。文章旨在帮助开发者高效定位和解决ROS2节点崩溃、死锁等复杂问题,提升调试效率。 阅读详情

GDB使用的2个技巧

这里推荐一个gdb使用上的技巧,你可以在gdb时输入-tui参数,gdb ./a.out -q -tui
得到的效果就是这样
在这里插入图片描述

另外一个技巧是watch 变量。

如果一个变量被watch了,那么当这个变量被修改的时候,程序会停下来。就像打了断点一样。
比如我断点打在了函数的开头,然后watch这个函数的一个局部变量i。然后c让程序继续运行。程序会停在34行。i++位置处。

当时不知道怎么的watch变量后程序不停下来。困扰了我很久,尝试了很久,最后都放弃了。但是现在它又能停下来了,现在复现不出当时的场景,再次遇到再说吧。

关于第一技巧,如果在用gdb打开可执行文件,不加-tui,而是在打开后,按快捷键ctrl+x+a听说也是可以的。但是我会出现no source available 现象,至今没有解决这个问题,参考的资料有:
尝试解决1:https://www.manongdao.com/article-2154823.html
没有解决方案
中途发现一些文章以后可能用到:
https://wenku.baidu.com/view/553554eea2c7aa00b52acfc789eb172ded63993a.html
关于焦点:https://www.cnblogs.com/loveyan1314/articles/10333015.htm
关于分割窗口:关于分割窗口

尝试解决2:http://www.blogdaren.com/post-2651.html
原版本的GDB无法识别更高版本的GCC生成的的调试符号格式(debug symbols format)
编译时,-g参数改为-gdwarf-3
还是没有解决。

查看apt update 和 upgrade的区别
apt update:只检查,不更新
apt upgrade:更新已安装的软件包
用法:sudo apt upgrade 软件包名

ROS2与GDB调试的隐藏技巧:如何给launch文件中的节点加断点? 本文深入解析了ROS2 launch文件中调试节点的核心技巧,重点介绍了如何使用`prefix`参数无缝集成GDB调试器。通过Python和XML格式的实战示例,展示了如何在保持launch文件构建的完整运行环境(如命名空间、参数传递)下,对特定节点进行源码级断点调试,有效解决复杂系统中的隐蔽Bug。 阅读详情

相关推荐

Linux:GDB调试NS2项目详细步骤

一、TCL的调试(ns-2.30) 用的比较少,一般用tcl-debug或者tkcon 二、Gdb的调试——即C++代码的调试(segment fault) 调试工具gdb(Source insight本质上也是调用gdb) (1)、需要先在NS2中添加调试信息 1. 在~ns-2.30下的Makefile文件中添加-g,(注意要在root用户下写该才能保存)如下:

yhdyy123的博客 1093

GDB教程一

GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲...

iteye_13558的博客 196

数字IC后端笔记-libcell命名规则与标准单元库介绍

ND3D1BWP13T40P140HVTND3D1BWP13T40P140HVTTSMC两种工艺,Metalization Stack的截面示意图:还有一层AP用来走RDL,RDL这层是最厚的一层,一般用于连接IO的bump,信号线基本上不会用这层绕线。

sinat_41774721的博客 2463

eclipse调试错误No source available for "_dl_debug_state() 解决方案

eclipse调试的时候有时会遇到错误:No source available for "_dl_debug_state() “或 gdbinit: No such file or directory. 很奇怪设置了断点但是F11就是总显示上面的错误,怎么办呢? 这可能是由于gdb进行升级造成的或者程序入口不明确,解决方案:按F8(Resume),连续按直到跳入代码内部断点处,如果还不行,

Rachel Zhang的专栏 2万+

VMware桥接模式实战:用手机热点给Linux虚拟机共享网络(附WiFi适配技巧)

本文详细介绍了在移动办公场景下,如何为VMware中的Linux虚拟机配置桥接模式,以通过手机热点共享网络。文章深入解析了桥接模式在无线环境下的工作原理,提供了从主机端准备、VMware设置到Linux虚拟机内部配置的完整实战步骤,并针对手机热点的特殊性,分享了MTU优化、DNS配置及常见网络问题的诊断与解决方案,帮助用户实现稳定高效的移动虚拟化办公。

2y3u4i5o6p的博客 1193

python3.12 在用django5.0创建超级用户时,遇到AttributeError: module ‘hashlib‘ has no attribute ‘pbkdf2_hmac‘的问题

产生问题的原因是python3.12的hashlib没有自带pbkdf2_hmac函数,该函数是加密算法的一种,只要通过别的函数导入pbkdf2_hmac即可。还有一种方法是将django默认使用的pbkdf2_hmac改为hashlib自带的sha2或其他算法返回加密的密码,笔者以后会尝试用此类办法解决问题。2.找到报错文件的位置/usr/local/lib/python3.12/site-packages/django/utils/crypto.py。保存修改的文件,重新执行创建超级用户的命令成功。

weixin_67057943的博客 851

gdb调试解决找不到源代码的问题

通过 `gdb` 启动程序,打好断点运行,开始调试输入 `list` 命令,结果发现找不到源代码,是不是很糟心,让我们来看看怎么解决这种情况...

AlbertS Home of Technology 2万+

自己动手写CPU(1)五级流水线及CPU第一条指令ori

自己动手写CPU(1)五级流水线及CPU第一条指令ori 动机 不知为何研一的自由时间突然多起来,可能人一闲下来就容易焦虑吧,hhhhhh。正好之前看到一本《自己动手写CPU》,就按照此书从头实做一遍MIPS指令集的CPU,也当做对大学课程的总结。之前看龙芯杯比赛的代码震惊到我了,想想那堆大佬本科在搞这东西而我本科在瓜瓜地刷分,感叹人之间的差距真的好大。痛定思痛,还是先动手做起来这才能假意安慰自己,我好像也不错。闲言少叙,让我们开始吧! 由于作者提供了各章实现的具体代码,所以该系列博客主要记录我过程中有哪些

谦豫 7076

eclipes error

1 error in final launch sequence提示信息: Error in final launch sequence Failed to execute MI command: maintenance set python print-stack off Error message from debugger back end: Undefined m

flfihpv259的博客 3864

UG\NX二次开发 获取三平面交点

//如果返回值不为0 则此三个面没交点 int three_faces_point(tag_t tagFace1, tag_t tagFace2, tag_t tagFace3, double *dou_x, double *dou_y, double *dou_z)

王牌飞行员_里海的博客 674

手把手教你学 NPU 驱动开发--第一部分:基础准备 开发环境搭建:Linux 内核编译与 NPU 仿真平台配置

摘要:本文详细介绍了搭建Linux内核编译与NPU仿真平台的完整流程。主要内容包括:1) 准备ARM64交叉编译工具链;2) 编译支持KGDB调试的Linux内核;3) 构建最小根文件系统;4) 使用QEMU模拟自定义NPU设备;5) 配置KGDB调试环境。文章重点讲解了如何通过修改设备树添加虚拟NPU设备,并提供了开源NPUIP Gemmini作为实验对象。最后展示了简单的"Hello NPU"驱动验证方法,为后续NPU驱动开发奠定了基础。文中还附有常用命令速查表,方便开发者快速搭建调

MHD0815的博客 382

GDB / TUI 模式

gdb 默认是命令行模式,需要显示部分代码时,使用“list”命令,默认显示当前行上下一共10行的代码,如果想增加显示的行数,可以通过命令 list (+-)n,n 为行数。 这种方法简单有效,就是不方便,有种方法可以时时查看变量内容,那就是 TUI 模式。 TUI 模式全称:Text User Interface 。 使用方法是启动的时候,加入 -tui,即: gdb main.o -tui 也可以运行的过程中,执行 Ctrl + x + a,完成 tui 模式的打开和关闭。 结果如图所示:

布袋和尚 2616

PGM-Explainer实验总结

PGM-Explainer建立了一个概率图模型,为GNN提供实例级解释。 论文标题:PGM-Explainer: Probabilistic Graphical Model Explanations for Graph Neural Networks 论文地址:2010.05788.pdf (arxiv.org) PGM-Explainer实验 实验目的 研究PGM-Explainer的有效性 实验方案 合成数据集的节点分类 与其他解释器做对比实验 使用六个合成数据集。 每个输入图都是一个

笔记|思路|总结 1万+

GDB使用技巧(2)——GDB命令

DB的命令概貌 启动gdb后,就你被带入gdb的调试环境中,就可以使用gdb的命令开始调试程序了,gdb的命令可以使用help命令来查看,如下所示: /home/hchen> gdb GNU gdb 5.1.1 Copyright 2002 Free Software Foundation, Inc. GDB is free software, covered by the GNU G............

Biao 2396

YOLOv11改进 | 主干/Backbone篇 | 利用RT-DETR主干网络PPHGNetV2助力yolov11有效涨点(轻量化目标检测网络)

本文给大家带来利用RT-DETR模型主干HGNet去替换YOLOv11的主干,RT-DETR是今年由百度推出的第一款实时的ViT模型,其在实时检测的领域上号称是打败了YOLO系列,其利用两个主干一个是HGNet一个是ResNet,其中HGNet就是我们今天来讲解的网络结构模型,这个网络结构目前还没有推出论文,所以其理论知识在网络上也是非常的少,我也是根据网络结构图进行了分析(精度mAP提高0.05)。YOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备​目录一、本文介绍。

Snu77的博客 3719

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

gdb-2-技巧

打印美化 set print pretty on 使用layout图形化界面 set print object on打印派生对象 -函数 向上或向下切换函数堆栈帧 用gdb调试程序时,当程序暂停后,可以用“ up n ”或“ down n ”命令向上或向下选择函数堆栈帧,其 中 n 是层数。以上面程序...

weixin_30239339的博客 236

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

(二)GDBdebug调试技术——GDB的使用技巧2

文章目录1.gdb技巧 1.gdb技巧 (1)attach到进程 要调试守护进程(daemon process)等已经启动的进程,或者调试陷入死循环而无法返回控制台的进程时,可以使用sttach。 格式: attach pid $ ps -aux|grep sleep (gdb)attach 17686 attach后,就可以使用普通的gdb命令;恢复程序运行,使用continue; 参考:...

喜欢打篮球的普通人 737

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

《软件调试的艺术》学习笔记——GDB使用技巧摘要(2)

command命令可以在每次发生断点的时候自动执行一系列命令,解放程序员的双手。 见示例: (gdb) command 1 Type commands for when breakpoint 1 is hit, one per line. End with a line saying just "end" >silent >printf "fibonacci was passed %d./n", n > continue >end (gdb) run Starting program: fibonacci

sun378554759的专栏 727

EKA2L1高级调试技巧:使用GDB Stub进行内核级调试的完整指南

想要深入了解Symbian OS和N-Gage游戏内部工作原理吗?EKA2L1作为一款强大的Symbian OS/N-Gage模拟器,提供了专业级的调试功能。本文将详细介绍如何利用GDB Stub进行内核级调试,让你能够像专业开发者一样分析Symbian应用程序和游戏的核心机制。🚀 ## 什么是GDB Stub调试功能? EKA2L1内置了**功能完整的GDB Stub支持**,配合Dyna

gitblog_00379的博客 968

嵌入式随笔2--core 调试技巧总结(GDB调试常见问题汇总)

0、core简介 Core文件其实就是内存的映像,当程序崩溃时,存储内存的相应信息,主用用于对程序进行调试。当程序崩溃时便会产生core文件,其实准确的应该说是core dump 文件。 1、core功能打开及关闭 关闭或阻止core文件生成: $ulimit -c 0 打开core文件生成: $ulimit -c unlimited 以上配置只对当前会话起作用,下次重新登陆后,还是...

yiyongzhifu的博客 750

NS2 GDB调试

最近研究AODV协议,并作了一些改进,拟利用NS2网络仿真工具进行仿真。之前花了一些时间实现协议NS2的C++源码,主要也是在AODV代码上修改。这几天要调试代码,因此作些笔记。本文大部分内容来源于网络和书籍。    本文所用的NS2在ubuntu下运行,该平台通常包含了Gcc/gdb等工具,在安装NS2前应该已经安装好了。   一、在NS2中启用GDB调试工具          1. 修改

阿金正传 995

NS2 中GDB调试详细攻略

1、TCL的调试(ns-2.33) 用的比较少,一般用tcl-debug或者tkcon 2、Gdb的调试——即C++代码的调试(segment fault) 调试工具gdb(Source insight本质上也是调用gdb) 1)gdb的安装: NS2在ubuntu下运行,该平台通常包含了Gcc/gdb等工具,在安装NS2前应该已经安装好 2)在NS2中添加调试信息 1. 修改makefil...

songforest1的专栏 490

gdb使用

编译时需添加-gdwarf-2和-g3两个参数。 加了-g3的参数后,gcc编译的时候,会将扩展的debug 信息编译进二进制文件里面,包括宏定义信息。 gdb主动生成core文件: gcore break if (condition)例子: break if (testval > 3) (testval可以是局部变量) 显示字符串全部长度 set print el...

weixin_30615767的博客 186

gdb调试传参args

假设我们的可执行程序是worker,gdb时需要传递参数arg1和arg2,有3种方式: gdb --args worker arg1 arg2 或者我们先启动gdb: gdb worker //进入gdb界面,然后设置参数 set args arg1 arg2 查看我们传递参数: show args 或者我们在run指令后面直接跟参数就行 gdb worker r arg1 arg2 ...

KingOfMyHeart的博客 1万+
上一篇: c语言文件操作的理解
下一篇: clion调试的一个技巧
?-ldl
博客等级 码龄7年 712粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值