ICorDebugILFrame3::GetReturnValueForILOffset, méthode
Obtient un objet « ICorDebugValue » qui encapsule la valeur renvoyée d’une fonction.
Syntaxe
HRESULT GetReturnValueForILOffset(
ULONG32 ILoffset,
[out] ICorDebugValue **ppReturnValue
);
Paramètres
ILOffset
Décalage IL. Consultez la section Notes.
ppReturnValue
Pointeur désignant l’adresse d’un objet d’interface « ICorDebugValue » qui fournit des informations sur la valeur renvoyée d’un appel de fonction.
Notes
Cette méthode est utilisée avec la méthode ICorDebugCode3::GetReturnValueLiveOffset pour obtenir la valeur renvoyée d’une méthode. Elle est particulièrement utile dans le cas de méthodes dont les valeurs renvoyées sont ignorées, comme dans les deux exemples de code suivants. Le premier exemple appelle la méthode Int32.TryParse, mais ignore la valeur renvoyée de la méthode.
private static int ConvertNumericString(string s)
{
int number;
if (s.Trim().Length == 8)
Int32.TryParse(s, System.Globalization.NumberStyles.HexNumber,
null, out number);
else
Int32.TryParse(s, out number);
return number;
}
Private Function ConvertNumericString(s As String) As Integer
Dim number As Integer
If s.Trim().Length = 8 Then
Int32.TryParse(s, System.Globalization.NumberStyles.HexNumber,
Nothing, number)
Else
Int32.TryParse(s, number)
End If
Return number
End Function
Le deuxième exemple illustre un problème beaucoup plus courant en matière de débogage. Étant donné qu’une méthode est utilisée comme argument dans un appel de méthode, sa valeur renvoyée n’est accessible que lorsque le débogueur suit la méthode appelée. Dans de nombreux cas, notamment lorsque la méthode appelée est définie dans une bibliothèque externe, cela n’est pas possible.
using System;
public class Example
{
private static Random rnd;
public static void Main()
{
rnd = new Random();
Example ex = new Example();
double value = MathLib.GetComputedValue(ex.GetInt(), ex.GetDouble());
Console.WriteLine(value);
}
private int GetInt()
{
return rnd.Next(11, 100);
}
private double GetDouble()
{
return rnd.NextDouble();
}
}
Public Module Example
Dim rnd As Random
Public Sub Main()
rnd = New Random()
Dim value As Double = MathLib.GetComputedValue(GetInt(), GetDouble())
Console.WriteLine(value)
End Sub
Private Function GetInt() As Integer
Return rnd.Next(11, 100)
End Function
Private Function GetDouble() As Double
Return rnd.NextDouble()
End Function
End Module
Si vous transmettez la méthode ICorDebugCode3::GetReturnValueLiveOffset à un site d’appel de fonction avec le décalage IL, elle renvoie un ou plusieurs décalages natifs. Le débogueur peut alors définir des points d’arrêt sur ces décalages natifs dans la fonction. Lorsque le débogueur atteint l’un des points d’arrêt, vous pouvez transmettre le décalage IL que vous avez transmis à cette méthode pour obtenir la valeur renvoyée. Le débogueur doit alors effacer tous les points d’arrêt qu’il a définis.
Avertissement
La méthode ICorDebugCode3::GetReturnValueLiveOffset et les méthodes ICorDebugILFrame3::GetReturnValueForILOffset
vous permettent d’obtenir des informations sur la valeur renvoyée pour les types de référence uniquement. La récupération d’informations sur la valeur renvoyée à partir de types valeur (autrement dit, tous les types qui dérivent de ValueType) n’est pas prise en charge.
Le décalage IL spécifié par le paramètre ILOffset
doit se trouver sur un site d’appel de fonction, et l’élément débogué doit être arrêté à un point d’arrêt défini sur le décalage natif renvoyé par la méthode ICorDebugCode3::GetReturnValueLiveOffset pour le même décalage IL. Si l’élément débogué n’est pas arrêté à l’emplacement approprié pour le décalage IL spécifié, l’API échoue.
Si l’appel de fonction ne renvoie pas de valeur, l’API échoue.
La méthode ICorDebugILFrame3::GetReturnValueForILOffset
est uniquement disponible sur les systèmes x86 et AMD64.
Spécifications
Plateformes : Consultez Configuration requise.
En-tête : CorDebug.idl, CorDebug.h
Bibliothèque : CorGuids.lib
Versions de .NET Framework : Disponibles depuis la version 4.5.1
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour