系统相关
首页 > 系统相关> > Linux学习日记7——GDB调试

Linux学习日记7——GDB调试

作者:互联网

黑马程序员-Linux系统编程_哔哩哔哩_bilibiliicon-default.png?t=M276https://www.bilibili.com/video/BV1KE411q7ee?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click

目录

一、C程序代码

二、GDB调试

2.1 编译文件

2.2 进入GDB调试

2.3 GDB中打印源码

2.4 设置断点

2.5 运行程序

2.6 继续执行

2.7 查看变量值

2.8 继续执行到下一个断点

2.9 退出


一、C程序代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 10

char *str = "hello";
int var = 0;
 
void init_arr(int *arr, int len)
{   
    int i = 0; 
    for(i = 0; i < len; i++) { 
        arr[i] = rand() % 20 + 1;
    }
}

void select_sort(int *arr, int len)
{
    int i, j, k, temp;

    for(int i = 0; i < len - 1; i++) {
        k = i;
        for(j = i+1; j < len; j++) {
            if(arr[k] > arr[j])
                k = j;
        }
        if(i != k) {
            temp = arr[i];
            arr[i] = arr[k];
            arr[k] = temp;
        }
    }
}

void print_arr(int *arr, int len)
{
    int i;

    for(i = 0; i < len; i++)
    {
        printf("arr[%d] = %d\n", i, arr[i]);
    }
}

int main(void)
{
    int arr[N];
    char *p = "hello";

    srand(time(NULL));

    init_arr(arr, N);
    print_arr(arr, N);
    select_sort(arr, N);

    printf("-----after sort----");
    print_arr(arr, N);

    return 0;
}

 

二、GDB调试

2.1 编译文件

# -g 包含调试信息
gcc gdbtest.c -o gdbtest -g

2.2 进入GDB调试

gdb gdbtest

 

2.3 GDB中打印源码

# 使用 list 或者简写 l

# list(l) 1 表示从第一行开始打印
# list(l) 继续显示上面没显示完的代码

 

2.4 设置断点

# 使用 break 或者简写 b
# break(b) 行号

 

2.5 运行程序

# 使用 run 或者简写 r

 

2.6 继续执行

# next 越过函数 简写为 n
# s 执行函数
# 系统函数只能用 n 跳过

 

2.7 查看变量值

# print 输出变量值 简写为 p
# print(p) 变量值

2.8 继续执行到下一个断点

# continue

 

2.9 退出

# quit

 

标签:arr,int,len,GDB,Linux,print,简写,调试
来源: https://blog.csdn.net/HuanBianCheng27/article/details/123609045