免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2448 | 回复: 3
打印 上一主题 下一主题

[函数] 为什么不可调试精灵进程? [复制链接]

论坛徽章:
7
天蝎座
日期:2013-09-28 10:45:42双子座
日期:2013-10-16 16:27:09射手座
日期:2013-10-23 10:21:32处女座
日期:2014-09-17 16:44:332015年亚洲杯之巴林
日期:2015-04-09 17:28:01冥斗士
日期:2015-11-26 16:19:0015-16赛季CBA联赛之山东
日期:2018-03-02 23:59:31
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-04-23 18:01 |只看该作者 |倒序浏览
前一阵子在gdb调试程序时提示
  1. Starting program: /home/xxx
  2. [Thread debugging using libthread_db enabled]
  3. Detaching after fork from child process 30793.

  4. Program exited normally.
复制代码
不知原因。

今天在阅读资料的时候,发现精灵进程不可调试。

于是
  1. (gdb) b main
  2. Breakpoint 1 at 0x40258a: file comm_interface.pc, line 42.
  3. (gdb) r
  4. Starting program: /home/ghyyt/src/yinjietong/bank/comm_interface
  5. [Thread debugging using libthread_db enabled]

  6. Breakpoint 1, main (argc=1, argv=0x7fffffffe3d8 "\b\347\377\377\377\177") at comm_interface.pc:42
  7. 42          if ((cmd = strrchr(&argv[0], '/')) == NULL)
  8. (gdb) n
  9. 43              cmd = &argv[0];
  10. (gdb) n
  11. 50          daemonize(cmd);
  12. (gdb) n
  13. Detaching after fork from child process 30865.

  14. Program exited normally.
复制代码
发现原因,在执行了精灵进程函数后,gdb就不可以调试了。请问是什么原因?

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2013-04-23 18:13 |只看该作者
先给子进程的代码设好断点, 然后set follow-fork-mode child, 然后r。

论坛徽章:
0
3 [报告]
发表于 2013-04-23 18:15 |只看该作者
因为默认是跟踪父进程
在gdb里做如下设置即可:
set follow-fork-mode child

论坛徽章:
7
天蝎座
日期:2013-09-28 10:45:42双子座
日期:2013-10-16 16:27:09射手座
日期:2013-10-23 10:21:32处女座
日期:2014-09-17 16:44:332015年亚洲杯之巴林
日期:2015-04-09 17:28:01冥斗士
日期:2015-11-26 16:19:0015-16赛季CBA联赛之山东
日期:2018-03-02 23:59:31
4 [报告]
发表于 2013-04-24 08:49 |只看该作者
thanks:wink:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP