gdb调试 查找段错误

先设置 程序崩溃时的core文件产生

ulimit -c unlimited

http://t.csdnimg.cn/BBGBQ

记得改完之后重启虚拟机。

core文件:当程序发生异常(如段错误)并退出时,操作系统可以选择生成一个 core 文件。这个文件包含了程序崩溃时刻的内存映像,通常还包括了程序的状态信息,如寄存器值等。

调试 段错误 Segmentation fault (core dumped) 

调试段错误:
    1.根据给定链接设置系统允许生成core文件
    2.编译代码时加入-g选项
        gcc filename.c -g -lsqlite3 
    3.执行代码让代码产生段错误(会生成一个包含错误信息的core文件)
    4.使用gdb调试core文件
        gdb a.out core 
    5.可以直接看到产生段错误的代码的位置

变量定义

1. char *p = "helloworld";

•p 是一个指向字符串 "helloworld" 的指针。

2. char q[] = "helloworld";

•q 是一个字符数组,初始化为 "helloworld"。

sizeof 和 strlen 函数

•sizeof 返回变量或类型的字节数。

•strlen 返回字符串的长度(不包括终止符 '\0')。

分析

1. sizeof(p)

•p 是一个指针,无论是什么类型的指针,在 32 位系统中,指针的大小都是固定的,通常是 4 字节。因此,sizeof(p) 的结果是 4。

2. strlen(p)

•p 指向的字符串 "helloworld" 的长度是 10 个字符(不包括终止符 '\0')。

因此,strlen(p) 的结果是 10。

3. sizeof(q)

•q 是一个字符数组,包含 10 个字符和一个终止符 '\0'。在 C 语言中,数组的 sizeof 会返回整个数组的大小,包括终止符。因此,sizeof(q) 的结果是 11 字节。

4. strlen(q)•q 的字符串长度同样为 10 个字符(不包括终止符 '\0')。

因此,strlen(q) 的结果是 10。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值