【linux】gdb

🔥个人主页Quitecoder

🔥专栏linux笔记仓

目录

01.gdb使用

  • 程序的发布方式有两种,debug模式和release模式
  • Linux gcc/g++出来的二进制程序,默认是release模式
  • 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

release版本不可被调试,debug版本可以,原因是,debug版本下编译器形成可执行程序的时候会给可执行程序添加调试信息

bash 复制代码
  1 myprocess-debug: myprocess.c
  2     gcc -std=c99 -o $@ $^ -g                                                                                          
  3 
  4 .PHONY: clean
  5 clean:
  6     rm -f myprocess-debug
bash 复制代码
readelf  -S myprocess-debug

readelf 是一个用来显示 ELF(Executable and Linkable Format)文件信息的工具。-S 选项用于显示 ELF 文件的节头部信息(section headers)。通过这个命令,你可以查看包含在 ELF 文件中的不同节(section),这些节可能包括代码段、数据段、符号表、字符串表等


c 复制代码
#include<stdio.h>
int AddToTarget(int a,int b)
{
    int sum=0;
    for(int i=a;i<=b;i++)
    {
        sum+=i;
    }
    return sum;
}
int main()
{
    printf("run begin...\n");
    int result=0;
    result=AddToTarget(1,100);
    printf("result:%d\n",result);
    printf("run end...\n");
    return 0;
}

gdb binFile 退出: ctrl + dquit 调试命令:

  • list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。


    list/l: l文件名:行号/函数名,I行号/函数名

list/l 函数名:列出某个函数的源代码。

  • r或run:运行程序。

  • break(b) 行号:在某一行设置断点

    break 函数名:在某个函数开头设置断点

    info break ( i b ):查看断点信息。

    delete(d) breakpoints:删除所有断点

    delete breakpoints n:删除序号为n的断点

    disable breakpoints:禁用断点

    enable breakpoints:启用断点

  • n 或 next:单条执行。

  • s或step:进入函数调用

  • finish:执行到当前函数返回,然后挺下来等待命令

  • print( p ):打印表达式的值,通过表达式可以修改变量的值或者调用函数

    display 变量名:跟踪查看一个变量,每次停下来都显示它的值

    undisplay(编号):取消对先前设置的那些变量的跟踪

  • continue(或c):从当前位置开始连续而非单步执行程序(运行到下一个断点)

  • until X行号:跳至X行

  • breaktrace(或bt):查看各级函数调用及参数

  • info(i) locals:查看当前栈帧局部变量的值

  • quit:退出gdb

相关推荐
欧米欧13 分钟前
解析Linux从umask位运算到粘滞位
linux
郝学胜-神的一滴25 分钟前
C++20模板元编程 04:变量模板 别名模板与模板Lambda实战
服务器·开发语言·数据结构·c++·程序人生
江屿风38 分钟前
【Linux系统】【Linux进程终止等待详解与程序替换机制初体验】流食般投喂
linux·运维·笔记·系统架构·centos·unix
螺蛳粉 螺蛳粉1 小时前
CentOS 7.9 自建 Yum 源服务器搭建指南
linux·服务器·centos
赋创小助手1 小时前
Qwen3.8-27B 本地推理 Benchmark 解析:llama.cpp、vLLM、SGLang 与长 Context 的性能差异
服务器·人工智能·大模型·qwen·vllm·sglang·context长度
fanxiaohui121381 小时前
2026符合上飞机标准的充电宝推荐南孚传应,质量稳定又安全
运维·服务器·人工智能·科技
国际云,接待1 小时前
云服务器跨厂商迁移怎么尽量不停机:用 rsync、MySQL binlog 和 DNS TTL 做双阶段切换
运维·服务器·mysql
Doris__HE1 小时前
【元脑服务器NF8260G7-NF8260M7技术规格分享】
运维·服务器·网络·数据库·性能优化
济南凡维1 小时前
Zebra Designer3试用文档
服务器·网络·zebra·打印机·斑马打印机
吴声子夜歌2 小时前
Shell编程实例——脚本编程的附加特性
linux·运维·shell