Eclipse Oxygen 3a CDT调试多线程C程序:线程搜索与展开问题
解决方案:在Eclipse Oxygen 3a中调试多线程程序的线程搜索与展开技巧
针对你在RHEL 6上使用Eclipse Oxygen 3a调试大量线程C程序的问题,这里有两个实用的解决办法:
一、按线程启动函数快速定位目标线程
你不需要手动遍历线程列表,Eclipse的Debug视图自带针对线程属性的过滤/搜索功能,步骤如下:
- 显示线程启动函数列:
- 点击Debug视图右上角的小三角图标(视图菜单),选择「Customize View...」。
- 在弹出的对话框中,找到并勾选「Thread Function」选项,点击「OK」。此时Debug视图会新增一列,直接显示每个线程的启动函数名(也就是你传入
pthread_create()的函数)。 - 点击「Thread Function」列的标题,就能按函数名排序,所有使用同一启动函数的线程会被归在一起,快速定位。
- 使用视图内置的查找功能:
- 右键点击Debug视图中的进程根节点(最顶层的那个进程条目),选择「Find...」。
- 在查找框中输入你的线程启动函数名,点击「Find Next」,Eclipse会自动定位到对应的线程,并且自动展开该线程所在的节点(即使之前是折叠状态)。这个功能比普通的Ctrl-F更针对线程属性,能搜索到未展开的线程。
二、自动展开全部线程树以便复制内容
手动展开几百个线程确实不现实,你可以用以下两种快速展开的方式:
- 右键菜单一键展开:
- 选中Debug视图中的进程根节点,右键点击它,选择「Expand All」。这个选项会递归展开所有线程节点,一次性显示全部线程。
- 快捷键快速展开:
- 选中进程根节点后,按下
Ctrl+Shift+Num+(数字小键盘的加号键),同样可以递归展开所有子节点。如果你的键盘没有小键盘,试试Ctrl+Alt+Plus(主键盘的加号键),这个组合在Oxygen版本中也生效。
- 选中进程根节点后,按下
展开完成后,你可以选中整个线程树(比如从进程根节点开始,按Ctrl+A全选),然后复制内容到文本编辑器中进行搜索。
内容的提问来源于stack exchange,提问作者Chris Robison
相关产品推荐
相关产品推荐

