Joy*_*Joy 5 c segmentation-fault
我遇到了有线分段故障.我正在使用Eclipse CDT在C中开发一个软件.当在终端上运行我的程序(Ubuntu 10,64bits)时,它只报告"分段错误".但是,当我在Eclipse中使用gdb进行调试时,它会结束并且结果是正确的.
我知道分段错误可能有很多原因.我很抱歉我无法显示我的代码,因为我不知道问题出在哪里......
但是有人可以帮助我吗,有没有可能发生的情况就像我的情况一样:终端上的分段故障,而调试时却很好?非常感谢.
谢谢,所有.我会花一些时间学习valgrind.我只是通过realloc()替换malloc()来修复bug.呼叫之后是两个memcpy.这是什么原因?这是代码段:
bwa_seq_t *merge_seq (bwa_seq_t *s1, bwa_seq_t *s2) {
ubyte_t *seq1, *seq2, *tmp;
if (!s1 || !s2)
return 0;
seq1 = s1->seq;
seq2 = s2->seq;
tmp = (ubyte_t*) calloc (sizeof(ubyte_t), (s2->len + s1->len + 1));
memcpy(tmp, seq1, sizeof(ubyte_t) * s1->len);
memcpy(&tmp[s1->len], seq2, sizeof(ubyte_t) * s2->len);
s1->len += s2->len;
tmp[s1->len] = '\0';
s1->seq = tmp;
return s1;
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙解释一下原因吗?
Lau*_*nt' 10
请尝试以下步骤:
输入ulimit -c unlimitedxterm(这允许创建core/postmorterm文件)
启动程序(让它崩溃):核心文件现在应该出现在目录中.
使用启动调试器 gdb <yourprogram> <corefile>
类型bt在gdb的提示,看它做了什么行崩溃.
(可选)纠正错误.
如果您知道如何从终端崩溃它,您可以创建一个核心文件并检查它崩溃的点,如下所示:
$ ulimit -c unlimited # to create a corefile
$ yourprogram
...
crash # this will create file "core" in the current directory
$ gdb yourprogram core # shows the state at the moment of the crash
Run Code Online (Sandbox Code Playgroud)
关于该主题的问题: