linux c strace gdb 调试

本文详细介绍了如何使用GDB在Linux环境下进行程序调试,包括编译时添加 `-g` 参数、两种启动GDB的方式、设置断点(按行、按函数)、运行及检查变量值。此外,还讲解了删除、禁用和启用断点的方法,以及查看断点信息的命令。通过实例展示了如何在特定行设置断点并观察程序执行流程。
摘要由CSDN通过智能技术生成

linux c strace gdb 调试

https://blog.csdn.net/cusi77914/article/details/107113677

linux gdb的详细用法 运行与断点(一)

https://blog.csdn.net/Z_Dream_ST/article/details/77840733
gdb是调试程序,跟踪问题的一个非常好的手段,下面将详细的进行介绍它的具体用法

下面以gdb_test.c程序为例介绍

#include <stdio.h>
 
int func()
{
    int p = 0;
    int q = 0;
    for(p = 0; p < 5; p++)
    {
        q++;
        printf("p = %d\n", p);
        printf("q = %d\n", q);
    }
    return 0;
}
 
int main()
{
    int i = 1;
    i = i + 1;
    printf("func= %s, line= %d, i= %d\n", __func__, __LINE__, i);
    func();
    i++;
    printf("func= %s, line= %d, i= %d\n", __func__, __LINE__, i);
    return 0;
}
 

1, 首先介绍怎么用gdb运行程序

用gdb编译程序时,首先在编译程序时加-g。

以上面的程序为例进行编译

gcc gdb_test.c -o gdb_test -g

有两种运行用法,一是在编译成功后输入gdb + 编译后的文件名

二是在命令行中先输入gdb,按回车,再输入file + 编译后的文件
在这里插入图片描述
这两种方法选择其中一个就可以。

然后输入run命令就可以将程序运行起来了,简写 r
2 在程序中打断点

使用break进行打断点 ,简写为b

可以对某一行进行打断点 例:对程序的第三行进行打断点 b 3

如果是多个文件,可以对某个文件的某一行打断点, 例:对gdb_test.c的第三行打断点 b gdb_test.c:3

可以对某个函数进行打断点 例:对本程序中func()函数打断点 b func

同理也可以对多个文件中的某一个文件的函数打断点,例: b gdb_test.c:func

例如对程序的第20行进行打断点 b 20
在这里插入图片描述
打完断点后,后显示一行内容,分别是第几个断点,在哪个文件中,第多少行

打完断点后进行运行程序,输入r命令

程序运行到第20行会自动停止,此时程序运行到了第19行,第20行还没有运行到。

我们可以先用p命令,打印一下程序中i的值,下面的博客会讲到p的用法

在这里插入图片描述
此时i的值为2.

如果想让程序继续运行,我们可以使用 c 命令
在这里插入图片描述
如果想退出程序,可以使用 q 命令。

如果我们想删除某个断点,有两种方法:

1 delete 命令 简写d

delete break 删除所有的断点

delete break n 删除某个断点 n为断点号

2 clear 命令

clear 行号 删除设在某一行的断点

这两种删除断点的用法就在于一个是依据断点号删除,一个是依据行号删除

disable break n 禁用某个断点 n为断点号

enable break n 使能某个断点 n为断点号
在这里插入图片描述
在第19行和第20行分别设置断点,然后运行程序。

程序在19行停住后,接下来进行对第20行的断点禁用

然后继续运行程序,你会看到在第20行没有停下来。所以说明禁用第20行的断点已经生效了。

查看断点信息:info b 查看所有断点信息

info b n 查看第n个断点的信息

gdb 多进程 调试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值