【Linux】gdb_进程概念

📢博客主页:https://blog.csdn.net/2301_779549673

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

📢本文由 JohnKi 原创,首发于 CSDN🙉

📢未来很长,值得我们全力奔赴更美好的生活✨

文章目录


📢前言

在 Linux 系统的广袤世界里,高效的程序调试与对进程概念的深刻理解,宛如鸟之双翼、车两轮,是开发者不可或缺的重要技能。GDB(GNU Debugger)作为一款强大的调试工具,犹如开发者手中的精密仪器,能够深入程序内部,精准定位问题所在。而进程概念则是理解 Linux 操作系统运行机制的核心,它关乎资源分配、任务调度等诸多关键环节。本文将引领大家深入探索 GDB 调试工具与进程概念,通过丰富的实例和详细的解析,助力大家掌握这两项重要技能。


🏳️‍🌈预备

  • 程序的发布⽅式有两种, debug 模式和 release 模式, Linux gcc/g++ 出来的⼆进制程序,默认是 release 模式。

  • 要使⽤gdb调试,必须在源代码⽣成⼆进制程序的时候, 加上 -g 选项,如果没有添加,程序⽆法被编译

cpp 复制代码
$ gcc mycmd.c -o mycmd # 默认模式,不⽀持调试
$ file mycmd
mycmd: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically
linked, interpreter /lib64/ld-linux-x86-64.so.2,
BuildID[sha1]=82f5cbaada10a9987d9f325384861a88d278b160, for GNU/Linux
3.2.0, not stripped
$ gcc mycmd.c -o mycmd -g # debug模式
$ file mycmd
mycmd: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically
linked, interpreter /lib64/ld-linux-x86-64.so.2,
BuildID[sha1]=3d5a2317809ef86c7827e9199cfefa622e3c187f, for GNU/Linux
3.2.0, with debug_info, not stripped

🏳️‍🌈常见使用

  • 开始: gdb File
  • 退出: ctrl + d 或 quit 调试命令

这是要用到的两个文件,执行生成 myexe 文件,然后用 gdb 调试

cpp 复制代码
[wzy@VM-20-5-centos lesson11]$ cat code.c
#include <stdio.h>

int Sum(int s, int e){
    int sum = 0;
    int i = s;
    for(; i <= e; ++i){
        sum += i;
    }
    return sum;
}

int main(){
    printf("process is running\n");
    
    int start = 1;
    int end = 100;
    int result = Sum(start, end);

    printf("process has done, result: %d\n", result);
}
[wzy@VM-20-5-centos lesson11]$ cat Makefile
myexe:code.c
	gcc -o $@ $^ -g

.PHONY:clean
clean:
	rm -f myexe
[wzy@VM-20-5-centos lesson11]$ ll
total 20
-rw-rw-r-- 1 wzy wzy  324 Jan 17 15:54 code.c
-rw-rw-r-- 1 wzy wzy   64 Jan 17 16:02 Makefile
-rwxrwxr-x 1 wzy wzy 9688 Jan 17 16:02 myexe
  • l + 数字 :查看当前文件中以想要查找的行为中间行的上下10行
  • l + 字符 :效果同上
  • 回车 :gdb会记录最近的一条命令,直接回车会继续执行
  • b + 数字:在指定行添加断点,若当前行没有数据,会提示
  • info b :显示当前有哪些断点
  • d + 数字 :删除指定序号的断点

🏳️‍🌈常见技巧 - cgdb

先需要安装一下 cgdb - sudo tum install -y cgdb

cgdb的用法和gdb如出一辙,但是多了一个可视化界面,能够在调试的同时观察代码

cpp 复制代码
cgdb myexe

👥总结

本篇博文对 gdb_进程概念 做了一个较为详细的介绍,不知道对你有没有帮助呢

觉得博主写得还不错的三连支持下吧!会继续努力的~

相关推荐
SPC的存折12 分钟前
8、Ansible之Playbook---Roles
linux·服务器·ansible
Kira Skyler15 分钟前
BPF KPROBE编程中的ctx是什么?
linux
珠海西格电力24 分钟前
鄂尔多斯零碳产业园管理系统的核心功能解析
大数据·运维·人工智能·物联网·能源
爱学习的小囧28 分钟前
VCF 9.0+Harbor 搭建私有 AI 模型仓库(PAIS)超详细教程
服务器·人工智能·虚拟化·esxi8.0
春日见1 小时前
Tool文件夹:瑞士军刀库
运维·服务器·windows·深度学习·自动驾驶
AC赳赳老秦1 小时前
Windows 系统 OpenClaw 执行策略报错及管理员权限设置深度解析与实操指南
运维·人工智能·python·django·自动化·媒体·openclaw
Gofarlic_OMS2 小时前
SolidEdge专业许可证管理工具选型关键评估标准
java·大数据·运维·服务器·人工智能
三万棵雪松2 小时前
【Linux 物联网网关主控系统-Linux主控部分(三)】
linux·物联网·嵌入式linux
萝卜白菜。2 小时前
TongWeb7.0 集中管理heimdall配置文件说明
linux·运维·服务器
bingHHB2 小时前
金蝶云星空旗舰版 × 赛狐ERP:亚马逊卖家业财一体化的最后一公里
运维·数据库·集成学习