中止陷阱:C 程序中的 6 个

Posted

技术标签:

【中文标题】中止陷阱:C 程序中的 6 个【英文标题】:Abort trap: 6 in C Program 【发布时间】:2015-06-06 17:01:39 【问题描述】:

我有一个 C 程序。它编译成功并且运行良好,但在 main() 结束时,它崩溃并给我一个 Abort trap: 6 错误。

我对如何调试它一无所知。关于 SO 与 Abort trap: 6 错误有关的几个问题对我没有多大帮助。

一般来说,可能是什么问题?

(我现在不愿意发布我的源代码,因为它大约有 400 行代码。如果我知道要查找什么,我会发布一段特定的代码。)

注意:我在终端中使用GCC 运行程序。但是当我在 XCode 中运行它时,我的程序崩溃了,如果我停止它,它会以 exit code: 9 结束。

这是lldb的输出:

Process 1191 stopped
* thread #1: tid = 0xa759, 0x00007fff8fa08286 libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
    frame #0: 0x00007fff8fa08286 libsystem_kernel.dylib`__pthread_kill + 10
libsystem_kernel.dylib`__pthread_kill + 10:
-> 0x7fff8fa08286:  jae    0x7fff8fa08290            ; __pthread_kill + 20
   0x7fff8fa08288:  movq   %rax, %rdi
   0x7fff8fa0828b:  jmp    0x7fff8fa03c53            ; cerror_nocancel
   0x7fff8fa08290:  retq 

【问题讨论】:

你是如何运行程序的?这看起来不像是普通的 Unix shell 错误消息。 @Barmar 使用GCC 编译它并在OSx 上运行它。 你是如何运行程序的?从终端窗口,还是使用 XCode?​​span> 你试过用-g编译并用gdb运行吗?还;你在处理信号吗? 尝试使用 valgrind 【参考方案1】:

可能在写入不属于您的内存!但是你知道没有代码我们不能说更多,但我明白你为什么不发布它。

Similar question

我建议再次仔细阅读您的代码,并注意您的计数器和索引(变量名为 ij 等等)。


Exit code 9 闻起来像是信号处理出错了。检查this问题。

【讨论】:

还有其他网页可以发布大代码,然后在此处放置代码链接。 是的@user3629249,但最好在这里发布代码,因为链接可能会失效。

以上是关于中止陷阱:C 程序中的 6 个的主要内容,如果未能解决你的问题,请参考以下文章

C中的“中止陷阱:6”错误?

C中的中止陷阱6错误

我无法按字母顺序对文件中的“姓氏”进行排序:我得到中止陷阱:6

从 OS X 中的 main 返回但不在 linux 上时中止陷阱 6

使用 memset() 获取“中止陷阱 6”

编码SLL时获取中止陷阱6