【问题标题】:Attach to running windows process附加到正在运行的 Windows 进程
【发布时间】:2013-01-29 02:12:34
【问题描述】:

请在下方留言:

1) 附加到正在运行的本机 Windows 应用程序进程、获取线程列表并查看使用了哪些 DDL 的最简单方法是什么?

2) 附加到正在运行的 .NET 应用程序进程、获取线程列表并查看使用了哪些 DDL 的最简单方法是什么?

问候, 罗恩

【问题讨论】:

  • 我认为您的意思是 DLL,而不是 DDL,对吧?

标签: .net windows multithreading profiling internals


【解决方案1】:

您可以使用Tool Help Library,它可以让您更轻松地获取有关当前正在执行的应用程序的信息。

.Net examplesearch 查找更多信息。


System.Diagnostics 命名空间提供了允许您与系统进程、事件日志和性能计数器交互的类。

search了解更多

【讨论】:

  • 感谢您的回复。这似乎是问题的前 50%——使用了哪些线程。那么,查看线程正在使用哪些 DDL 的正确方法是什么?
  • 进程是资源的容器,包括DLL,映射到进程的虚拟地址空间。任何进程线程都可以访问整个地址空间和其中的任何 DLL。
  • 谢谢。我应该澄清我关于 DLL 的问题 - 有没有办法查看线程“目前”使用哪些 DLL,即从线程主动调用。
  • 您需要获取线程的堆栈跟踪并检查它当前使用的模块。
【解决方案2】:

您使用 Visual Studio 吗?如果是这样,您可以使用 Debug | 将 VS 附加到任何正在运行的进程。附加到进程菜单项。然后您可以进入进程并开始检查堆栈、线程、模块等。

如果您想深入研究,可以下载Windows SDK 并安装调试工具。这将为您提供 KD 和 WinDBG - 分别是控制台调试器和稍微友好的多窗格 MDI 样式调试应用程序。使用这些工具,您可以访问 Windows 中内置的大多数核心调试基础结构。

但是,请注意,这是为了装腔作势,需要大量的时间和精力才能掌握。要真正成为调试大师,您还需要深入了解内核和操作系统的架构以及许多核心操作系统数据结构。

因此,您可能会发现以下书籍很有用:

对于 .NET:

对于 Windows 和/或 .NET:

用于高级 Windows 内部调试

享受吧! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 2015-06-06
    • 2012-02-01
    • 2016-11-24
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    相关资源
    最近更新 更多