CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  程序开发区

如何在gdb调试多线程?

楼主cuptbluesky(苦行僧)2005-04-21 19:16:24 在 Linux/Unix社区 / 程序开发区 提问

为什么调试时,只要其中一个线程退出后,gdb就无法再继续调试了呢?环境是solaris   9   intel,gcc   3.4.2,gdb   6.0,pthread,提示信息:sol_thread_fetch_registers:   td_ta_map_id2thr:   no   thread   can   be   found   to   satisfy   query,请问有人碰到过这种情况吗?或者你们又是如何调试的呢? 问题点数:100、回复次数:8Top

1 楼gdhyj(gdhyj)回复于 2005-04-22 09:00:27 得分 0

关注,我也想知道如何在gdb里调试多线程;Top

2 楼gettext(冰雪之崖)回复于 2005-04-23 08:07:13 得分 5

(gdb)   info   threads  
  (gdb)   threads   #  
   
  Top

3 楼shajie(笨鸟先飞)回复于 2005-04-23 11:22:16 得分 5

GDB调子进程是调不了的吧  
  调主进城应该是可以设中断的,和调单进城程序一样嘛  
   
  子进程的东西只有打印出来才知道哦Top

4 楼sharkhuang(走吧走吧!人总会慢慢长大~)回复于 2005-04-23 14:53:17 得分 5

attach   pidTop

5 楼cuptbluesky(苦行僧)回复于 2005-04-25 20:41:33 得分 0

谢谢,各位的关心,但是都没有解决我的问题。算了,我慢慢搞吧。  
  顺便再问一个问题:PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP这个宏是在那里定义的呢?我编译时怎么老报无定义呀,而且pthread.h里没有,是否有替换宏?Top

6 楼qfxx(秋风萧萧)回复于 2005-04-26 10:30:42 得分 85

我用的是rh   linux9  
  /usr/include/pthread.h中有如下定义  
  #   define   PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP   \  
      {0,   0,   0,   PTHREAD_MUTEX_RECURSIVE_NP,   __LOCK_INITIALIZER}  
  对于多线程程序,你可以定义你的断点是否在所有的线程上,或是在某个特定的线程。GDB很容易帮你完成这一工作。  
  break   <linespec>   thread   <threadno>  
          break   <linespec>   thread   <threadno>   if   ...  
                  linespec指定了断点设置在的源程序的行号。threadno指定了线程的ID,注意,这个ID是GDB分配的,你可以通过“info   threads”命令来查看正在运行程序中的线程信息。如果你不指定thread   <threadno>则表示你的断点设在所有线程上面。你还可以为某线程指定断点条件。如:          
                  (gdb)   break   frik.c:13   thread   28   if   bartab   >   lim  
          当你的程序被GDB停住时,所有的运行线程都会被停住。这方便你你查看运行程序的总体情况。而在你恢复程序运行时,所有的线程也会被恢复运行。那怕是主进程在被单步调试时。  
  Top

7 楼cuptbluesky(苦行僧)回复于 2005-04-27 09:41:40 得分 0

非常感谢qfxx,我的solaris9的pthread.h确实没有PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP   这个宏,但现在问题是PTHREAD_MUTEX_RECURSIVE_NP这个宏也没有,请问PTHREAD_MUTEX_RECURSIVE_NP跟PTHREAD_MUTEX_RECURSIVE是什么关系,又或者能否把你的PTHREAD_MUTEX_RECURSIVE_NP的定义贴出来呢?谢谢!Top

8 楼cuptbluesky(苦行僧)回复于 2005-04-27 11:22:26 得分 0

我在linux8下看了一下pthread.h,确实跟solaris9中的不同Top

相关问题

  • vc下的黑屏程序,如何调试多线程程序
  • 请问对于多线程的程序如何调试?
  • 如何单步跟踪、调试多线程的程序
  • 多线程调试问题????
  • 多线程调试问题????
  • 怎样调试多线程?
  • 如何调试多线程的代码? 多何调试网络代码 服务器的和客户端的
  • 多线程的程序怎么调试?
  • winsock 多线程 调试问题
  • 多线程调试的问题

关键词

  • 线程
  • 多线程
  • solaris
  • 断点
  • pthread
  • gdb
  • solaris9
  • recursive
  • np
  • 调试

得分解答快速导航

  • 帖主:cuptbluesky
  • gettext
  • shajie
  • sharkhuang
  • qfxx

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo