Linux下的gcc+gdb调试记录

本文详细介绍了GCC的使用方法和GDB调试工具的功能,包括如何设置参数、启动方式以及常用命令。内容涵盖从列出源码、管理断点、执行程序、显示变量到处理信号的基本调试技术,并探讨了多进程调试、调试意外终止程序以及内核调试的基础知识。通过实例演示了如何利用GDB进行程序调试,帮助读者掌握有效的调试技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考书上例子+自己实际操作 记录笔记

目录

1.gcc 的使用

2.gdb功能分类

3.gdb命令行格式

        常用参数:

         启动gdb方式:

        常用gdb命令:

 4.基本调试技术

        4.1 例子程序

        4.2 列出源码

       4.3断点管理

         4.4 执行程序

        4.5显示程序变量

        4.6信号管理

5.多进程调试

6.调试意外终止程序

7.内核调试技术

1.gcc 的使用

        Usage: gcc [options] file...

        常用参数:Linux 输入 gcc --help 可查看

 

 

2.gdb功能分类

  •         多种方式加载调试程序
  •         设置断点
  •         检查程序运行中各种状态和信号的变化
  •         动态改变程序执行环境

3.gdb命令行格式

         gdb [options] [executable-file] [core-file] 

        常用参数:

         启动gdb方式:

        常用gdb命令:

 4.基本调试技术

        包括 断点管理 执行程序 显示程序变量 信号管理

        4.1 例子程序

 编译test.c 

        gcc -g -o test test.c        -g 生成调试信息

        4.2 列出源码

                gdb test  

        显示如下界面:

 输入 list  默认显示前10行  试试 list 1 list 8,10

       4.3断点管理

输入break 8 或者b 8  或者break 函数名

查看断点 info breakpoints

 enable 1 diasble 1 是对断点的打开和关闭   delete 是删除断点 

         4.4 执行程序

         输入r或者run 运行或者在断点处停下 ,我刚刚设置第八行有断点

 输入next 或者 n 步进

        4.5显示程序变量

        输入print i 或者display i  查看变量值

        

        4.6信号管理

gdb可以模拟操作系统给被调试的应用程序发送信号

格式 signal <信号名称>

 此例是书上例子

首先在第40行设置断点,此时输入 signal SIGINT ,程序收到信号会调用第 38 行的响应函数 

5.多进程调试

        例子test1.c代码

 输入 gcc -g -o test1 test1.c   加入调试信息

输入./test1 ,另开一个终端输入 ps -e | grep test1

 

 切换到root用户

设置连接到3265进程后,gdb会自动查找test1文件并且加载

6.调试意外终止程序

         书上的例子,编译程序运行后,出错

 提示段错误,程序无法继续运行,会异常终止,核心已转储的意思是程序出错时环境已被转存

 

 

 ulimit -c 1024  作用时修改core 文件缓冲区 

 重新运行程序,再查看core文件

输入 gdb HttpDemo core   此例会显示这个

 

7.内核调试技术

        7.1.ptintk打印调试信息

        7.2 使用/proc虚拟文件

这里之后再补充

世界地图矢量数据可以通过多种网站进行下载。以下是一些提供免费下载世界地图矢量数据的网站: 1. Open Street Map (https://www.openstreetmap.org/): 这个网站可以根据输入的经纬度或手动选定范围来导出目标区域的矢量图。导出的数据格式为osm格式,但只支持矩形范围的地图下载。 2. Geofabrik (http://download.geofabrik.de/): Geofabrik提供按洲际和国家快速下载全国范围的地图数据数据格式支持shape文件格式,包含多个独立图层,如道路、建筑、水域、交通、土地利用分类、自然景观等。数据每天更新一次。 3. bbbike (https://download.bbbike.org/osm/): bbbike提供全球主要的200多个城市的地图数据下载,也可以按照bbox进行下载。该网站还提供全球数据数据格式种类齐全,包括geojson、shp等。 4. GADM (https://gadm.org/index.html): GADM提供按国家或全球下载地图数据的服务。该网站提供多种格式的数据下载。 5. L7 AntV (https://l7.antv.antgroup.com/custom/tools/worldmap): L7 AntV是一个提供标准世界地图矢量数据免费下载的网站。支持多种数据格式下载,包括GeoJSON、KML、JSON、TopJSON、CSV和高清SVG格式等。可以下载中国省、市、县的矢量边界和世界各个国家的矢量边界数据。 以上这些网站都提供了世界地图矢量数据免费下载服务,你可以根据自己的需求选择合适的网站进行下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值