API de Microsoft.Diagnostics.NETCore.Client
En esta sección, se describen las API de la biblioteca cliente de diagnóstico.
Clase 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();
}
Constructor
public DiagnosticsClient(int processId);
Crea una instancia de DiagnosticsClient
para un proceso de .NET compatible que se ejecuta con el identificador de proceso de processId
.
processID
: identificador de proceso de la aplicación de destino.
Métodos 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);
Inicia una sesión de seguimiento de EventPipe con los proveedores y la configuración proporcionados.
providers
: un elementoIEnumerable
deEventPipeProvider
para iniciar el seguimiento.requestRundown
: un valorbool
que especifica si se deben solicitar eventos del proveedor de detención del entorno de ejecución de la aplicación de destino.circularBufferMB
: un elementoint
que especifica el tamaño total del búfer circular utilizado por el entorno de ejecución de la aplicación de destino al recopilar eventos.token
(para la sobrecarga asincrónica): token para supervisar solicitudes de cancelación.
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
: una claseEventPipeProvider
para iniciar el seguimiento.requestRundown
: un valorbool
que especifica si se deben solicitar eventos del proveedor de detención del entorno de ejecución de la aplicación de destino.circularBufferMB
: un elementoint
que especifica el tamaño total del búfer circular utilizado por el entorno de ejecución de la aplicación de destino al recopilar eventos.token
(para la sobrecarga asincrónica): token para supervisar solicitudes de cancelación.
Nota:
Los eventos de detención contienen cargas que pueden ser necesarias para el análisis posterior, como la resolución de nombres de método de ejemplos de subprocesos. A menos que sepa que no quiere esto, se recomienda establecer requestRundown
en true. En aplicaciones de gran tamaño, esto puede tardar un tiempo.
Método WriteDump
public void WriteDump(
DumpType dumpType,
string dumpPath,
bool logDumpGeneration=false);
Solicite un volcado de memoria para la depuración final de la aplicación de destino. El tipo del volcado de memoria se puede especificar mediante la enumeración DumpType
dumpType
: tipo del volcado de memoria que se va a solicitar.dumpPath
: ruta de acceso al volcado de memoria en el que se va a escribir.logDumpGeneration
: si se establece entrue
, la aplicación de destino escribirá los registros de diagnóstico durante la generación del volcado.
public void WriteDump(DumpType dumpType, string dumpPath, WriteDumpFlags flags)
Solicite un volcado de memoria para la depuración final de la aplicación de destino. El tipo del volcado de memoria se puede especificar mediante la enumeración DumpType
dumpType
: tipo del volcado de memoria que se va a solicitar.dumpPath
: ruta de acceso al volcado de memoria en el que se va a escribir.flags
: marcas de registro e informe de bloqueo. En los entornos de ejecución anteriores a la versión 6.0, solo se admite LoggingEnabled.
public async Task WriteDumpAsync(DumpType dumpType, string dumpPath, bool logDumpGeneration, CancellationToken token)
Solicite un volcado de memoria para la depuración final de la aplicación de destino. El tipo del volcado de memoria se puede especificar mediante la enumeración DumpType
dumpType
: tipo del volcado de memoria que se va a solicitar.dumpPath
: ruta de acceso al volcado de memoria en el que se va a escribir.logDumpGeneration
: si se establece entrue
, la aplicación de destino escribirá los registros de diagnóstico durante la generación del volcado.token
: token para supervisar las solicitudes de cancelación.
public async Task WriteDumpAsync(DumpType dumpType, string dumpPath, WriteDumpFlags flags, CancellationToken token)
Solicite un volcado de memoria para la depuración final de la aplicación de destino. El tipo del volcado de memoria se puede especificar mediante la enumeración DumpType
dumpType
: tipo del volcado de memoria que se va a solicitar.dumpPath
: ruta de acceso al volcado de memoria en el que se va a escribir.flags
: marcas de registro e informe de bloqueo. En los entornos de ejecución anteriores a la versión 6.0, solo se admite LoggingEnabled.token
: token para supervisar las solicitudes de cancelación.
Método AttachProfiler
public void AttachProfiler(
TimeSpan attachTimeout,
Guid profilerGuid,
string profilerPath,
byte[] additionalData=null);
Solicitud para adjuntar una interfaz ICorProfiler a la aplicación de destino.
attachTimeout
: un elementoTimeSpan
después del cual se anulará la conexión.profilerGuid
:Guid
de la interfaz ICorProfiler que se va a adjuntar.profilerPath
: ruta de acceso al archivo dll de la interfaz ICorProfiler que se va a conectar.additionalData
: datos adicionales opcionales que se pueden pasar al entorno de ejecución durante la conexión del generador de perfiles.
Método SetStartupProfiler
public void SetStartupProfiler(
Guid profilerGuid,
string profilerPath);
Establezca un generador de perfiles como generador de perfiles de inicio. Solo es válido emitir este comando cuando el entorno de ejecución se pausa durante el inicio.
profilerGuid
:Guid
para que se asocie el generador de perfiles.profilerPath
: ruta de acceso al generador de perfiles que se va a asociar.
Método ResumeRuntime
public void ResumeRuntime();
Indique al entorno de ejecución que reanude la ejecución después de pausarse al inicio.
Método SetEnvironmentVariable
public void SetEnvironmentVariable(
string name,
string value);
Establezca una variable de entorno en el proceso de destino.
name
: el nombre de la variable de entorno que se va a establecer.value
: el valor de la variable de entorno que se va a establecer.
GetProcessEnvironment
public Dictionary<string, string> GetProcessEnvironment()
Obtiene todas las variables de entorno y sus valores correspondientes del proceso de destino.
Método GetPublishedProcesses
public static IEnumerable<int> GetPublishedProcesses();
Obtenga una interfaz IEnumerable
de los identificadores de proceso de todos los procesos de .NET activos a los que se puede conectar.
Clase 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);
}
Constructor
public EventPipeProvider(
string name,
EventLevel eventLevel,
long keywords = 0,
IDictionary<string, string> arguments = null)
Crea una instancia de EventPipeProvider
con el nombre de proveedor, la enumeración EventLevel, las palabras claves y los argumentos especificados.
Name (propiedad)
public string Name { get; }
Obtiene el nombre del proveedor.
Propiedad EventLevel
public EventLevel EventLevel { get; }
Obtiene el valor EventLevel
de la instancia de EventPipeProvider
especificada.
Propiedad Keywords
public long Keywords { get; }
Obtiene un valor que representa la máscara de bits para las palabras clave de EventSource
.
Arguments (propiedad)
public IDictionary<string, string> Arguments { get; }
Obtiene un valor IDictionary
de cadenas de par clave-valor que representan los argumentos opcionales que se van a pasar a EventSource
para representar el elemento EventPipeProvider
especificado.
Observaciones
Esta clase es inmutable, porque EventPipe no permite modificar la configuración de un proveedor durante una sesión de EventPipe a partir de .NET Core 3.1.
Clase EventPipeSession
public class EventPipeSession : IDisposable
{
public Stream EventStream { get; }
public void Stop();
}
Esta clase representa una sesión de EventPipe en curso. Es inmutable y actúa como un identificador para una sesión de EventPipe del entorno de ejecución especificado.
Propiedad EventStream
public Stream EventStream { get; }
Obtiene un valor Stream
que se puede usar para leer el flujo de eventos.
Método Stop
public void Stop();
Detiene la sesión de EventPipe
especificada.
Enumeración DumpType
public enum DumpType
{
Normal = 1,
WithHeap = 2,
Triage = 3,
Full = 4
}
Representa el tipo de volcado de memoria que se puede solicitar.
Normal
: incluya solo la información necesaria para capturar los seguimientos de la pila para todos los seguimientos y los subprocesos existentes en un proceso. Información y memoria del montón de GC limitadas.WithHeap
: incluya la información y los montones de GC necesarios para capturar seguimientos de la pila para todos los subprocesos existentes en un proceso.Triage
: incluya solo la información necesaria para capturar los seguimientos de la pila para todos los seguimientos y los subprocesos existentes en un proceso. Información y memoria del montón de GC limitadas. Se censurará parte del contenido que se sabe que contiene información potencialmente confidencial, como rutas de acceso de módulo completas. Aunque esto está pensado para mitigar algunos casos de exposición de datos confidenciales, no hay ninguna garantía de que esta característica de reacción por sí sola sea suficiente para cumplir con cualquier ley o norma concreta con respecto a la privacidad de los datos.Full
: incluya toda la memoria accesible en el proceso. Los datos de memoria sin procesar se incluyen al final, de modo que las estructuras iniciales se pueden asignar directamente sin la información de memoria sin procesar. Esta opción puede dar lugar a un archivo de volcado de memoria muy grande.
Excepciones
Las excepciones que se inician desde la biblioteca son de tipo DiagnosticsClientException
o un tipo derivado.
public class DiagnosticsClientException : Exception
UnsupportedCommandException
public class UnsupportedCommandException : DiagnosticsClientException
Esto se puede producir cuando el comando no es compatible con la biblioteca ni con el entorno de ejecución del proceso de destino.
UnsupportedProtocolException
public class UnsupportedProtocolException : DiagnosticsClientException
Esto se puede producir cuando el entorno de ejecución del proceso de destino no es compatible con el protocolo IPC de diagnóstico usado por la biblioteca.
ServerNotAvailableException
public class ServerNotAvailableException : DiagnosticsClientException
Esto se puede producir cuando el entorno de ejecución no está disponible para los comandos IPC de diagnóstico, como al principio del inicio del entorno de ejecución antes de que el entorno de ejecución esté listo para los comandos de diagnóstico, o cuando el entorno de ejecución se está apagando.
ServerErrorException
public class ServerErrorException : DiagnosticsClientException
Esto se puede producir cuando el entorno de ejecución responde con un error a un comando determinado.