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

[C++] GDB的调试和自动化检测

文章目录

  • GDB基本使用
    • 1. bazel的debug过程
    • 2. line-tables-only的使用
  • Reference

GDB基本使用

参考文档: https://zhuanlan.zhihu.com/p/655719314

1. bazel的debug过程

  • 需要带--copt=-g --copt=-ggdb选项进行编译
// bazel build  --strip=never --copt=-g --copt=-ggdb  //path/to/package/...
// break source.cc:78 : 表示在source.cc 78 line打断点
// p/print 一般只能打印C++中变量信息,而不能打印自定义的一些表达式,和python不太一样// 一些命令说明:
//  watch + 表达式: 通过设置好查看的表达式,则可以使程序在表达式成立时终止运行; 比如观察某个循环iteration时有用
// breaktrace/bt: 该命令打印当前停住地方函数调用栈的所有信息,如果crash,则用bt能很好确定那个地方错误。 
/ bt n/-n: 表示打印栈顶或者栈底n层信息
// info  f   则可以显示出更为详尽的当前栈层的信息
// info  args  显示当前函数的参数名和值
// 用list打印当前程序执行的源码。 需要在编译时加 -g.

2. line-tables-only的使用

  • This full debug info allows for a good debugging experience, with the ability to view function names, local variables, step through code, etc. However, it produces large executable/binary sizes. The line-tables-only optimization strips away all debug info except the line number tables. This means the executables retain the ability to step through code line by line in the debugger, but lose information like local variable names, function parameters, etc.
# cmake
set(CMAKE_CXX_FLAGS_DEBUG "$<$<CONFIG:DEBUG>:-gline-tables-only>")
# bazel 不知道怎么设置,只知道调用dbg这样写
config_setting(name = "x86_debug_build",values = {"cpu": "x86","compilation_mode": "gdb",},
)

相关文章:https://editor.csdn.net/md/?articleId=143571523

Reference

  • bazel的使用
http://www.lryc.cn/news/481303.html

相关文章:

  • 车机版 Android Audio 框架笔记
  • 【NLP自然语言处理】深入解析Encoder与Decoder模块:结构、作用与深度学习应用
  • 【JAVA EE】多线程、锁、线程池的使用
  • 云计算:定义、类型及对企业的影响
  • 大数据面试题--kafka夺命连环问
  • 【大模型】Spring AI Alibaba 对接百炼平台大模型使用详解
  • Zabbix如何配置将信息发送到邮件
  • jmeter常用配置元件介绍总结之前置处理器、测试片段
  • Redis2:Redis数据结构介绍、通用命令、String类型、Key的层级格式
  • jenkins流水线pipeline
  • 【计网】基于TCP协议的Echo Server程序实现与多版本测试
  • 「QT」几何数据类 之 QVector2D 二维向量类
  • 深度学习——权重初始化、评估指标、梯度消失和梯度爆炸
  • Rust: 利用 chrono 库实现日期和字符串互相转换
  • 【IEEE/EI会议】第八届先进电子材料、计算机与软件工程国际学术会议(AEMCSE 2025)
  • volatile 关键字的作用学习
  • 数据字典是什么?和数据库、数据仓库有什么关系?
  • Docker平台搭建方法
  • JavaScript数组
  • 产品经理如何使用项目管理软件推进复杂项目按时上线
  • 构建基于 DCGM-Exporter, Node exporter,PROMETHEUS 和 GRAFANA 构建算力监控系统
  • 第13章 聚合函数
  • 【计网不挂科】计算机网络期末考试——【选择题&填空题&判断题&简述题】试卷(4)
  • C# 中 LibraryImport 和 DllImport有什么不同
  • PDF编辑工具Adobe Acrobat DC 2023安装教程(附安装包)
  • 系动词、表语和主语补足语
  • 【网络安全 | 并发问题】Nginx重试机制与幂等性问题分析
  • Java 详解 接口
  • wordpress搬家迁移后怎么修改数据库用户名
  • C# 用于将一个DataTable转换为Users对象的列表