我试图运行一个简单的代码,它编译,但当我尝试运行它我得到(核心倾销)错误。所以使用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
答案 0 :(得分:3)
线程的析构函数:
如果* this有一个关联的线程(joinable()== true),则调用std :: terminate()。
这是你的情况。
在oi.join();
中致电main
。