我需要知道.NET应用程序的哪个线程正在疯狂。它几乎消耗了整个CPU时间。
问题:
我的问题:
在“其他操作系统”上,我可以创建一个实时调用堆栈或启动转储,以查看某个线程是否处于无限循环中。 Windows 7和Windows是否存在这种可能性? .NET?
环境:
致以最诚挚的问候和感谢
七
答案 0 :(得分:2)
是的,这是可能的。
如果进程是在x86 OS上运行的x86进程或x64 OS上的x64,则只需要Process explorer。
如果该过程在x64操作系统上是x86,则会涉及更多内容。如果您需要此信息,请发表评论。
答案 1 :(得分:2)
我们使用Sam's standalone CPU analyzer来查看CPU以查看它正在做什么,生成文本文件。如果您有任何疑虑,此代码为released as OSS yesterday。
答案 2 :(得分:0)
您不需要安装visual studio来使用远程调试器,因为它可作为独立工具使用。你可以:
您还可以使用进程资源管理器来查看哪个线程占用了所有CPU时间,但这只会给您一个相对无用的线程句柄,而不是告诉您任何用处。
您可以做的另一件事是将物理机转换为VM映像,并在本地引导该VM映像进行测试。
答案 3 :(得分:0)
您可以使用(已安装的)perfmon.exe
工具来监控每个线程的CPU利用率。
您可能还希望应用程序创建一个日志文件,该文件将某种线程名称与您创建的每个线程相关联,以便您知道哪个线程是哪个。