gdb命令详解

0. 简述

GDB(GNU symbolic debugger)简单地说就是一个调试工具。它是一个受通用公共许可证即GPL保护的自由软件。

一般来说,GDB主要帮助你完成下面四个方面的功能:

1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。

2、可让被调试的程序在你所指定的调置的断点处停住。

3、当程序被停住时,可以检查此时你的程序中所发生的事。

4、你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG

正因为GDB是linux下最常使用的程序调试器,因此,在我们面试各大公司的时候,使用GDB调试程序,又是相对比较容易被问到的。因为对GDB的了解,最能直观反映应聘者对Linux环境编程是否熟悉。因此我们结合海量面经,提取出了几个最容易被问到的GDB使用问题,供大家参考。

  • 使用gdb调试程序的前提是什么
  • 使用gdb如何在程序中逐步调试
  • 使用gdb如何在程序中打断点
  • 使用gdb如何查看函数调用栈

1 Linux命令之GDB

1.1 使用规则及高频选项
gdb [选项] 程序名称
-p 	#指定一个pid,调试正在运行的程序
1.2 高频调试指令
命令名称 说明 简写使用示例
run 直接运行程序 r -l -p
start 开始逐步调试 start -l -p
list 显示调试行附近代码 l main.c:10
next 执行当前行代码,进入下一行,
若当前行是函数则直接将函数运行完毕
n
step 执行当前行代码,进入下一行,
若当前行是函数,则进入函数进行调试。
s
continue 从当前停止的位置开始继续运行 c
break 打断点,程序运行到断点位置停下来 b main.c:10
info break 查看断点信息 i b
delete s删除断点 d 2
backtrace 查看程序运行调用栈信息 backtrace
print 打印变量数据 p var_name
quit 退出调试 q
run [运行参数]
start [运行参数]
list 
1.3 调试代码
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
int gval = 100;
int mycopy(char *buf)
{
   
    strcpy(buf, "我爱我的祖国");
    return gval;
}
int main()
{
   
    int i = 0;

    printf("gval:%d\n", gval);
    for (i = 0; i < 10; i++) {
   
        gval += i;
        printf("gval:%d\n", gval);
    }   
    char *buf = "我爱我家";
    printf("%s\n", buf);
    buf = NULL;
    mycopy(buf)
  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值