Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 遍历变量并查找特定类型实例的技术_C#_Reflection_Iteration - Fatal编程技术网

C# 遍历变量并查找特定类型实例的技术

C# 遍历变量并查找特定类型实例的技术,c#,reflection,iteration,C#,Reflection,Iteration,我想在我的过程中遍历内存中的变量(通过插件动态加载),并查找特定类型的实例 以前我可以找到特定类型(或内存中的所有类型)。我可以创建类型的实例,我可以获取作为不同类型字段包含的实例,但我不知道如何“搜索”特定类型的实例。一种方法是使用windbg和sos。你可以!带有-type标志的dumpheap。您可以通过解析的输出自动执行Windbg!DumpHeap命令,然后将指针强制转换为应用程序中的托管类型。答案确实表明您需要将调试器附加到应用程序。如果这不是一个选项,您需要进一步详细说明问题,以提

我想在我的过程中遍历内存中的变量(通过插件动态加载),并查找特定类型的实例


以前我可以找到特定类型(或内存中的所有类型)。我可以创建类型的实例,我可以获取作为不同类型字段包含的实例,但我不知道如何“搜索”特定类型的实例。

一种方法是使用windbg和sos。你可以!带有-type标志的dumpheap。

您可以通过解析的输出自动执行Windbg!DumpHeap命令,然后将指针强制转换为应用程序中的托管类型。答案确实表明您需要将调试器附加到应用程序。如果这不是一个选项,您需要进一步详细说明问题,以提供更简单的解决方案(例如,要求对象在中央集合中注册,…),如果不选择附加到进程,windbg/sos技术也将解决进程内存转储问题。请确保您现在就获得了体系结构。我这样做只是为了发现,所以我可以附加一个调试器,但基本上我想获得对它们的引用,这样我就可以对它们调用方法。这很危险(但可能)。您需要将指向托管对象的指针强制转换回对象引用。但请注意,您可能会收到随机ExecutionEngineeException,因为如果在此期间GC确实运行了对象指针,则对象指针已被更改。本文旨在查找漏洞,同时演示了您需要的所有sos命令。作者正在使用cdb。您可以使用cdb或windbg,只要加载sos,这并不重要。