当前位置: 首页 > news >正文

GDB

一、GDB 是什么?
GDB(GNU Debugger)是 Linux/macOS 下的命令行调试工具,核心作用是:
定位程序崩溃的具体代码行(如段错误、浮点异常);
实时查看 / 修改变量值、寄存器状态;
单步执行代码,逐步排查逻辑错误;
分析程序的函数调用栈(崩溃时的执行路径)
GDB 是定位 “非正常结束” 的核心工具,能精准找到崩溃的根源(而非猜原因)。
二、GDB 调试前置条件

  1. 编译程序时添加调试信息
    必须在 CMakeLists.txt 中添加 -g -O0(保留调试信息,关闭编译器优化),否则 GDB 无法定位到具体代码行:
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -march=native -fPIC")
  2. 确保程序可复现崩溃
    调试前确认:运行 ./pose_estimation_3d3d 1.png 2.png 1_depth.png 2_depth.png 能稳定触发崩溃(段错误 / 退出)。
    、GDB 核心调试流程
    步骤 1:启动 GDB 并加载程序
    gdb ./pose_estimation_3d3d
    启动后会进入 GDB 交互界面(提示符为 (gdb)),此时程序未运行。
    步骤 2:设置程序运行参数
    你的程序需要传入图像 / 深度图路径,在 GDB 中通过 set args 设置参数:
    (gdb) set args 1.png 2.png 1_depth.png 2_depth.png
    输出:
点击查看代码
Starting program: /home/vipuser/桌面/slambook2/ch7/ch7_gzj/cmake-build-debug/pose_estimation_3d3d 1.png 2.png 1_depth.png 2_depth.png
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffe9a92700 (LWP 5965)]
[New Thread 0x7fffe9291700 (LWP 5966)]
[New Thread 0x7fffe8a90700 (LWP 5967)]
[Detaching after fork from child process 5968]
[Detaching after fork from child process 5969]
[Detaching after fork from child process 5970]
[Detaching after fork from child process 5971]
[Detaching after fork from child process 5972]
-- Max dist: 94.000000 
--Min dist: 4.000000 
一共找到了79组匹配点
3d-3d pairs:72
W=  10.871 -1.01948  2.54771
-2.16033  3.85307 -5.777423.94738 -5.79979  9.62203
U=  0.558087  -0.829399 -0.0252034-0.428009  -0.313755   0.8475650.710878   0.462228   0.530093
V=  0.617887  -0.784771 -0.0484806-0.399894  -0.366747   0.8399890.676979   0.499631   0.540434
ICP via SVD result:
R = [0.9969452351705234, 0.05983347594296961, -0.05020112774999547;-0.05932607556034211, 0.9981719680327525, 0.01153858709846636;0.05079975225724825, -0.008525103530306, 0.9986724727258676]
t = [0.1441598281917405;-0.06667849447794805;-0.03009747343724256]
R_inv = [0.9969452351705234, -0.05932607556034211, 0.05079975225724825;0.05983347594296961, 0.9981719680327525, -0.008525103530306;-0.05020112774999547, 0.01153858709846636, 0.9986724727258676]
t_inv =[-0.1461462830262245;0.05767443636940816;0.03806387978797152]
calling bundle adjustment
pose_estimation_3d3d: /usr/include/eigen3/Eigen/src/Core/MapBase.h:196: void Eigen::MapBase<Derived, 0>::checkSanity(typename Eigen::internal::enable_if<(Eigen::internal::traits<OtherDerived>::Alignment > 0), void*>::type) const [with T = Eigen::Map<Eigen::Matrix<double, 3, 6, 0, 3, 6>, 32, Eigen::Stride<0, 0> >; Derived = Eigen::Map<Eigen::Matrix<double, 3, 6, 0, 3, 6>, 32, Eigen::Stride<0, 0> >; typename Eigen::internal::enable_if<(Eigen::internal::traits<OtherDerived>::Alignment > 0), void*>::type = void*]: Assertion `( ((internal::UIntPtr(m_data) % internal::traits<Derived>::Alignment) == 0) || (cols() * rows() * minInnerStride * sizeof(Scalar)) < internal::traits<Derived>::Alignment ) && "data is not aligned"' failed.Thread 1 "pose_estimation" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50	../sysdeps/unix/sysv/linux/raise.c: 没有那个文件或目录.
http://www.jsqmd.com/news/178005/

相关文章:

  • 互联网大厂Java面试:从Spring Boot到微服务架构的技术点解析
  • mac上平替ensp的软件
  • 电池超级电容混合储能系统能量管理超级电容matlab simulink储能模型仿真,能量管理蓄...
  • MATLAB、PSasp、PowerWorld电力系统仿真建模分析 潮流(局部地区电网的建模
  • 智能降重方法推荐:6种AI技术提升论文原创性
  • 10356_基于Springboot的老年人管理系统
  • 偷一句去调戏你家男人
  • Python 搭建 GPT 对话机器人从入门,OpenAI API 全指南
  • 对RSA私钥泄露攻击
  • 东方博宜OJ 1953:新生舞会 ← STL map / 结构体
  • 声嘶力竭
  • 1月1日元旦,朋友圈一定要这样发
  • 论文重复率破解策略:AI驱动的6种改写技巧
  • 基于Simulink的直流无刷电机三闭环控制模型研究
  • Linux的命令速记
  • 安森美将与格罗方德共同开发下一代氮化镓功率器件
  • 论文降重技巧Top6:智能工具与创新方法全解析
  • [1]探讨AI的C++风(以 DeepSeek R1为例)
  • RTOS十年演进(2015–2025)
  • 职业学院游戏发布
  • AI赋能论文查重:6种智能改写方法对比分析
  • springboot基于Java的旅游攻略分享平台设计实现
  • 小米 | 运维开发工程师一面面经来啦
  • [ABC438G] Sum of Min
  • [ABC438G] Sum of Min
  • 论文查重优化方案:六大AI工具高效改写指南
  • 基于遗传算法的车辆优化调度与成本最小化:考虑多配送中心与供应惩罚的Matlab完整代码
  • 基于遗传算法的车辆优化调度与成本最小化:考虑多配送中心与供应惩罚的Matlab完整代码
  • EXTI和NVIC的这两个外设时钟为什么不需要开启?不开启外设时钟程序能否执行? - 实践
  • 学术论文降重技巧盘点:6种AI辅助方法全解析