【发布时间】:2013-06-03 09:31:21
【问题描述】:
我在多线程环境中运行一个程序,它有时会失败。当我用 gdb 尝试它时,它会出现以下错误。
程序收到信号 SIGSEGV,分段错误。
[切换到线程 0x7fff677b700 (LWP 2777)] 0x00007ffff7aa42b9 in c/mgmt.c:479 479 处的 process_incomplete_rows (resultset=0x507950) c/mgmt.c: 没有这样的文件或目录。
mgmt.c 文件在那里,此代码对于某些选项工作正常,但有 2 或 3 个选项会给出此错误。这个错误的原因可能是什么。它在编译或 coe 中的错误?还是在访问某些数据时出错?
【问题讨论】:
-
在您的问题中添加代码,分段错误是运行时错误而不是编译时间,您可能会在编译时收到警告
-
您可以在运行应用程序时使用
Valgrind获取更多信息,并为自己找到一种回溯的方法:(spin.atomicobject.com/2013/01/13/exceptions-stack-traces-c)。Valgrind会告诉你你在哪种情况下(写到对象的末尾,...)。
标签: c++ c linux multithreading unix