gpt4 book ai didi

c# - 观察 exe\dll 使用的资源

转载 作者:可可西里 更新时间:2023-11-01 13:26:17 25 4
gpt4 key购买 nike

我如何观察特定进程以了解它在运行时使用了哪些资源(例如声音、图片、光标和注册表项)?

我必须使用 C# 以编程方式执行此操作(例如使用 Windows API 或任何第三方库)。

感谢任何帮助。谢谢。

最佳答案

我会坚持使用性能计数器。有的是为了

  • 内存
  • GDI 句柄(位图、字体等)
  • 处理(文件、注册表项、事件、互斥量、套接字、进程...)
  • Windows(用户对象)

使用性能计数器无法确定确切的类型,但如果您正在泄漏某些内容,它可以给您提示。如果您想知道哪些句柄,您可以使用 SysInternals 中的句柄,这将为您提供一个很好的每个进程输出,您可以解析。

如果你想修复句柄泄漏,那么你需要使用调试器 (Windbg) 并使用 !handle 扩展来开始跟踪每个句柄的所有获取/释放调用堆栈,这样你就可以得到后面的句柄的统计信息已分配但尚未释放。

您的问题有点过于宽泛,因为解决资源泄漏的确切策略取决于泄漏的性质。 EasyHook 是一个很好的解决方案,可以跟踪所有资源获取/释放调用并自动记录它们。

如果你想使用例如自动化调试器C# 你可以使用 http://wmemoryprofiler.codeplex.com/它基本上是 Windbg 的托管包装器,它甚至允许您 self 调试您的应用程序。

如果你只是想学习如何获取各种资源的分散数据的原理,你应该阅读 Process Hacker 的代码。

关于c# - 观察 exe\dll 使用的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14785933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com