如何看到守护daemon进程的标准输出log

  在定位测试问题时,如到了一次坑!! daemon进程中 标准输出会dup到 /dev/null  ;所以 debug的时候看不到print结果,

结果有人写代码时 就是使用了print 系列函数, 现在出现问题不能重启,但是想知道 pintf 结果怎么处理呢??

可以gdb 来实现:

  1. gdb -p pid 某个进程
  2. gdb 执行(gdb) call close(1)
  3. (gdb)   call dup2(creat(“/var/log/debug.log”,0666),1)
  4. quit

之后进程的print输出会被打印到/var/log/debug.log

对了  调试完关闭输出,修改代码 !! 不要在干出这样的错误;

同时gdb 进去将进程的标出输出等 重新dup 到/dev/null

#!/bin/sh
LOG_FILE=”/var/log/debug_gdb.txt”

if [ ! -n “$1” ] ;then
echo -e “please input process pid”
exit
else
echo $LOG_FILE
fi

gdb -p $1 <<EOF
call close(1)
call dup2(creat(“/var/log/debug_gdb.txt”,0666),1)
quit
EOF

 

为啥总有人写好的debug_log 系列输出log 不用,非要用print!!!!!!!!!!!!

 

上一篇:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?


下一篇:docker pull加速