【发布时间】:2021-03-10 19:13:53
【问题描述】:
我想知道如何解析 COR_PRF_FUNCTION_ARGUMENT_INFO 结构,该结构提供给 SetEnterLeaveFunctionHooks3WithInfo 函数的回调方法。
据我了解,该结构包含一组内存地址,其中包含函数参数值的位置。关于这个结构的信息可以在这里找到:https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/profiling/cor-prf-function-argument-info-structure
我还解析了函数的元数据,以确定提供给函数的参数数量和每个参数的类型。我使用了IMetaDataImport接口的GetMethodProps函数。
我不知道下一步该做什么,我将如何继续使用 COR_PRF_FUNCTION_ARGUMENT_INFO 结构获取每个参数的实际值?我是否需要确定每个参数的大小来计算每个参数的内存地址的偏移量? 感谢您的帮助
【问题讨论】:
-
这是一个可变大小的数组,大小存储在
numRanges中。每个参数都包含一个指针和一个大小,请参阅docs。你目前有什么代码可以让你的回调到位? -
@Charlieface 感谢您的回复。我了解结构是如何构建的,如果这引起了一些混乱,我很抱歉。但是假设在 range[0].startAddress 处,我如何知道每个参数在该地址读取多少字节?
-
我想你还是需要知道参数类型是什么,不知道你从哪里得到这些信息
-
@Charlieface 我也有参数类型。我只需要弄清楚每个参数类型的大小吗?不知道我会怎么做。
-
sizeof?您使用 C# 还是 C++ 工作?
标签: .net clr clr-profiling-api clrprofiler