Debugging 生产调试:是否有一种比WinDbg更少的干扰方式?

Debugging 生产调试:是否有一种比WinDbg更少的干扰方式?,debugging,clr,windbg,Debugging,Clr,Windbg,我想知道是否有一种侵入性更小的方法来分析生产环境中运行的、受管理的流程 较少干扰的含义: 附加调试器时没有执行延迟 在获取基本统计信息(如运行线程)时,不会延迟执行 在Java世界中,JDK有这样一个工具部分。我想知道在.NET世界中是否有类似的工具 该工具应回答以下问题: 线程池参数是什么?与Windbg中的“!threadpool”相同 我当前运行的线程的调用堆栈是什么(是的,您可以从Java工具获得它:) 基本堆分析,例如ABC类型的对象数量 有什么想法吗 Alex如果我理解正确,

我想知道是否有一种侵入性更小的方法来分析生产环境中运行的、受管理的流程

较少干扰的含义:

  • 附加调试器时没有执行延迟
  • 在获取基本统计信息(如运行线程)时,不会延迟执行
在Java世界中,JDK有这样一个工具部分。我想知道在.NET世界中是否有类似的工具

该工具应回答以下问题:

  • 线程池参数是什么?与Windbg中的“!threadpool”相同
  • 我当前运行的线程的调用堆栈是什么(是的,您可以从Java工具获得它:)
  • 基本堆分析,例如ABC类型的对象数量
有什么想法吗


Alex

如果我理解正确,您不想实际调试程序,只想获得一些基本信息。在这种情况下,可能就足够了。

这取决于您要调试的内容。WinDbg是Windows调试的重锤,适用于调试从内核扩展到其他任何东西

如果您只想调试一个程序,大多数人只需要使用VisualStudio,它将连接到正在运行的进程


然而,@oefe在这里可能有一头公牛。当大多数人说“调试器”时,他们想要回溯和断点等等。在Java中,您需要事先安排好附加那种调试器。Windbg或visual studio(-debugexe)都比这更方便。

正如Oefe所说,您可以从Process Explorer获得许多信息,包括所有线程的堆栈。此外,.NET运行时还提供了一些有用的工具,可以为您提供一些见解。如果您有特殊需要,您的应用程序可以发布自己的计数器。

这里是使用非侵入式方式进行的生产调试,

我发现在生产环境中Visual Studio可能非常侵入式,虽然WinDbg由于其简单的副本部署和对脱机调试的强大支持而更易于使用。@Brian Rasmussen没有争论。至于VS,他的文章实际上是关于生产环境的。我想了解一些Win32进程以外的信息。然而,“托管流程资源管理器”可能非常接近。我会更详细地编辑这个问题。