如何知道我的代码中的分段错误?
我试图学习C指针这些天,当我试图处理字符串和指针,并且链接列表我经常得到分割错误。 我无法解决这些问题(我无法找到发生分段错误的确切位置)。 我的问题是:
在我的代码中找到带有分段错误的行的工具是什么?
是否有任何材料(书或教程),您可以建议我了解有关分段故障,其原因和解决方案的所有问题?
gdb输出:
/home/sri/Documents/projects/practice/c/strings/a.out...done.
(gdb) run
Starting program: /home/sri/Documents/projects/practice/c/strings/a.out
Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2
Try: zypper install -C "debuginfo(build-id)=ecb8ef1a6904a2a3ec60a527f415f520c8636158"
Missing separate debuginfo for /lib64/libc.so.6
Try: zypper install -C "debuginfo(build-id)=bd1473e8e6a4c10a14731b5be4b35b4e87db2af7"
this is print1 char *p
Program received signal SIGSEGV, Segmentation fault.
0x00000000004005dd in do_print2 (p=0x7fffffffdda0) at string_orguments.c:16
16 strcat(p[0],"added");
(gdb)
由于操作系统检测到进程违反内存权限 - 对有效内存的无效访问提供: SIGSEGV
。
输出中:
Program received signal SIGSEGV, Segmentation fault.
0x00000000004005dd in do_print2 (p=0x7fffffffdda0) at string_orguments.c:16
16 strcat(p[0],"added");
在strcat(p[0],"added");
显示strcat(p[0],"added");
您正在尝试写入只读的内存 - 有效内存上的无效操作。
注意:第一步中的strcat
函数尝试从第二个参数字符串文字"added"
写入char a
在