如何调试守护进程

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

如何调试守护进程

[b]ctrl+c就停住了 [/b]
如何调试守护进程

realy?

如何调试守护进程

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

如何调试守护进程

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

如何调试守护进程

高手们 怎么调呀 哭了

如何调试守护进程

呀,这就哭了?

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

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

[b]我太谢谢你的回帖了 [/b]



#include <unistd.h>
#include <signal.h>
#include <sys/param.h>
#include <sys/types.h>
#include <sys/stat.h>

#include <stdio.h>
#include <time.h>
void init_daemon(void);//守护进程初始化函数
main(){
FILE *fp;
time_t t;
init_daemon();//初始化为Daemon
while(1)//每隔一分钟向test.log报告运行状态
{
sleep(2);//睡眠一分钟
if((fp=fopen("test.log","a"))>=0){
t=time(0);
fprintf(fp,"Im here at %sn",asctime(localtime(&t)) );
fclose(fp);
}

}

}

void init_daemon(void)
{
int pid;
int i;
if(pid=fork())
exit(0);//是父进程,结束父进程
else if(pid<0)
exit(1);//fork失败,退出//是第一子进程,后台继续执行
setsid();//第一子进程成为新的会话组长和进程组长//并与控制终端分离
if(pid=fork())
exit(0);//是第一子进程,结束第一子进程
else if(pid<0)
exit(1);//fork失败,退出//是第二子进程,继续//第二子进程不再是会话组长
for(i=0;i<NOFILE;++i)//关闭打开的文件描述符
close(i);
chdir("/cygdrive/e/tmp");//改变工作目录到/tmpumask(0);//重设文件创建掩模
return;
}


//nIm here at Tue Jan 11 12:21:06 2011
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值