如何查找谁启动了线程???

jxb_memory 2009-11-30 09:06:53
我写了一个MFC的后台程序,现在发现有时会增加多余的线程而且导致CPU占用率非常高,经调试基本确认不是我写的代码启动的线程,那么我如何才能调试出来是什么代码启动的线程呢???
...全文
104 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
togoblime 2009-11-30
  • 打赏
  • 举报
回复
运行Process Explorer,再启动你的程序,选中你的进程在右键菜单中打开"Properties"对话框,切换到"Threads",再点击"Stack"就能监视到线程的调用过程了(只能看到CreateThread之后的堆栈)。
或者用WinDbg设置好符号路径,载入可执行文件,在命令行输入"bp kernel32!CreateThread"设置断点,可以看到比较详细的堆栈
jxb_memory 2009-11-30
  • 打赏
  • 举报
回复
不知道为什么“多余的线程怎么会导致CPU占用率非常高”才来问的,基本确定。
还没淹死的鱼 2009-11-30
  • 打赏
  • 举报
回复
多余的线程怎么会导致CPU占用率非常高呢?

你确定?
jxb_memory 2009-11-30
  • 打赏
  • 举报
回复
程序里面COM和Socket都有,没法单步调试,因为这个现象不是经常有的一般要经过好几天才出一回没发调试啊!哪位高人有什么高招没?
mengde007 2009-11-30
  • 打赏
  • 举报
回复
由于你用MFC;它内部经常会产生线程;比如说一个异步的socket;你只能一步一步跟踪到底层代码
wangk 2009-11-30
  • 打赏
  • 举报
回复
你用的某个组件创建的?比如说ADO之类的。
直接在CreateThread下断点试试看吧
chenyu2202863 2009-11-30
  • 打赏
  • 举报
回复
是不是你的主题给你远程创建的?

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧