c ++ - 无法解决SIGABRT

时间:2015-11-05 18:18:29

标签: c++ c++11 gdb sigabrt

我试图运行一个简单的代码,它编译,但当我尝试运行它我得到(核心倾销)错误。所以使用gdb来查看错误是什么。

代码:

#include <thread>
#include <iostream>
#include <stdio.h>


void gerar()
{
    printf("works\n");
}

int main()
{
    std::thread oi(gerar);
    printf("oi");

    return 0;
}

dgb msg:

Traceback (most recent call last):
  File "/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19-gdb.py", line 63, in <module>
    from libstdcxx.v6.printers import register_libstdcxx_printers
ImportError: No module named 'libstdcxx'
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff6fd6700 (LWP 4879)]
terminate called without an active exception

Program received signal SIGABRT, Aborted.
0x00007ffff7313cc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56  ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.

g ++ line:

g++ -c teste.cpp -pthread -std=c++11  
g++ teste.o -o teste -pthread -std=c++11

1 个答案:

答案 0 :(得分:3)

线程的析构函数:

  

如果* this有一个关联的线程(joinable()== true),则调用std :: terminate()。

这是你的情况。

oi.join();中致电main