程序运行CPU过高,线程调用堆栈如下,版本为3.4.5,可以定位到哪个函数吗
ntdll.dll!NtDelayExecution+0xa
ntdll.dll!NtDelayExecution+0xa
KERNELBASE.dll!SleepEx+0xaa
HPSocket4C_U.dll!SYS_GetSocketLocalAddress+0x49d5
HPSocket4C_U.dll!SYS_GetSocketLocalAddress+0x6e8c
HPSocket4C_U.dll!SYS_GetSocketLocalAddress+0x6bc5
HPSocket4C_U.dll!SYS_GetSocketLocalAddress+0x8323
HPSocket4C_U.dll!SYS_GetSocketLocalAddress+0x81bd
HPSocket4C_U.dll!SYS_GetSocketLocalAddress+0x10863
HPSocket4C_U.dll!SYS_GetSocketLocalAddress+0x108f7
KERNEL32.dll!BaseThreadInitThunk+0x22
ntdll.dll!RtlUserThreadStart+0x34
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你这个问题好奇怪,可以进群来详细讲讲。
SleepEx的话,一般应该是在等io完成例程被触发,比如说ReadFileEx这玩意。但是如果这个线程占用CPU过高,SleepEx应该是没有挂起当前线程的,而且线程有大量IO,且频繁的user/kernel模式切换,就会导致cpu占用过高
你用windbg设置下pdb,attach你的进程,用~tid切换到这个线程,然后kb一下就可以看到完整的函数call stack了
怎么来定位HPSocket4C_U.dll!SYS_GetSocketLocalAddress+0x49d5调用函数呀
猜测:
是不是线程数量过多或者锁死了?
是C#程序吗?