先设置 程序崩溃时的core文件产生
ulimit -c unlimited
记得改完之后重启虚拟机。
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。