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

[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.kler.cn/a/389056.html

相关文章:

  • Spring集成Redis|通用Redis工具类
  • FastExcel的使用
  • 「 机器人 」扑翼飞行器混合控制策略缺点浅谈
  • 2024年终总结
  • Cpp::静态 动态的类型转换全解析(36)
  • docker 简要笔记
  • 计算机课程管理:Spring Boot与工程认证的协同
  • BIST(Built-in Self-Test,内建自测试)学习笔记
  • 项目功能--套餐预约占比饼形图
  • SQL注入(SQL Injection)详解
  • 十大经典排序算法-冒泡算法详解介绍
  • Linux下进程链接结构,命令行参数,环境变量
  • 【论文阅读】Learning dynamic alignment via meta-filter for few-shot learning
  • Django替换现有用户模型(auth_user)
  • 《潜行者2切尔诺贝利之心》游戏引擎介绍
  • Jest项目实战(2): 项目开发与测试
  • 鸿蒙next版开发:ArkTS组件快捷键事件详解
  • 密码学知识点整理二:常见的加密算法
  • c语言中的柔性数组
  • 【css flex 多行均分有间隙布局】
  • 小白学习之路:咖啡叶锈病分割
  • 105. UE5 GAS RPG 搭建主菜单
  • MySQL缓存参数如何优化与表结构如何优化才算是最大性能的优化
  • 6层板设计常用知识笔记
  • 鸿蒙开发基础入门
  • BP 神经网络学习 MATLAB 函数详解及应用