linux开发之gdb记录

简述

GDB, the GNU Project debugger, allows you to see what is going on 'inside' another program while it executes -- or what another program was doing at the moment it crashed.
GDB, GNU项目调试器,允许你看到在另一个程序执行时“内部”发生了什么——或者另一个程序在崩溃时正在做什么。

gdb

使用

准备工作

要想使用gdb进行源码级别的调试,需要用gcc编译(不是链接)时候加上-g选项。这样调试生成的程序才能够显示源码,否则只能进行汇编级别的调试。

通常进行编译时候不止加入-g,还会关闭编译器优化-O。另外,-Wall可以在编译时候发现一些问题,避免一些不必要的bug。

开始

首先通过gdb 程序名来启动gdb去调试该程序。

命令 说明 示例
基本
q/quit 退出
help 帮助,可具体指定哪个命令 help info
set args 参数... 给程序设置参数 set args 1 2
show args 显示当前
start 程序运行并停在第一行
r/run 程序运行并到断点才停止
c/continue 继续运行直到下一个断点
n/next 执行一条一句(不会进入函数体)
s/step 执行一条一句(进入函数体)
until 继续运行至退出循环或遇到下一个断点
finish 继续运行至跳出函数体或遇到下一个断点
查看代码相关
l/list 显示当前文件代码
l 行号 显示指定行号前后文 list 10
l 函数名 显示指定函数 list main
l 文件名:行号 显示指定文件代码 list ot.cpp:1
l 文件名:函数名 显示指定文件代码 list ot.cpp:fun
show list/listsize 显示list时候的行数
set list/listsize 行数 设置list时候显示的行数 set list 20
断点
b/break 行号 在当前文件指定行打断点 b 10
b 函数名 在当前文件指定函数打断点 b fun
b 文件名:行号 在指定文件指定行打断点 b ot.cpp:10
b 文件名:函数名 在指定文件指定函数打断点 b ot.cpp:fun
b 位置 if 条件 设置条件断点(一般用于循环位置) b 23 if i==2
i/info b 查看断点信息
d/del/delete 断点编号 删除指定断点 d 2
dis/disable 断点编号 使指定断点无效 dis 2
ena/enable 断点编号 使指定断点生效 ena 2
变量
p/print 变量名 打印变量值 p var
ptype 变量名 打印变量类型 ptype var
set var 变量名=值 设置变量值 set var i=6
display 变量名 每次暂停自动打印变量的值 display var
i/info display 查看自动打印变量列表
undisplay 编号 取消自动打印 undisplay 2

原文链接:https://www.cnblogs.com/1v7w/p/17318968.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux开发之gdb记录 - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • LeetCode 力扣 205. 同构字符串

    给定两个字符串 s 和 t ,判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。 示例 1: 输入:s = “egg”, t = “add”输出:true示例…

    C++ 2023年4月18日
    00
  • 记一次 腾讯会议 的意外崩溃分析

    一:背景 1. 讲故事 前段时间在用 腾讯会议 直播的时候,居然意外崩溃了,还好不是在训练营上课,不然又得重录了,崩完之后发现 腾讯会议 的 bugreport 组件会自动生成一个 minidump,截图如下: 作为一个.NET高级调试的技术博主,非 .NET 的程序也得要研究研究哈???,有了这个好奇心,也有了这个 dump,接下来用 windbg 看一看…

    C++ 2023年4月22日
    00
  • 【Visual Leak Detector】源码文件概览

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇对 VLD 源码包中的各文件用途做个概述。同系列文章目录可见 《内存泄漏检测工具》目录 目录 说明 1. 整体概览 2. 文件夹 .teamcity 3 文件夹 lib 3.1 文件夹 cppformat(生成 libformat) 3.2 文件夹 dbghelp 3.3 文件夹 gtest(…

    C++ 2023年4月24日
    00
  • 第三部分:Spdlog 日志库的实现原理

    Spdlog 是一个快速、异步的 C++ 日志库,被广泛应用于 C++ 项目中。在这篇文章中,我们将探讨 Spdlog 日志库的实现原理。 Spdlog 的结构 Spdlog 由五个主要组件构成:Loggers、Sinks、Formatters、Async Logger 和 Registry。每个组件都扮演着不同的角色,共同协作记录并输出日志消息。 Logg…

    C++ 2023年4月18日
    00
  • 【Visual Leak Detector】在 VS 高版本中使用 VLD

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。 本篇介绍如何在 VS 高版本中使用 vld2.5.1。同系列文章目录可见 《内存泄漏检测工具》目录 目录 说明 1. 使用前的准备 2. 在 VS 2015 及更早版本中使用 VLD 3. 在 VS 高版本中使用 VLD 3.1 参考资料:在 VS 2017 中使用 VLD 3.2 参考资料:在…

    C++ 2023年5月6日
    00
  • 08、【算例】openfoam溃坝

    7.1 溃坝 官网目录:$FOAM_TUTORIALS/multiphase/interFoam/laminar/damBreak 7.1.1 介绍 本案例使用interFoam两相算法,基于流体体积分数(VOF)法,每个网格中的相体积分数(alpha)通过求解一个组分运输方程确定。物理属性基于这个相分数通过加权平均计算。 7.1.2 网格生成 blockM…

    C++ 2023年4月18日
    00
  • C++基础1: 命名空间

    0. 前言 C++是在C语言基础之上的一门语言, 所以学习C++的第一步是思考C++是如何优化C语言设计中的一些不足, 如作用域, IO , 函数, 指针, 宏等 这些内容同时也是为之后学习C++类和对象打基础, 下面说一下C++是如何优化C语言中的作用域 1. 命名空间 在说明命名空间的概念和如何优化C作用域之前, 首先来看一个例子 如图, 编译器报ran…

    C++ 2023年4月19日
    00
  • 【Visual Leak Detector】配置项 ReportFile

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍 VLD 配置文件中配置项 ReportFile 的使用方法。同系列文章目录可见 《内存泄漏检测工具》目录 目录 说明 1. 配置文件使用说明 2. 设置输出文件的路径 2.1 测试代码 2.2 ReportFile 为空时的输出 2.3 ReportFile 指定中文文件名时的输出 2.…

    C++ 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部