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日

相关文章

  • 【Visual Leak Detector】源码下载

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍 VLD 源码的下载。同系列文章目录可见 《内存泄漏检测工具》目录 目录 说明 1. 下载途径 2. 不同下载途径的源文件差异 1. 下载途径 以 v2.5.1 版本为例,可以到 Github-KindDragon-vld 页面下载 master 的 zip 源码包,如下所示: 也可以到 …

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

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

    C++ 2023年4月18日
    00
  • C++的引用变量作为函数参数

    一、问题引入 在C++的中新增一个特性:按引用传递变量,虽然与按传递变量的地址可以实现相同的结果,但引用有其独特的地方。 引用传递: 引用经常被用作函数参数,使得函数中的变量名成为调用程序中的变量的别名。 通过引用变量用作参数,函数将使用原始数据,而不是其副本。 二、解决过程 举例说明: #include <iostream> using nam…

    C++ 2023年4月17日
    00
  • 创建一个简单的Qt工程

    1.打开QtCreator进行如下选择。(开软去官网下载即可,注册邮箱可以断网跳过) 第一步: 选择Application     第二步:这里文件名称和路径都不要有中文 第三步:选择编译模式 点击下一步 第四步:选择 Widget点击下一步   第五步:运行工程,判断是否创建成功 课堂小记: 1.析构函数不能被重载 2.被protect关键字修饰的成员变量…

    C++ 2023年5月7日
    00
  • 高效c语言1快速入门

    本章将开发你的第一个C语言程序:传统的 “Hello, world!”程序。然后讨论一些编辑器和编译器的选项,并阐述移植性问题。 Hello, world! #include <stdio.h> #include <stdlib.h> int main(void) { puts(“Hello, world!”); return EXI…

    C++ 2023年5月10日
    00
  • 面试最常问的数组转树,树转数组 c++ web框架paozhu实现

    刚毕业同学,找工作常被问 二维数组转树,树转二维数组 需要支持无限层级实现,如果你了解这个语言那么实现起来还要一番思考 c++ web框架 paozhu使用 需要实现数据库表数据到前台菜单实现,就是这种功能 二维数组转树,树转二维数组 保存时候树二维数组,展示时候树树状。 这个技术难点在于无限递归,这个树程序基本原理 现在看看c++怎么实现的,无限递归,家肯…

    C++ 2023年4月25日
    00
  • 07、【算例】openfoam带孔盘体应力分析

    官网:https://doc.cfd.direct/openfoam/user-guide-v9/platehole$FOAM_TUTORIALS/stressAnalysis/solidDisplacementFoam下的案例 1、网格划分 /*——————————–*- C++ -*—————…

    C++ 2023年4月18日
    00
  • MordernC++之左值(引用)与右值(引用)

    左值与右值 C++中左值与右值的概念是从C中继承而来,一种简单的定义是左值能够出现再表达式的左边或者右边,而右值只能出现在表达式的右边。 int a = 5; // a是左值,5是右值 int b = a; // b是左值,a也是左值 int c = a + b; // c是左值,a + b是右值 另一种区分左值和右值的方法是:有名字、能取地址的值是左值,没…

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