免费注册 查看新帖 |

Chinaunix

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

gdb如何调试守护程序(守护程序多线程) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-10-16 09:40 |只看该作者 |倒序浏览
程序为一个守护程序,而守护程序又是一个多线程的.
我打算先set follow-fork-mode child,让gdb在程序fork之后直接调试子程序;然后
info threads,调试各个线程,但是在info threads时显示错误(Cannot find new threads: generic error).
另外我的gdb里不能set detach-on-fork,没有detach-on-fork.
gdb -v
GNU gdb Red Hat Linux (6.3.0.0-1.96rh)

(gdb) break main
(gdb) break (fork之后属于子程序的代码)
(gdb) set follow-fork-mode child
(gdb) r
(gdb) n
......
(gdb)info threads
Cannot find new threads: generic error

论坛徽章:
0
2 [报告]
发表于 2006-10-16 10:05 |只看该作者
呼唤高手.

论坛徽章:
0
3 [报告]
发表于 2006-10-16 10:11 |只看该作者
bt 下,看看是那个函数出了问题,再查查那个函数的输入输出,如果程序是你写的大体就知道在那了

应当同vc差不多吧,只是一个是图形的,爽点

论坛徽章:
0
4 [报告]
发表于 2006-10-16 10:15 |只看该作者

回复 3楼 xfly_t 的帖子

谢谢,应该不是函数的问题.

论坛徽章:
0
5 [报告]
发表于 2006-10-16 11:05 |只看该作者

回复 4楼 司令lovelinux 的帖子

就这样沉了吗?问题不知道说清楚没有.

论坛徽章:
0
6 [报告]
发表于 2006-10-16 11:16 |只看该作者
你可以让server在调试的时候不作为daemon,加个编译选项。
我就是这么偷懒的
多线程,我只知道printf与log。

论坛徽章:
0
7 [报告]
发表于 2006-10-16 11:42 |只看该作者

回复 6楼 mingyanguo 的帖子

是个好主意,不当做daemon来调试,直接就是调试多线程的问题了.非常感谢.

调试多线程我也正在看,也不是很熟.哪为大牛可以教教.呼唤大牛.

论坛徽章:
0
8 [报告]
发表于 2006-10-16 11:53 |只看该作者
调试多线程程序, 谈何容易.
在运行时态往往是由于同步,并发引起的问题,
在你调试时根本不会出现.
调试的方法不难,但在实际debug时,我觉得有效的却依然是printf 和 syslog...
完全赞同6楼的方法.

论坛徽章:
0
9 [报告]
发表于 2006-10-16 12:02 |只看该作者

回复 8楼 yulc 的帖子

那如果不考虑同步,并发等问题,
我用info threads , thread threadno等调试,
调试的时候线程老切换,有什么办法调试一个线程的时候其他的先停下来,只调试一个线程啊?

论坛徽章:
0
10 [报告]
发表于 2006-10-16 14:06 |只看该作者
只调试一个倒是可以,让其它的先停下来能不能就不知道了,不过可以在程序中让它休眠,可是不知道会不会对你的调试有无影响。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP