嵌入式(十三)——gdb调试

简介: 嵌入式(十三)——gdb调试

前言


对于C语言新手建议用printf打印大法

对于gdb本章节只做简单介绍


gdb是GNU发布的一款强大的程序调试工具。

GDB主要完成下面三个方面的功能:


启动被调试程序

让被调试的程序在制定的位置停止

当程序被停住时,可以检查程序状态-变量值

学习GDB的三步走(可以自己去看十篇博客(GDB详解)):


学会使用GDB(基础命令)

掌握GDB的场景的使用技巧(多任务、网络程序、内存管理、core、汇编程序)

尝试gdb(实现一个调试器:应用程序)

本章节只学习第一步,第三步的推荐网址:GDB 实现原理介绍


gdb调试


gcc -g gdb_demo.c -o gdb_demo(需要加上-g)

gdb gdb_demo (gdb + 可执行文件)


run:在调试器中运行程序

list:查看程序源码(只能一遍)(–tui)

break + 行号:设置断点

break + 行号 + if条件:设置断点

break + 函数名:设置断点(到调用该函数时停止)

info break:查看断点信息

delete + 断点编号(1、2):删除断点

enable/disable:使能断点

print + /x + 变量名:

quit:退出

next:单步执行,不进入子函数

step:单步执行,进入子函数

continue:跳过此断点,到下个断点停止

finish:继续执行,在函数内部时,执行到函数结束

call + 函数名:调用函数(call func(6))

print + 变量=值:设置变量的值

clear:清除所有断点

ptype + 变量:查看变量的类型

gdb gdb_demo --tui(图示)

gdb + 可执行文件 + --tui:启动图形化调试窗口

layout asm(显示汇编)

layout src (切换到源码)

layout split(同时显示汇编和源码)

可以直接简写成首字母(如n(next)、d(delete)、r(run))


段错误


看懂


#include <stdio.h>
int main(int argc,char *argv[])
{
  char *ptr = "hello world";
  ptr++;
  (*ptr) = 'E';
  printf("ptr = %s\n",ptr);
  return 0;
}


相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
2月前
|
NoSQL Linux C语言
Linux gdb调试的时候没有对应的c调试信息库怎么办?
Linux gdb调试的时候没有对应的c调试信息库怎么办?
26 1
|
2月前
|
NoSQL Linux C语言
Linux gdb调试的时候没有对应的c调试信息库怎么办?
Linux gdb调试的时候没有对应的c调试信息库怎么办?
20 0
|
2月前
|
NoSQL Linux C++
Linux C/C++ gdb调试正在运行的程序
Linux C/C++ gdb调试正在运行的程序
|
2月前
|
NoSQL Linux C++
Linux C/C++ gdb调试core文件
Linux C/C++ gdb调试core文件
|
2月前
|
NoSQL Linux C++
Linux C/C++ gdb调试
Linux C/C++ gdb调试
|
3月前
|
NoSQL Ubuntu 测试技术
【GDB自定义指令】core analyzer结合gdb的调试及自定义gdb指令详情
【GDB自定义指令】core analyzer结合gdb的调试及自定义gdb指令详情
60 1
|
3月前
|
NoSQL 编译器 C语言
【GDB调试技巧】提高gdb的调试效率
【GDB调试技巧】提高gdb的调试效率
45 1
|
3月前
|
NoSQL Ubuntu 开发工具
【gdb调试】在ubuntu环境使用gdb调试一棵四层二叉树的数据结构详解
【gdb调试】在ubuntu环境使用gdb调试一棵四层二叉树的数据结构详解
40 1
|
3月前
|
NoSQL C++ 开发者
【C/C++ 调试 GDB指南 】GDB中的‘info’命令:一次全面的探索
【C/C++ 调试 GDB指南 】GDB中的‘info’命令:一次全面的探索
211 0
|
3月前
|
NoSQL Shell 程序员
【C/C++ 调试 GDB指南 】GDB调试工具介绍:从基础到高级
【C/C++ 调试 GDB指南 】GDB调试工具介绍:从基础到高级
204 0