• gdb调试使用教程


    假设当前目录下有5个文件。

    文件内容如下:

    // add.c
    int myadd(int a, int b)
    {
        return a+b;
    }
    
    // mul.c
    int mymul(int a, int b)
    {
        return a*b;
    }
    
    // div.c
    int mydiv(int a, int b)
    {
        return a/b;
    }
    
    // x.h
    int myadd(int a, int b);
    int mymul(int a, int b);
    int mydiv(int a, int b);
    
    // x.c
    #include <stdio.h>
    #include "x.h"
    
    int main()
    {
        int a = 100;
        int b = 12;
        int add, mul, div;
        add = myadd(a, b);
        mul = mymul(a, b);
        div = mydiv(a, b);
        
        printf("%d + %d = %d
    ", a, b, add);
        printf("%d * %d = %d
    ", a, b, mul);
        printf("%d / %d = %d
    ", a, b, div);
        
        return 0;
    }

    1. 使用gcc编译文件,注意要加上-g参数。(-g : 在执行代码中包含调试信息)

    2. 使用gdb调试可执行文件x,进入调试页面

    gdb x

    常用命令:

    (gdb)list:查看原代码(list-n,从第n行开始查看代码。list+ 函数名:查看具体函数,list main 返回主函数),简写l

    (gdb)break+num:在第num行设置断点,简写b。b+函数名,给函数设置断点

    (gdb)run:重新开始运行文件, 简写r

    (gdb)print:打印值及地址, 简写p

    (gdb)next:单步调试(逐过程,函数直接执行),简写n

    (gdb)step:单步调试(逐语句:跳入自定义函数内部执行),简写s

    (gdb)quit:退出gdb,简写q

     

  • 相关阅读:
    WinForm微信扫码登录
    php字符串只替换一次
    laravel6 文档
    MYSQL批量修改
    semanage command not found
    SUID、SGID、SBIT
    passwd命令
    redhat配置yum软件仓库
    mount: no medium found on /dev/sr0 找不到介质
    CentOS7 防火墙(firewall)的操作命令
  • 原文地址:https://www.cnblogs.com/FengZeng666/p/12411629.html
Copyright © 2020-2023  润新知