免费注册 查看新帖 |

Chinaunix

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

[C] 如何获取自建线程的名称 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-08 13:02 |只看该作者 |倒序浏览
hi,all..

  请问有没有办法获取自已建立的线程的名称,是基于这样的想法:

  一个多线程程序,会出现内存越界,或free两次的错误,现在能收到 SIGSEGV,但也苦于不知是那个模块发出来的信号,根本无法解决问题.

  所以请问一下大家,linux 下有什么办法可能获取线程名称的程序(能根据ID找到不?)


谢谢大家

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2010-09-08 13:08 |只看该作者
线程有名称?
gdb看看core在哪了

论坛徽章:
0
3 [报告]
发表于 2010-09-08 13:23 |只看该作者
线程有名称?
gdb看看core在哪了
hellioncu 发表于 2010-09-08 13:08



    你好,程序运行于嵌入式平台,当然也能编译在虚拟机上运行,但用gdb 用什么命令可以看到 core 在哪呢?

   另:

  我是想问:  thread_careta(&thread_id,0,thread_handle,0) ...如果程序在这个线程里挂了,在捉到 SIGSEGV或其他信号时能不能把 thread_handle 也打印出来呢?

  或者能设置线程的某些属性做到吗?

谢谢。。

论坛徽章:
0
4 [报告]
发表于 2010-09-08 15:40 |只看该作者
另外:

  程序在虚拟机上跑基本上没问题,实际上在嵌入式平台跑,如果不对它进行操作,那么也不会死。。
但若是不断的对程序进行测试,则挂掉的可能性较高,而且每次挂还不是在同一个地方,或同一个时间挂。。
是不定时的,给调试带来无尽的郁闷,各位如有好的方法,或工具,请推荐,谢谢。。

补充:嵌入式平台没有GDB,虚拟机上跑得不出什么结论,所以才有顶楼的提问,谢谢。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2010-09-08 15:54 |只看该作者
回复 4# FightForWin


    可以给 嵌入式 平台 编译 一个gdb server,  

     然后用pc  连接上去, 就可以和在pc 上一样,  用gdb 调试了。

论坛徽章:
0
6 [报告]
发表于 2010-09-08 22:06 |只看该作者
以前有个获取进程名称的帖子,你找找,应该有所启发

论坛徽章:
0
7 [报告]
发表于 2010-09-09 17:02 |只看该作者
回复  FightForWin


    可以给 嵌入式 平台 编译 一个gdb server,  

     然后用pc  连接上去, 就 ...
goldenfort 发表于 2010-09-08 15:54



    已经用上了,希望能调出个结果来..

thanks..

论坛徽章:
0
8 [报告]
发表于 2010-09-09 17:11 |只看该作者
以前有个获取进程名称的帖子,你找找,应该有所启发
pengjianbokobe 发表于 2010-09-08 22:06



    进程的话,这样就行了吧
  ps -ef | grep process_id  ........


关于获程名称的,看来是不可行的了.系统在收到 SIGSEGV,或其他信号时,系统本身就无法确认是哪个线程传过来的.因为接收信号的线程不是发送信号的线程。

谢谢大家.

论坛徽章:
0
9 [报告]
发表于 2010-09-09 22:59 |只看该作者
进程的话,这样就行了吧
  ps -ef | grep process_id  ........


关于获程名称的,看来是不 ...
FightForWin 发表于 2010-09-09 17:11



    看了老关天,没弄明白LZ是什么问题。如果用gdb查看core文件,当前线程就是出问题的线程。用where或者backtrace命令就能列出core dump的断点及函数调用的层次及每层的堆栈内容,这些信息都可以直接帮助调试,有这么复杂吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP