gdb调试检查某个指针是否为空


gdb调试检查某个指针是否为空

gdb调试查看某个具体变量的值

先使用gdb --args 命令运行程序

gdb --args是 GDB(GNU Debugger)调试工具中的一个命令选项。它用于在启动要调试的程序时,将命令行参数传递给被调试的程序。这在调试需要接收特定命令行参数才能正确运行和测试的程序时非常有用。

假设你有一个 C 程序my_program,它从命令行接收两个整数参数并对它们进行一些计算,比如一个简单的加法程序,代码可能如下:

#include <stdio.h>
int main(int argc, char *argv[]) {
    if (argc!= 3) {
        printf("Usage: %s <num1> <num2>\n", argv[0]);
        return 1;
    }
    int num1 = atoi(argv[1]);
    int num2 = atoi(argv[2]);
    int result = num1 + num2;
    printf("The result is: %d\n", result);
    return 0;
}

正常情况下,你可以在终端中这样运行这个程序:./my_program 5 3,它会输出The result is: 8。
但是当你想调试这个程序并且传递命令行参数时,就可以使用gdb --args。
具体步骤如下:
首先,使用

gdb --args my_program 5 3

命令。这会启动 GDB 并将my_program作为要调试的目标程序,同时将5和3作为命令行参数传递给my_program。

二、使用print 查看具体变量的值

2.1 、找到出错的线程

如果你的程序是多线程的,你需要切换到发生错误的线程。
在这里插入图片描述
根据上面的图像提供的信息,可能是线程8。

(gdb) thread 8

2.2、打印变量

分别打印两个变量

(gdb) print cam1_info->e_intrinsic
(gdb) print cam2_info->e_intrinsic

发现第二个变量为为nullptr
在这里插入图片描述
则在程序中对这个参数进行非法校验,防止再发生coredump

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翟羽嚄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值