首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c写的程序被Killed,如何了?有调试过程

2012-02-25 
c写的程序被Killed,怎么了?有调试过程我的服务端程序出现问题了。。。。一段时间后会自动Killed调试过程如下。r

c写的程序被Killed,怎么了?有调试过程
我的服务端程序出现问题了。。。。一段时间后会自动Killed
调试过程如下。


root@peer1:~# gdb ./server 
GNU gdb (GDB) 7.1-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /root/server...done.
(gdb) handle SIGKILL nostop nopass
Signal StopPrintPass to programDescription
SIGKILL NoYesNoKilled
(gdb) r
Starting program: /root/server 
[Thread debugging using libthread_db enabled]
[New Thread 0xb7d6eb70 (LWP 30307)]
第1个客户IP:120.36.140.182
转发给服务器测试的消息--服务器测试 (13:49:54)
1
转发给服务器测试的消息--服务器测试 (13:49:56)
2
转发给服务器测试的消息--服务器测试 (13:49:57)
2
转发给服务器测试的消息--服务器测试 (13:49:58)
3
转发给服务器测试的消息--服务器测试 (13:50:0)
4
转发给服务器测试的消息--服务器测试 (13:50:3)
5
转发给服务器测试的消息--服务器测试 (13:50:4)
6
转发给服务器测试的消息--服务器测试 (13:50:5)
7
转发给服务器测试的消息--服务器测试 (13:50:5)
8
转发给服务器测试的消息--服务器测试 (13:50:6)
9
转发给服务器测试的消息--服务器测试 (13:50:8)
10
转发给服务器测试的消息--服务器测试 (13:50:9)
11
转发给服务器测试的消息--服务器测试 (13:50:11)
12
转发给服务器测试的消息--服务器测试 (13:50:14)
13
转发给服务器测试的消息--服务器测试 (13:50:17)
14
转发给服务器测试的消息--服务器测试 (13:50:18)
15
[New Thread 0xb756eb70 (LWP 30319)]
第2个客户IP:120.36.140.182
转发给服务器测试的消息--服务器测试 (13:51:24)
?????
转发给那一角的消息--服务器测试 (13:51:24)
?????
转发给服务器测试的消息--那一角 (13:51:43)
ok
转发给那一角的消息--那一角 (13:51:43)
ok
转发给服务器测试的消息--服务器测试 (13:51:54)
asd
转发给那一角的消息--服务器测试 (13:51:54)
asd
转发给服务器测试的消息--那一角 (13:54:46)
sdfasdf
转发给那一角的消息--那一角 (13:54:46)
sdfasdf
转发给服务器测试的消息--服务器测试 (13:54:51)
asdfasdfasdfsdafasdf
转发给那一角的消息--服务器测试 (13:54:51)
asdfasdfasdfsdafasdf
转发给服务器测试的消息--那一角 (13:55:0)
asdfasdf
转发给那一角的消息--那一角 (13:55:0)
asdfasdf
转发给服务器测试的消息--服务器测试 (13:55:8)
asdfasdfasf
转发给那一角的消息--服务器测试 (13:55:8)
asdfasdfasf
(在这里大概休息了5分钟不去动他,也没从客户端发消息过来。。。。过了5分钟左右就出现问题了。。。。)
[Thread 0xb756eb70 (LWP 30319) exited]
[Thread 0xb7d6eb70 (LWP 30307) exited]

Program terminated with signal SIGKILL, Killed.
The program no longer exists.
(gdb) bt
No stack.
(gdb) 


[解决办法]
特供调试多线程使用

C/C++ code
#include <stdio.h>#include <stdlib.h>#include <string.h>#ifdef WIN32    #include <windows.h>    #include <io.h>#else    #include <unistd.h>    #include <sys/time.h>    #include <pthread.h>    #define  CRITICAL_SECTION   pthread_mutex_t    #define  _vsnprintf         vsnprintf#endif//Log{#define MAXLOGSIZE 100000000#define ARRSIZE(x) (sizeof(x)/sizeof(x[0]))#include <time.h>#include <sys/timeb.h>#include <stdarg.h>char logfilename1[]="MyLog1.log";char logfilename2[]="MyLog2.log";char logstr[16000];char datestr[16];char timestr[16];char mss[4];CRITICAL_SECTION cs_log;FILE *flog;#ifdef WIN32void Lock(CRITICAL_SECTION *l) {    EnterCriticalSection(l);}void Unlock(CRITICAL_SECTION *l) {    LeaveCriticalSection(l);}#elsevoid Lock(CRITICAL_SECTION *l) {    pthread_mutex_lock(l);}void Unlock(CRITICAL_SECTION *l) {    pthread_mutex_unlock(l);}#endifvoid LogV(const char *pszFmt,va_list argp) {    struct tm *now;    struct timeb tb;    if (NULL==pszFmt||0==pszFmt[0]) return;    if (-1==_vsnprintf(logstr,ARRSIZE(logstr),pszFmt,argp)) logstr[ARRSIZE(logstr)-1]=0;    ftime(&tb);    now=localtime(&tb.time);    sprintf(datestr,"%04d-%02d-%02d",now->tm_year+1900,now->tm_mon+1,now->tm_mday);    sprintf(timestr,"%02d:%02d:%02d",now->tm_hour     ,now->tm_min  ,now->tm_sec );    sprintf(mss,"%03d",tb.millitm);    printf("%s %s.%s %s",datestr,timestr,mss,logstr);    flog=fopen(logfilename1,"a");    if (NULL!=flog) {        fprintf(flog,"%s %s.%s %s",datestr,timestr,mss,logstr);        if (ftell(flog)>MAXLOGSIZE) {            fclose(flog);            if (rename(logfilename1,logfilename2)) {                remove(logfilename2);                rename(logfilename1,logfilename2);            }            flog=fopen(logfilename1,"a");            if (NULL==flog) return;        }        fclose(flog);    }}void Log(const char *pszFmt,...) {    va_list argp;    Lock(&cs_log);    va_start(argp,pszFmt);    LogV(pszFmt,argp);    va_end(argp);    Unlock(&cs_log);}//Log}int main(int argc,char * argv[]) {    int i;#ifdef WIN32    InitializeCriticalSection(&cs_log);#else    pthread_mutex_init(&cs_log,NULL);#endif    for (i=0;i<10000;i++) {        Log("This is a Log %04d from FILE:%s LINE:%d\n",i, __FILE__, __LINE__);    }#ifdef WIN32    DeleteCriticalSection(&cs_log);#else    pthread_mutex_destroy(&cs_log);#endif    return 0;} 

热点排行