ICorDebugCode3::GetReturnValueLiveOffset 方法

对于指定的 IL 偏移量,获取应放置断点的本机偏移量,以便调试程序可以从函数获取返回值。

语法

HRESULT GetReturnValueLiveOffset(  
    [in] ULONG32 ILoffset,  
    [in] ULONG32 bufferSize,
    [out] ULONG32 *pFetched,
    [out, size_is(buffersize), length_is(*pFetched)] ULong32 pOffsets[]  
);  

参数

ILoffset
IL 偏移量。 它必须是函数调用站点,否则函数调用将失败。

bufferSize
可用于存储 pOffsets 的字节数。

pFetched
指向实际返回的偏移量的指针。 通常,其值为1,但单个 IL 指令可以映射到多个 CALL 程序集指令。

pOffsets
本机偏移量的数组。 通常,pOffsets 包含单个偏移量,尽管单个 IL 指令可以映射到多个 CALL 程序集指令。

备注

此方法与 ICorDebugILFrame3::GetReturnValueForILOffset 方法配合使用,以获取返回引用类型的方法的返回值。 将函数调用站点的 IL 偏移量传递给此方法会返回一个或多个本机偏移量。 然后,调试程序可以在函数中的这些本机偏移量上设置断点。 当调试程序遇到其中一个断点时,你可以将传递给此方法的同一 IL 偏移量传递给 ICorDebugILFrame3::GetReturnValueForILOffset 以获取返回值。 然后,调试程序应清除它设置的所有断点。

警告

ICorDebugCode3::GetReturnValueLiveOffsetICorDebugILFrame3::GetReturnValueForILOffset 仅允许你获取引用类型的返回值信息。 不支持从值类型(即派生自 ValueType 的所有类型)检索返回值信息。

函数将返回下表中显示的 HRESULT 值。

HRESULT 说明
S_OK 成功。
CORDBG_E_INVALID_OPCODE 给定的 IL 偏移量站点不是调用指令,或该函数返回 void
CORDBG_E_UNSUPPORTED 给定的 IL 偏移量是正确的调用,但返回类型不支持获取返回值。

ICorDebugCode3::GetReturnValueLiveOffset 方法仅适用于基于 x86 的系统和 AMD64 系统。

要求

平台:请参阅系统要求

标头:CorDebug.idl、CorDebug.h

库:CorGuids.lib

.NET Framework 版本:自 4.5.1 起可用

请参阅