求助 freetds 多线程问题?
代码太多,这里是关键代码,大家有疑问的地方可以让我贴出。
- C/C++ code
void thread_WaitRecv(){ char* sql; sql = malloc(sizeof(char)*50); memset(sql,0,sizeof(char)*50); sprintf(sql,"select count(*) from UpdateTable"); //查询数据库 dbcmd(dbprocess, sql); if(dbsqlexec(dbprocess) == FAIL) //执行后这里报错:[Inferior 1 (process 3108) exited with code 01],不知道这是什么情况?求助!!! { LOG("MS SQL:%s", "Query table 'isUpdateTable' error."); } DBINT result_code; char temCount[20]={0}; while ((result_code = dbresults(dbprocess)) != NO_MORE_RESULTS){ if (result_code == SUCCEED){ //设置缓冲区 dbbind(dbprocess, 1, CHARBIND, (DBINT)0, (BYTE*)temCount); while (dbnextrow(dbprocess) != NO_MORE_ROWS){ memcpy(count,temCount,20); memset(temCount,0,20); } } } }int main(void){ initmssql(); sleep(3);//开启线程检测表是否更新 pthread_t thread; int temp; memset(&thread,0,sizeof(thread)); /*创建线程*/ temp=pthread_create(&thread,NULL,(void *(*)(void *))thread_WaitRecv,NULL); LOG("pthread:%s", "线程穿件成功!");}[解决办法]
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。
进程意外退出会在当前目录下产生形如‘core.数字’的文件比如‘core.1234’
使用命令
gdb 运行程序名 core.数字
进入gdb然后使用bt命令
可以查看进程意外退出前函数调用的堆栈,内容为从上到下列出对应从里层到外层的函数调用历史。