Microsoft.Diagnostics.NETCore.Client-API

In diesem Abschnitt werden die APIs der Diagnoseclientbibliothek beschrieben.

DiagnosticsClient-Klasse

public sealed class DiagnosticsClient
{
    public DiagnosticsClient(int processId);

    public EventPipeSession StartEventPipeSession(
        IEnumerable<EventPipeProvider> providers,
        bool requestRundown = true,
        int circularBufferMB = 256);

    public EventPipeSession StartEventPipeSession(
        EventPipeProvider provider,
        bool requestRundown = true,
        int circularBufferMB = 256);

    public EventPipeSession StartEventPipeSession(
        EventPipeSessionConfiguration config);

    public Task<EventPipeSession> StartEventPipeSessionAsync(
        IEnumerable<EventPipeProvider> providers,
        bool requestRundown,
        int circularBufferMB = 256,
        CancellationToken token = default);

    public Task<EventPipeSession> StartEventPipeSessionAsync(
        EventPipeProvider provider,
        bool requestRundown,
        int circularBufferMB = 256,
        CancellationToken token = default);

    public Task<EventPipeSession> StartEventPipeSessionAsync(
        EventPipeSessionConfiguration configuration,
        CancellationToken token);

    public void WriteDump(
        DumpType dumpType,
        string dumpPath,
        bool logDumpGeneration = false);

    public void WriteDump(
        DumpType dumpType,
        string dumpPath,
        WriteDumpFlags flags);

    public Task WriteDumpAsync(
        DumpType dumpType,
        string dumpPath,
        bool logDumpGeneration,
        CancellationToken token);

    public Task WriteDumpAsync(
        DumpType dumpType,
        string dumpPath,
        WriteDumpFlags flags,
        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 void ApplyStartupHook(
        string startupHookPath);

    public Task ApplyStartupHookAsync(
        string startupHookPath,
        CancellationToken token);

    public void EnablePerfMap(
        PerfMapType type);

    public void DisablePerfMap();

    public static IEnumerable<int> GetPublishedProcesses();
}

Konstruktor

public DiagnosticsClient(int processId);

Erstellt eine neue Instanz von DiagnosticsClient für einen kompatiblen .NET-Prozess, der mit der Prozess-ID von processId ausgeführt wird.

processID: Prozess-ID der Zielanwendung.

StartEventPipeSession-Methoden

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);

Startet eine EventPipe-Ablaufverfolgungssitzung unter Verwendung der angegebenen Anbieter und Einstellungen.

  • providers: Ein IEnumerable von EventPipeProvider-Elementen zum Starten der Ablaufverfolgung.
  • requestRundown: Ein bool, der angibt, ob Rundownanbieterereignisse aus der Runtime der Ziel-App angefordert werden sollen.
  • circularBufferMB: Ein int, der die Gesamtgröße des Zirkelpuffers angibt, welcher von der Runtime der Ziel-App beim Erfassen von Ereignissen verwendet wird.
  • token (für die asynchrone Überladung): Das Token, das auf Abbruchanforderungen überwacht werden soll.
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);

Startet eine EventPipe-Ablaufverfolgungssitzung mit einem einzelnen Anbieter.

  • provider: Ein EventPipeProvider zum Starten der Ablaufverfolgung.
  • requestRundown: Ein bool, der angibt, ob Rundownanbieterereignisse aus der Runtime der Ziel-App angefordert werden sollen.
  • circularBufferMB: Ein int, der die Gesamtgröße des Zirkelpuffers angibt, welcher von der Runtime der Ziel-App beim Erfassen von Ereignissen verwendet wird.
  • token (für die asynchrone Überladung): Das Token, das auf Abbruchanforderungen überwacht werden soll.
public EventPipeSession StartEventPipeSession(
    EventPipeSessionConfiguration config);

public Task<EventPipeSession> StartEventPipeSessionAsync(
    EventPipeSessionConfiguration configuration,
    CancellationToken token);

Startet eine EventPipe-Ablaufverfolgungssitzung mithilfe einer EventPipeSessionConfiguration.

  • config / configuration : Eine EventPipeSessionConfiguration , die die Sitzung definiert.
  • token (für die asynchrone Überladung): Das Token, das auf Abbruchanforderungen überwacht werden soll.

Hinweis

Rundownereignisse enthalten Nutzlasten, die für die Nachanalyse erforderlich sein können, z. B. das Auflösen von Methodennamen von Threadbeispielen. Sofern Sie dies nicht möchten, wird empfohlen, diesen Wert auf requestRundown zu setzen. Bei großen Anwendungen kann dies eine Weile dauern.

WriteDump-Methode

public void WriteDump(
    DumpType dumpType,
    string dumpPath,
    bool logDumpGeneration=false);

Fordert ein Speicherabbild zum nachträglichen Debuggen der Zielanwendung an. Der Typ des Speicherabbilds kann mithilfe der DumpType-Enumeration angegeben werden.

  • dumpType: Typ des angeforderten Speicherabbilds.
  • dumpPath: Der Pfad zum Speicherabbild, in das geschrieben werden soll.
  • logDumpGeneration: Wenn dieser Wert auf true festgelegt ist, schreibt die Zielanwendung Diagnoseprotokolle während der Generierung des Speicherabbilds.
public void WriteDump(
    DumpType dumpType,
    string dumpPath,
    WriteDumpFlags flags)

Fordert ein Speicherabbild zum nachträglichen Debuggen der Zielanwendung an. Der Typ des Speicherabbilds kann mithilfe der DumpType-Enumeration angegeben werden.

  • dumpType: Typ des angeforderten Speicherabbilds.
  • dumpPath: Der Pfad zum Speicherabbild, in das geschrieben werden soll.
  • flags: Flags für Protokollierungs- und Absturzberichte. Bei Runtimes vor 6.0 wird nur LoggingEnabled unterstützt.
public Task WriteDumpAsync(
    DumpType dumpType,
    string dumpPath,
    bool logDumpGeneration,
    CancellationToken token)

Fordert ein Speicherabbild zum nachträglichen Debuggen der Zielanwendung an. Der Typ des Speicherabbilds kann mithilfe der DumpType-Enumeration angegeben werden.

  • dumpType: Typ des angeforderten Speicherabbilds.
  • dumpPath: Der Pfad zum Speicherabbild, in das geschrieben werden soll.
  • logDumpGeneration: Wenn dieser Wert auf true festgelegt ist, schreibt die Zielanwendung Diagnoseprotokolle während der Generierung des Speicherabbilds.
  • token: das Token zum Überwachen von Abbruchanforderungen.
public Task WriteDumpAsync(
    DumpType dumpType,
    string dumpPath,
    WriteDumpFlags flags,
    CancellationToken token)

Fordert ein Speicherabbild zum nachträglichen Debuggen der Zielanwendung an. Der Typ des Speicherabbilds kann mithilfe der DumpType-Enumeration angegeben werden.

  • dumpType: Typ des angeforderten Speicherabbilds.
  • dumpPath: Der Pfad zum Speicherabbild, in das geschrieben werden soll.
  • flags: Flags für Protokollierungs- und Absturzberichte. Bei Runtimes vor 6.0 wird nur LoggingEnabled unterstützt.
  • token: das Token zum Überwachen von Abbruchanforderungen.

ApplyStartupHook-Methoden

public void ApplyStartupHook(
    string startupHookPath);

public Task ApplyStartupHookAsync(
    string startupHookPath,
    CancellationToken token);

Lädt die angegebene Assembly mit einem StartupHook im Zielprozess.

  • startupHookPath : Der Pfad zur Assembly, die den Start-Hook enthält.
  • token (für die asynchrone Überladung): Das Token, das auf Abbruchanforderungen überwacht werden soll.

PerfMap-Methoden

public void EnablePerfMap(
    PerfMapType type);

public void DisablePerfMap();

Steuert die Generierung von perf-Karten im Zielprozess.

  • type : Gibt PerfMapType den Typ der zu aktivierenden Perf-Zuordnung an.

AttachProfiler-Methode

public void AttachProfiler(
    TimeSpan attachTimeout,
    Guid profilerGuid,
    string profilerPath,
    byte[] additionalData=null);

Fordert das Anfügen eines ICorProfiler an die Zielanwendung an.

  • attachTimeout: Ein TimeSpan, nach dem das Anfügen abgebrochen wird.
  • profilerGuid: Guid der anzufügenden ICorProfiler-Instanz.
  • profilerPath: Pfad der anzufügenden ICorProfiler-DLL.
  • additionalData: Optionale zusätzliche Daten, die während des Anfügens des Profilers an die Runtime übergeben werden können.

SetStartupProfiler-Methode

public void SetStartupProfiler(
        Guid profilerGuid,
        string profilerPath);

Legt einen Profiler als Startprofiler fest. Dieser Befehl kann nur ausgeführt werden, wenn die Runtime beim Start angehalten wird.

  • profilerGuid: Guid für den anzufügenden Profiler.
  • profilerPath: Pfad zum anzufügenden Profiler.

ResumeRuntime-Methode

public void ResumeRuntime();

Weist die Runtime an, die Ausführung fortzusetzen, nachdem sie beim Start angehalten wurde.

SetEnvironmentVariable-Methode

public void SetEnvironmentVariable(
    string name,
    string value);

Legt eine Umgebungsvariable im Zielprozess fest.

  • name: der Name der festzulegenden Umgebungsvariablen.
  • value: der Wert der festzulegenden Umgebungsvariablen.

GetProcessEnvironment

public Dictionary<string, string> GetProcessEnvironment()

Ruft alle Umgebungsvariablen und deren Werte aus dem Zielprozess ab.

GetPublishedProcesses-Methode

public static IEnumerable<int> GetPublishedProcesses();

Ruft ein IEnumerable von Prozess-IDs aller aktiven .NET-Prozesse ab, die zum Anfügen verwendet werden können.

EventPipeSessionConfiguration-Klasse

public sealed class EventPipeSessionConfiguration
{
    public EventPipeSessionConfiguration(
        IEnumerable<EventPipeProvider> providers,
        int circularBufferSizeMB = 256,
        bool requestRundown = true,
        bool requestStackwalk = true);

    public EventPipeSessionConfiguration(
        IEnumerable<EventPipeProvider> providers,
        int circularBufferSizeMB,
        long rundownKeyword,
        bool requestStackwalk = true);

    public EventPipeSessionConfiguration(
        IEnumerable<EventPipeProvider> providers,
        int circularBufferSizeMB,
        long rundownKeyword,
        bool requestStackwalk,
        EventPipeBufferingMode bufferingMode);

    public bool RequestRundown { get; }

    public int CircularBufferSizeInMB { get; }

    public bool RequestStackwalk { get; }

    public long RundownKeyword { get; }

    public EventPipeBufferingMode BufferingMode { get; }

    public IReadOnlyCollection<EventPipeProvider> Providers { get; }
}

Stellt die Konfiguration für eine EventPipeSession.

  • providers : Eine IEnumerable von EventPipeProviders, die aktiviert werden soll.
  • circularBufferSizeMB : Die Größe in MB des Laufzeitpuffers zum Sammeln von Ereignissen.
  • requestRundown : Wenn true, Anforderungsausführungsereignisse aus der Laufzeit.
  • requestStackwalk : Wenn true, zeichnen Sie eine Stapelablaufverfolgung für jedes ausgegebene Ereignis auf.
  • rundownKeyword : Das Schlüsselwortformat, das für Rundownereignisse verwendet wird.
  • bufferingMode : Die EventPipeBufferingMode für die Sitzung. Wird Block verwendet, um eine sammlung ohne Verlust anzufordern. Die Übergabe Block erfordert eine .NET 11+ Ziellaufzeit; bei einer älteren Laufzeit StartEventPipeSession wird ausgelöstUnsupportedCommandException.

Die BufferingMode Eigenschaft gibt den Puffermodus für die Sitzung zurück. Der Standardwert behält Dropden Verlustpuffer der Laufzeit bei.

EventPipeProvider-Klasse

public class EventPipeProvider
{
    public EventPipeProvider(
        string name,
        EventLevel eventLevel,
        long keywords = 0,
        IDictionary<string, string> arguments = null)

    public EventPipeProvider(
        string name,
        EventLevel eventLevel,
        long keywords,
        IDictionary<string, string> arguments,
        EventPipeProviderEventFilter eventFilter)

    public string Name { get; }

    public EventLevel EventLevel { get; }

    public long Keywords { get; }

    public IDictionary<string, string> Arguments { get; }

    public EventPipeProviderEventFilter EventFilter { 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);
}

Konstruktor

public EventPipeProvider(
    string name,
    EventLevel eventLevel,
    long keywords = 0,
    IDictionary<string, string> arguments = null)

public EventPipeProvider(
    string name,
    EventLevel eventLevel,
    long keywords,
    IDictionary<string, string> arguments,
    EventPipeProviderEventFilter eventFilter)

Erstellt eine neue Instanz von EventPipeProvider mit dem angegebenen Anbieternamen, EventLevel, Schlüsselwörtern und Argumenten. Die zweite Überladung verwendet auch eine EventPipeProviderEventFilter Filterung, welche Ereignis-IDs die Laufzeit für den Anbieter ermöglicht. Wenn Sie einen Ereignisfilter festlegen, erfordert die Sitzung eine .NET 10+ Ziellaufzeit.

Name-Eigenschaft

public string Name { get; }

Ruft den Namen des Anbieters ab.

EventLevel-Eigenschaft

public EventLevel EventLevel { get; }

Ruft die EventLevel der angegebenen Instanz von EventPipeProvider ab.

Keywords-Eigenschaft

public long Keywords { get; }

Ruft einen Wert ab, der die Bitmaske für Schlüsselwörter der EventSource darstellt.

Arguments-Eigenschaft

public IDictionary<string, string> Arguments { get; }

Ruft ein IDictionary von Schlüssel-Wert-Paarzeichenfolgen ab, die optionale Argumente darstellen, welche an EventSource übergeben werden sollen, die den angegebenen EventPipeProvider darstellen.

EventFilter-Eigenschaft

public EventPipeProviderEventFilter EventFilter { get; }

Ruft die optionale EventPipeProviderEventFilter , die Laufzeit auf die Ereignis-IDs dieses Anbieters nach dem Schlüsselwort- und Ebenenfilter angewendet wird. Wenn der Wert lautet null, aktiviert die Laufzeit jede Ereignis-ID, die das Schlüsselwort und der Ebenenfilter zulässt.

Bemerkungen

Diese Klasse ist unveränderlich, da EventPipe das Ändern der Konfiguration eines Anbieters während einer EventPipe-Sitzung ab .NET Core 3.1 nicht zulässt.

EventPipeProviderEventFilter-Klasse

public sealed class EventPipeProviderEventFilter
{
    public EventPipeProviderEventFilter(
        bool enable,
        IReadOnlyList<uint> eventIds);

    public bool Enable { get; }

    public IReadOnlyList<uint> EventIds { get; }
}

Stellt einen optionalen Anbieterfilter auf Ereignis-IDs dar. Die Laufzeit wendet den Filter nach dem Schlüsselwort- und Ebenenfilter des zugeordneten EventPipeProvider. Ereignisfilter erfordern eine .NET 10+ Ziellaufzeit.

Konstruktor

public EventPipeProviderEventFilter(
    bool enable,
    IReadOnlyList<uint> eventIds);

Erstellt eine neue Instanz von EventPipeProviderEventFilter.

  • enable : Ist trueeine eventIds Zulassungsliste, und die Laufzeit aktiviert nur diese Ereignis-IDs. Wenn falsees sich um eventIds eine Ablehnungsliste handelt und die Laufzeit jede Ereignis-ID außer den aufgeführten aktiviert. Eine leere Ablehnungsliste ermöglicht daher alle Ereignisse.
  • eventIds : Die Ereignis-IDs, die aktiviert oder deaktiviert werden sollen, wie durch enable.

Enable-Eigenschaft

public bool Enable { get; }

Ruft einen Wert ab, der angibt, ob EventIds es sich um eine Zulassungsliste (true) oder eine Ablehnungsliste (false) handelt.

EventIds-Eigenschaft

public IReadOnlyList<uint> EventIds { get; }

Ruft die Liste der Ereignis-IDs ab, die der Filter aktiviert oder deaktiviert.

EventPipeSession-Klasse

public class EventPipeSession : IDisposable
{
    public Stream EventStream { get; }

    public void Stop();

    public Task StopAsync(
        CancellationToken cancellationToken);

    public void Dispose();
}

Diese Klasse stellt eine laufende EventPipe-Sitzung dar. Sie ist unveränderlich und fungiert als Handle für eine EventPipe-Sitzung der angegebenen Runtime.

EventStream-Eigenschaft

public Stream EventStream { get; }

Ruft einen Stream ab, der zum Lesen des Ereignisdatenstroms verwendet werden kann.

Stop-Methoden

public void Stop();

public Task StopAsync(
    CancellationToken cancellationToken);

Beendet die angegebene EventPipe-Sitzung.

  • cancellationToken (für die asynchrone Überladung): Das Token, das auf Abbruchanforderungen überwacht werden soll.

Dispose-Methode

public void Dispose();

Veröffentlicht Ressourcen, die mit der EventPipeSession.

DiagnosticsClientConnector-Klasse

public sealed class DiagnosticsClientConnector : IAsyncDisposable
{
    public DiagnosticsClient Instance { get; }

    public ValueTask DisposeAsync();

    public static Task<DiagnosticsClientConnector> FromDiagnosticPort(
        string diagnosticPort,
        CancellationToken ct);
}

Stellt ein Hilfsprogramm dar, das einen DiagnosticsClient aus einem Diagnoseport erstellt und die Lebensdauer der zugrunde liegenden Diagnoseserververbindung verwaltet.

  • Instance : Die DiagnosticsClient Verbindung mit der Ziellaufzeit.
  • DisposeAsync : Entfernt den zugrunde liegenden Server/die zugrunde liegende Verbindung asynchron.
  • FromDiagnosticPort : Erstellt ein neues DiagnosticsClientConnector aus dem angegebenen Diagnoseport.
public static Task<DiagnosticsClientConnector> FromDiagnosticPort(
    string diagnosticPort,
    CancellationToken ct)
  • diagnosticPort : Die Diagnoseportzeichenfolge (z. B. ein Listen- oder Verbindungsport), über den eine Verbindung hergestellt werden soll.
  • ct: das Token zum Überwachen von Abbruchanforderungen.

DumpType-Enumeration

public enum DumpType
{
    Normal = 1,
    WithHeap = 2,
    Triage = 3,
    Full = 4
}

Stellt den Typ des Speicherabbilds dar, das angefordert werden kann.

  • Normal: Es werden nur die Informationen aufgenommen, die zum Erfassen von Stapelüberwachungen für alle vorhandenen Ablaufüberwachungen für alle vorhandenen Threads in einem Prozess erforderlich sind. Heaparbeitsspeicher und -informationen der GC sind eingeschränkt.
  • WithHeap: Es werden nur die GC-Heaps und Informationen aufgenommen, die zum Erfassen von Stapelüberwachungen für alle vorhandenen Threads in einem Prozess erforderlich sind.
  • Triage: Es werden nur die Informationen aufgenommen, die zum Erfassen von Stapelüberwachungen für alle vorhandenen Ablaufüberwachungen für alle vorhandenen Threads in einem Prozess erforderlich sind. Heaparbeitsspeicher und -informationen der GC sind eingeschränkt. Einige Inhalte, die bekanntermaßen vertrauliche Informationen enthalten, z. B. vollständige Modulpfade, werden redacted. Obwohl dies beabsichtigt ist, einige Fälle vertraulicher Datenexposition zu mindern, besteht keine Garantie dafür, dass dieses Redaction-Feature allein ausreicht, um ein bestimmtes Recht oder einen bestimmten Standard in Bezug auf den Datenschutz einzuhalten.
  • Full: Es wird der gesamte verfügbare Arbeitsspeicher im Prozess aufgenommen. Die Rohdaten des Arbeitsspeichers sind am Ende enthalten, sodass die ursprünglichen Strukturen direkt ohne die unformatierten Arbeitsspeicherinformationen zugeordnet werden können. Diese Option kann zu einer sehr großen Speicherabbilddatei führen.

WriteDumpFlags-Enumeration

public enum WriteDumpFlags
{
    None = 0x00,
    LoggingEnabled = 0x01,
    VerboseLoggingEnabled = 0x02,
    CrashReportEnabled = 0x04
}

Stellt zusätzliche Optionen dar, die beim Anfordern eines Dumps angegeben werden können.

  • None : Kein zusätzliches Verhalten.
  • LoggingEnabled : Aktivieren der grundlegenden Protokollierung während der Speicherabbildgenerierung.
  • VerboseLoggingEnabled : Aktivieren Sie die ausführliche Protokollierung während der Speicherabbildgenerierung.
  • CrashReportEnabled : Aktivieren der Generierung eines Absturzberichts.

PerfMapType-Enumeration

public enum PerfMapType
{
    None = 0,
    All = 1,
    JitDump = 2,
    PerfMap = 3
}

Stellt den Typ des perf-Kartenverhaltens dar, das aktiviert werden kann.

  • None : Keine Perf-Kartenausgabe.
  • All : Alle prof-Kartenausgabe aktivieren, die von der Laufzeit unterstützt werden.
  • JitDump : Aktivieren Sie jiT dump perf map output.
  • PerfMap : Aktivieren Der herkömmlichen Perf-Kartenausgabe.

EventPipeBufferingMode-Enumeration

public enum EventPipeBufferingMode
{
    Drop = 0,
    Block = 1
}

Steuert, wie sich der Ereignispuffer der Laufzeit pro Sitzung verhält, wenn er schneller gefüllt wird, als die Sitzung sie entwässert.

  • Drop : Der Standard für die Laufzeit. Die Sitzung verwendet einen Puffer, der Ereignisse abbricht, wenn sie überläuft, sodass die Sammlung verloren geht.
  • Block : Nicht verlustbehaftete Sammlung. Die Laufzeit blockiert Ereignishersteller, wenn der Puffer voll ist, anstatt Ereignisse abwerfen zu müssen. Verwenden Sie sie für Sammlungen, die vollständig sein müssen, z. B. eine Heap-Momentaufnahme auf einem großen Heap. Block ist nicht verlustfrei, sondern nur bis zur Kapazität des Puffers, nicht für die Ausschöpfung des Hostspeichers: Wenn die Laufzeit den Speicher nicht zuordnen kann, den sie zum Reservieren des Pufferspeichers benötigt, oder während des Herunterfahrens der Sitzung, wird das Ereignis anstelle des Blockierens aufgehoben. Blockerfordert eine .NET 11+ Ziellaufzeit; bei einer älteren Laufzeit wird die Sitzung ausgelöstUnsupportedCommandException.

Ausnahmen

Von der Bibliothek ausgelöste Ausnahmen weisen den Typ DiagnosticsClientException oder einen abgeleiteten Typ auf.

public class DiagnosticsClientException : Exception

UnsupportedProtocolException

public class UnsupportedProtocolException : DiagnosticsClientException

Diese Ausnahme kann ausgelöst werden, wenn die Runtime des Zielprozesses nicht mit dem von der Bibliothek verwendeten IPC-Diagnoseprotokoll kompatibel ist.

ServerNotAvailableException

public class ServerNotAvailableException : DiagnosticsClientException

Diese Ausnahme kann ausgelöst werden, wenn die Runtime nicht für IPC-Diagnosebefehle verfügbar ist, z. B. früh während des Runtimestarts, bevor die Runtime für Diagnosebefehle bereit ist oder beim Herunterfahren der Runtime.

ServerErrorException

public class ServerErrorException : DiagnosticsClientException

Diese Ausnahme kann ausgelöst werden, wenn die Runtime mit einem Fehler auf einen bestimmten Befehl antwortet.

UnsupportedCommandException

public class UnsupportedCommandException : ServerErrorException

Diese Ausnahme wird ausgelöst, wenn der Befehl nicht von der Bibliothek oder der Laufzeit des Zielprozesses unterstützt wird.

ProfilerAlreadyActiveException

public class ProfilerAlreadyActiveException : ServerErrorException

Diese Ausnahme wird ausgelöst, wenn ein Profiler bereits in die Ziellaufzeit geladen wird und eine weitere Anfügung versucht wird.

BadEncodingException

public class BadEncodingException : ServerErrorException

Diese Ausnahme wird ausgelöst, wenn die Ziellaufzeit die Befehlsnutzlast nicht decodiert und abgelehnt wird. Bei einem wohlgeformten Client bedeutet dies in der Regel, dass die Laufzeit zu alt ist, um einen neueren konfigurierten Optionswert zu verstehen, sodass sie die Anforderung während der Analyse ablehnt.