#include <signal.h>
#include <iostream>
#include <VDream/Log/VLogStdout.h>
#include <VDream/Common/VThread.h>
__thread VThread* g_thread = NULL;
void sig_handler(int signum)
{
LOG_ERROR("sig_handler() received signal %d\n", signum);
LOG_ERROR("name=%s tag=%d", qPrintable(g_thread->name), g_thread->tag);
throw "hahaha";
sleep(10);
//exit(0);
}
using namespace std;
class MyThread : public VThread
{
public:
virtual void run()
{
try {
g_thread = this;
tag = 5555;
LOG_INFO("111");
tag = 666;
int a = 5;
LOG_INFO("222");
tag = 7777;
int b = 0;
LOG_INFO("333");
tag = 8888;
int c = a / b;
LOG_INFO("444");
cout << c << endl;
} catch (...) {
cout << "ooooooooooooops\n";
}
}
};
int main()
{
VLog::changeLog(new VLogStdout);
LOG_INFO("main beg");
signal(SIGFPE, sig_handler);
MyThread thread;
g_thread = &thread;
thread.run();
//thread.open();
//thread.close();
LOG_INFO("main end");
}