【发布时间】:2013-07-18 21:12:10
【问题描述】:
这些天我正在尝试学习 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)
【问题讨论】:
-
@jxh
p实际上是char指针数组(来自相关问题)。 -
我不明白为什么“at string_orguments.c:16”没有告诉你错误在第16行?
-
感谢 Drew McGowen,这是第 16 行的错误。非常感谢
-
已修复...一切为您服务...
-
问题是您不应该寻找“分段错误”,这是症状,并且通常是相当不可预测的。 原因是内存管理不佳/损坏 - 查找。
标签: c pointers segmentation-fault