现在的位置: 首页 > 综合 > 正文

如何调试守护进程

2014年01月23日 ⁄ 综合 ⁄ 共 2441字 ⁄ 字号 评论关闭

原文地址::http://sealbird.iteye.com/blog/868220

 

如何调试守护进程
我写了个守护进程,可是如何用gdb 调试呢,我试了attach pid 方法 可是他不能让程序停住呀。

如何调试守护进程

ctrl+c就停住了
如何调试守护进程

realy?

如何调试守护进程

守护进程通常都要通过一个daemon_init()类似的函数将进程转换为守护进程,你可以先将这个转换注释,将其作为一个普通进程调试,调试好了之后再转换为守护进程

如何调试守护进程

不错当前我就是这么做的  可是 你不知道。。 守护进程有些其他的特性 如 程序中用了大量的 字符操作 而且屏幕输出过多的话 就造成了溢出 (一开始没有想把它作为守护进程)  这我就想知道 为什么 守护进程中 的标准输出会造成溢出(大量的)他为什么会把 要输出到一个不存在的stdout设备上的信息写到了内存里地址里面。。

如何调试守护进程

高手们 怎么调呀  哭了

如何调试守护进程

呀,这就哭了?

如何调试守护进程
正在运行的守护进程,可以用 gdb 进程程序名 进程程序pid 来调试

如果在gdb下运行调试子进程,在gdb 下运行命令,set follow-fork-mode child 。
如何调试守护进程

我太谢谢你的回帖了

C++代码
复制代码
 收藏代码
  1.  #include <unistd.h>   
  2.     #include <signal.h>   
  3.     #include <sys/param.h>   
  4.     #include <sys/types.h>   
  5.     #include <sys/stat.h>   
  6.   
  7.    #include <stdio.h>   
  8.    #include <time.h>   
  9. void init_daemon(void);//守护进程初始化函数  
  10. main(){   
  11.     FILE *fp;   
  12.     time_t t;   
  13.     init_daemon();//初始化为Daemon   
  14.     while(1)//每隔一分钟向test.log报告运行状态  
  15.     {   
  16.         sleep(2);//睡眠一分钟   
  17.         if((fp=fopen("test.log","a"))>=0){   
  18.             t=time(0);   
  19.             fprintf(fp,"Im here at %sn",asctime(localtime(&t)) );   
  20.             fclose(fp);   
  21.         }   
  22.        
  23.   }   
  24.   
  25. }   
  26.   
  27. void init_daemon(void)   
  28.     {   
  29.         int pid;   
  30.         int i;   
  31.         if(pid=fork())   
  32.             exit(0);//是父进程,结束父进程   
  33.         else if(pid<0)   
  34.             exit(1);//fork失败,退出//是第一子进程,后台继续执行   
  35.         setsid();//第一子进程成为新的会话组长和进程组长//并与控制终端分离
      
  36.         if(pid=fork())   
  37.             exit(0);//是第一子进程,结束第一子进程   
  38.         else if(pid<0)   
  39.             exit(1);//fork失败,退出//是第二子进程,继续//第二子进程不再是会话组长  
  40.         for(i=0;i<NOFILE;++i)//关闭打开的文件描述符  
  41.             close(i);   
  42.         chdir("/cygdrive/e/tmp");//改变工作目录到/tmpumask(0);//重设文件创建掩模  
  43.         return;   
  44.     }    
  45.   
  46.   
  47.     //nIm here at Tue Jan 11 12:21:06 2011  

抱歉!评论已关闭.