LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1449|回复: 8

在Linux下调试多线程程序有没有好的调试器?

[复制链接]
发表于 2005-5-18 00:05:43 | 显示全部楼层 |阅读模式
我用gdb调试的时候经常出问题。
最郁闷的就是调用pthread_cancel的时候就经常出错
有没有其他比较好的调试器可以用?
发表于 2005-5-18 03:21:50 | 显示全部楼层
gdb好像线程太多就会出问题,你调试的时候可以让线程数少一点,应该还是可以的。
回复 支持 反对

使用道具 举报

发表于 2005-5-18 09:37:50 | 显示全部楼层
我用mingw加dev-c++调试多线程,只要在每个线程都设置断点,调试的都会很好。
当然,你得用sleep这样的函数让某个线程睡眠,从而让scheduler发挥作用。
回复 支持 反对

使用道具 举报

发表于 2005-5-18 17:21:58 | 显示全部楼层
打印出来!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-18 22:25:22 | 显示全部楼层
Post by Tetris
gdb好像线程太多就会出问题,你调试的时候可以让线程数少一点,应该还是可以的。

在用gdb调试的时候如果调用pthread_cancel(), 我这边经常会收到signal SIG32。
这样程序后面的调试就没办法进行下去了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-18 22:32:21 | 显示全部楼层
Post by realtang
我用mingw加dev-c++调试多线程,只要在每个线程都设置断点,调试的都会很好。
当然,你得用sleep这样的函数让某个线程睡眠,从而让scheduler发挥作用。

怎样才能给每个线程设置断点?
如果设置了断点,每个线程运行到断点处不都会停下来的吗?
回复 支持 反对

使用道具 举报

发表于 2005-5-19 09:45:42 | 显示全部楼层
Post by icoming
怎样才能给每个线程设置断点?
如果设置了断点,每个线程运行到断点处不都会停下来的吗?

就是你创建的每个线程在合适的地方都可以标注为断点。然后走到一个断点,看看你想看的变量的值。依你的需要step几下,然后用c让它跑到下一个断点。通常这个断点在另外一个线程中。

不过我所说的是在单cpu上做的,多cpu的就没试过。
回复 支持 反对

使用道具 举报

发表于 2005-5-19 10:45:52 | 显示全部楼层
Post by icoming
在用gdb调试的时候如果调用pthread_cancel(), 我这边经常会收到signal SIG32。
这样程序后面的调试就没办法进行下去了

看来这问题郁闷你很久了,给你个办法,你试试看:
在gbd启动后,先在命令行输入:
set auto-solib-add 0
handle SIG32 nostop noprint pass
应该可以忽略掉SIG32造成的影响。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-21 15:02:37 | 显示全部楼层
确实可以的
谢谢了
解决了一个大问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表