API Microsoft.Diagnostics.NETCore.Client
Cette section décrit les API de la bibliothèque de client de diagnostics.
Classe DiagnosticsClient
public DiagnosticsClient
{
public DiagnosticsClient(int processId);
public EventPipeSession StartEventPipeSession(
IEnumerable<EventPipeProvider> providers,
bool requestRundown = true,
int circularBufferMB = 256);
public Task<EventPipeSession> StartEventPipeSessionAsync(
IEnumerable<EventPipeProvider> providers,
bool requestRundown,
int circularBufferMB = 256,
CancellationToken token = default);
public void WriteDump(
DumpType dumpType,
string dumpPath,
bool logDumpGeneration = false);
public async Task WriteDumpAsync(
DumpType dumpType,
string dumpPath,
bool logDumpGeneration,
CancellationToken token);
public void AttachProfiler(
TimeSpan attachTimeout,
Guid profilerGuid,
string profilerPath,
byte[] additionalData = null);
public void SetStartupProfiler(
Guid profilerGuid,
string profilerPath);
public void ResumeRuntime();
public void SetEnvironmentVariable(
string name,
string value);
public Dictionary<string, string> GetProcessEnvironment();
public static IEnumerable<int> GetPublishedProcesses();
}
Constructeur
public DiagnosticsClient(int processId);
Crée une instance de DiagnosticsClient
pour un processus .NET compatible exécuté avec l’ID de processus de processId
.
processID
: ID de processus de l’application cible.
Méthodes StartEventPipeSession
public EventPipeSession StartEventPipeSession(
IEnumerable<EventPipeProvider> providers,
bool requestRundown = true,
int circularBufferMB = 256);
public Task<EventPipeSession> StartEventPipeSessionAsync(
IEnumerable<EventPipeProvider> providers,
bool requestRundown,
int circularBufferMB = 256,
CancellationToken token = default);
Démarre une session de suivi EventPipe à l’aide des fournisseurs et paramètres donnés.
providers
:IEnumerable
deEventPipeProvider
s permettant de lancer le suivi.requestRundown
:bool
spécifiant si les événements du fournisseur d’arrêt du runtime de l’application cible doivent être demandés.circularBufferMB
:int
spécifiant la taille totale de la mémoire tampon circulaire utilisée par le runtime de l’application cible lors de la collecte d’événements.token
(pour la surcharge Asynchrone) : jeton permettant de surveiller les requêtes d’annulation.
public EventPipeSession StartEventPipeSession(EventPipeProvider provider, bool requestRundown = true, int circularBufferMB = 256)
public Task<EventPipeSession> StartEventPipeSessionAsync(EventPipeProvider provider, bool requestRundown, int circularBufferMB = 256, CancellationToken token = default)
provider
:EventPipeProvider
permettant de lancer le suivi.requestRundown
:bool
spécifiant si les événements du fournisseur d’arrêt du runtime de l’application cible doivent être demandés.circularBufferMB
:int
spécifiant la taille totale de la mémoire tampon circulaire utilisée par le runtime de l’application cible lors de la collecte d’événements.token
(pour la surcharge Asynchrone) : jeton permettant de surveiller les requêtes d’annulation.
Remarque
Les événements d’arrêt contiennent des charges utiles qui peuvent être nécessaires dans le cadre d’une analyse ultérieure, comme la résolution des noms de méthodes des exemples de threads. Sauf si vous ne le souhaitez pas, nous vous recommandons de définir cette valeur requestRundown
sur true. Dans les applications volumineuses, cette opération peut prendre un certain temps.
Méthode WriteDump
public void WriteDump(
DumpType dumpType,
string dumpPath,
bool logDumpGeneration=false);
Demande une image mémoire pour le débogage post-mortem de l’application cible. Le type d’image mémoire peut être spécifié à l’aide de l’énumération DumpType
.
dumpType
: type d’image mémoire à demander.dumpPath
: chemin d’accès à l’image mémoire destinée à l’écriture.logDumpGeneration
: si la valeur est définie surtrue
, l’application cible écrit les journaux de diagnostic pendant la génération de l’image mémoire.
public void WriteDump(DumpType dumpType, string dumpPath, WriteDumpFlags flags)
Demande une image mémoire pour le débogage post-mortem de l’application cible. Le type d’image mémoire peut être spécifié à l’aide de l’énumération DumpType
.
dumpType
: type d’image mémoire à demander.dumpPath
: chemin d’accès à l’image mémoire destinée à l’écriture.flags
: indicateurs de journalisation et de rapport d’incident. Sur les runtimes antérieurs à la version 6.0, seul LoggingEnabled est pris en charge.
public async Task WriteDumpAsync(DumpType dumpType, string dumpPath, bool logDumpGeneration, CancellationToken token)
Demande une image mémoire pour le débogage post-mortem de l’application cible. Le type d’image mémoire peut être spécifié à l’aide de l’énumération DumpType
.
dumpType
: type d’image mémoire à demander.dumpPath
: chemin d’accès à l’image mémoire destinée à l’écriture.logDumpGeneration
: si la valeur est définie surtrue
, l’application cible écrit les journaux de diagnostic pendant la génération de l’image mémoire.token
: jeton permettant de surveiller les requêtes d’annulation.
public async Task WriteDumpAsync(DumpType dumpType, string dumpPath, WriteDumpFlags flags, CancellationToken token)
Demande une image mémoire pour le débogage post-mortem de l’application cible. Le type d’image mémoire peut être spécifié à l’aide de l’énumération DumpType
.
dumpType
: type d’image mémoire à demander.dumpPath
: chemin d’accès à l’image mémoire destinée à l’écriture.flags
: indicateurs de journalisation et de rapport d’incident. Sur les runtimes antérieurs à la version 6.0, seul LoggingEnabled est pris en charge.token
: jeton permettant de surveiller les requêtes d’annulation.
Méthode AttachProfiler
public void AttachProfiler(
TimeSpan attachTimeout,
Guid profilerGuid,
string profilerPath,
byte[] additionalData=null);
Demande d’attachement d’un ICorProfiler à l’application cible.
attachTimeout
:TimeSpan
après lequel l’attachement sera abandonné.profilerGuid
:Guid
du ICorProfiler à attacher.profilerPath
: chemin d’accès à la dll ICorProfiler à attacher.additionalData
: données supplémentaires facultatives qui peuvent être transmises au runtime pendant l’attachement du profileur.
Méthode SetStartupProfiler
public void SetStartupProfiler(
Guid profilerGuid,
string profilerPath);
Définit un profileur comme profileur de démarrage. Cette commande n’est valide que lorsque le runtime est suspendu au démarrage.
profilerGuid
:Guid
du profileur à attacher.profilerPath
: chemin d’accès au profileur à attacher.
Méthode ResumeRuntime
public void ResumeRuntime();
Indique au runtime de reprendre l’exécution après une pause au démarrage.
Méthode SetEnvironmentVariable
public void SetEnvironmentVariable(
string name,
string value);
Définit une variable d’environnement dans le processus cible.
name
: nom de la variable d'environnement à définir.value
: valeur de la variable d’environnement à définir.
GetProcessEnvironment
public Dictionary<string, string> GetProcessEnvironment()
Obtient toutes les variables d’environnement et leurs valeurs à partir du processus cible.
Méthode GetPublishedProcesses
public static IEnumerable<int> GetPublishedProcesses();
Obtient un IEnumerable
d’ID de processus pour tous les processus .NET actifs qui peuvent être attachés.
Classe EventPipeProvider
public class EventPipeProvider
{
public EventPipeProvider(
string name,
EventLevel eventLevel,
long keywords = 0,
IDictionary<string, string> arguments = null)
public string Name { get; }
public EventLevel EventLevel { get; }
public long Keywords { get; }
public IDictionary<string, string> Arguments { get; }
public override string ToString();
public override bool Equals(object obj);
public override int GetHashCode();
public static bool operator ==(Provider left, Provider right);
public static bool operator !=(Provider left, Provider right);
}
Constructeur
public EventPipeProvider(
string name,
EventLevel eventLevel,
long keywords = 0,
IDictionary<string, string> arguments = null)
Crée une instance de EventPipeProvider
avec le nom du fournisseur, EventLevel, les mots clés et les arguments donnés.
Nom de la propriété
public string Name { get; }
Obtient le nom du fournisseur.
Propriété EventLevel
public EventLevel EventLevel { get; }
Obtient le EventLevel
de l’instance donnée de EventPipeProvider
.
Propriété Keywords
public long Keywords { get; }
Obtient une valeur qui représente le masque de bits pour les mots clés de la EventSource
.
Arguments (propriété)
public IDictionary<string, string> Arguments { get; }
Obtient un IDictionary
de chaînes de paires clé-valeur représentant des arguments facultatifs à transmettre à la EventSource
qui représente le EventPipeProvider
donné.
Remarques
Cette classe est immuable car, à partir de .NET Core 3.1, EventPipe ne permet pas de modifier la configuration d’un fournisseur pendant une session EventPipe.
Classe EventPipeSession
public class EventPipeSession : IDisposable
{
public Stream EventStream { get; }
public void Stop();
}
Cette classe représente une session EventPipe en cours. Elle est immuable et sert de descripteur à une session EventPipe du runtime donné.
Propriété EventStream
public Stream EventStream { get; }
Obtient un Stream
qui peut être utilisé pour lire le flux d’événements.
Stop, méthode
public void Stop();
Arrête la session EventPipe
donnée.
Énumération DumpType
public enum DumpType
{
Normal = 1,
WithHeap = 2,
Triage = 3,
Full = 4
}
Représente le type d’image mémoire qui peut être demandé.
Normal
: comprend uniquement les informations nécessaires à la capture des rapports de tous les appels de procédure existants pour tous les threads existants au sein d’un processus. Mémoire et informations de tas GC limitées.WithHeap
: comprend les tas GC et les informations nécessaires à la capture des rapports d’appels de procédure pour tous les threads existants au sein d’un processus.Triage
: comprend uniquement les informations nécessaires à la capture des rapports de tous les appels de procédure existants pour tous les threads existants au sein d’un processus. Mémoire et informations de tas GC limitées. Certains contenus connus pour contenir des informations potentiellement sensibles, telles que des chemins de module complets, seront supprimés. Bien que cela soit destiné à atténuer certains cas d’exposition de données sensibles, il n’existe aucune garantie que cette fonctionnalité de rédaction est suffisante pour se conformer à toute loi ou norme particulière concernant la confidentialité des données.Full
: comprend toute la mémoire accessible dans le processus. Les données de mémoire brute sont incluses à la fin, afin que les structures initiales puissent être mappées directement sans les informations de mémoire brute. Cette option peut générer un fichier d’image mémoire très volumineux.
Exceptions
Les exceptions levées à partir de la bibliothèque sont de type DiagnosticsClientException
ou d’un type dérivé.
public class DiagnosticsClientException : Exception
UnsupportedCommandException
public class UnsupportedCommandException : DiagnosticsClientException
Cette exception peut être levée lorsque la commande n’est pas prise en charge par la bibliothèque ou par le runtime du processus cible.
UnsupportedProtocolException
public class UnsupportedProtocolException : DiagnosticsClientException
Cette exception peut être levée lorsque le runtime du processus cible n’est pas compatible avec le protocole IPC de diagnostic utilisé par la bibliothèque.
ServerNotAvailableException
public class ServerNotAvailableException : DiagnosticsClientException
Cette exception peut être levée lorsque le runtime n’est pas disponible pour les commandes IPC de diagnostic, par exemple au début du démarrage de l’exécution avant que le runtime soit prêt pour les commandes de diagnostic, ou lorsque le runtime est arrêté.
ServerErrorException
public class ServerErrorException : DiagnosticsClientException
Cette exception peut être levée lorsque le runtime répond en envoyant une erreur à une commande donnée.