【发布时间】:2019-07-21 18:56:48
【问题描述】:
我正在使用 CLR 分析 API 并尝试使用 GetFunctionEnter3Info 函数从 COR_PRF_ELT_INFO 获取参数信息 (COR_PRF_FUNCTION_ARGUMENT_INFO)。
下面是我的代码。似乎 GetFunctionEnter3Info 函数没有设置 pArgumentInfo 的值。它始终具有空值。但是函数返回S_OK,表示成功。
我可能遗漏了什么。我应该如何从 COR_PRF_ELT_INFO 获取 COR_PRF_FUNCTION_ARGUMENT_INFO ?
PROFILER_STUB EnterStub(FunctionIDOrClientID functionId, COR_PRF_ELT_INFO eltInfo)
{
COR_PRF_FRAME_INFO *pFrameInfo = 0;
ULONG *pcbArgumentInfo = 0;
COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo = NULL;
corProfilerInfo->GetFunctionEnter3Info(functionId.functionID, eltInfo, pFrameInfo, pcbArgumentInfo, pArgumentInfo);
if(pArgumentInfo) {
//
}
}
【问题讨论】:
-
您是否在对
SetEventMask的调用中加入了COR_PRF_ENABLE_FUNCTION_ARGS? -
是的,我做到了。我启用了以下标志:COR_PRF_MONITOR_ENTERLEAVE,COR_PRF_ENABLE_FUNCTION_ARGS,COR_PRF_ENABLE_FUNCTION_RETVAL,COR_PRF_ENABLE_FRAME_INFO
-
该方法是否会出现在 ngen-ed 图像中? (例如 mscorlib)。我注意到您没有包含
COR_PRF_DISABLE_ALL_NGEN_IMAGES来禁用经过 ngen 处理的图像,也没有包含COR_PRF_USE_PROFILE_IMAGES来请求经过配置文件支持的经过 ngen 处理的图像。