İngilizce dilinde oku

Aracılığıyla paylaş


Microsoft.Diagnostics.NETCore.Client API

Bu bölümde, tanılama istemci kitaplığının API'leri açıklanmaktadır.

DiagnosticsClient sınıfı

cs
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();
}

Oluşturucu

C#
public DiagnosticsClient(int processId);

İşlem kimliğiyle processIdçalışan uyumlu bir .NET işlemi için yeni bir örneği DiagnosticsClient oluşturur.

processID : Hedef uygulamanın işlem kimliği.

StartEventPipeSession yöntemleri

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

Verilen sağlayıcıları ve ayarları kullanarak bir EventPipe izleme oturumu başlatır.

  • providersIEnumerable EventPipeProvider: İzlemeye başlamak için bir /s.
  • requestRundownbool: Hedef uygulamanın çalışma zamanındaki rundown sağlayıcısı olaylarının istenip istenmeyeceğini belirten bir.
  • circularBufferMBint: Hedef uygulamanın olay toplama çalışma zamanı tarafından kullanılan döngüsel arabelleğin toplam boyutunu belirten.
  • token (zaman uyumsuz aşırı yükleme için): İptal isteklerini izlemek için belirteç.
C#
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: İzlemeyi başlatmak için.EventPipeProvider
  • requestRundownbool: Hedef uygulamanın çalışma zamanındaki rundown sağlayıcısı olaylarının istenip istenmeyeceğini belirten bir.
  • circularBufferMBint: Hedef uygulamanın olay toplama çalışma zamanı tarafından kullanılan döngüsel arabelleğin toplam boyutunu belirten.
  • token (zaman uyumsuz aşırı yükleme için): İptal isteklerini izlemek için belirteç.

Not

Rundown olayları, iş parçacığı örneklerinin yöntem adlarını çözümleme gibi analiz sonrası için gerekli olabilecek yükleri içerir. Bunu istemediğinizi bilmiyorsanız true olarak ayarlamanızı requestRundown öneririz. Büyük uygulamalarda bu işlem biraz zaman alabilir.

WriteDump yöntemi

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

Hedef uygulamanın son hata ayıklaması için döküm isteyin. Döküm türü sabit listesi kullanılarak DumpType belirtilebilir.

  • dumpType : İstenecek döküm türü.
  • dumpPath : Yazılacak döküm yolu.
  • logDumpGeneration : olarak trueayarlanırsa, hedef uygulama döküm oluşturma sırasında tanılama günlüklerini yazar.
C#
public void WriteDump(DumpType dumpType, string dumpPath, WriteDumpFlags flags)

Hedef uygulamanın son hata ayıklaması için döküm isteyin. Döküm türü sabit listesi kullanılarak DumpType belirtilebilir.

  • dumpType : İstenecek döküm türü.
  • dumpPath : Yazılacak döküm yolu.
  • flags : rapor bayraklarını günlüğe kaydetme ve kilitlenme. 6.0'dan küçük çalışma zamanlarında yalnızca LoggingEnabled desteklenir.
C#
public async Task WriteDumpAsync(DumpType dumpType, string dumpPath, bool logDumpGeneration, CancellationToken token)

Hedef uygulamanın son hata ayıklaması için döküm isteyin. Döküm türü sabit listesi kullanılarak DumpType belirtilebilir.

  • dumpType : İstenecek döküm türü.
  • dumpPath : Yazılacak döküm yolu.
  • logDumpGeneration : olarak trueayarlanırsa, hedef uygulama döküm oluşturma sırasında tanılama günlüklerini yazar.
  • token : İptal isteklerini izlemek için belirteç.
C#
public async Task WriteDumpAsync(DumpType dumpType, string dumpPath, WriteDumpFlags flags, CancellationToken token)

Hedef uygulamanın son hata ayıklaması için döküm isteyin. Döküm türü sabit listesi kullanılarak DumpType belirtilebilir.

  • dumpType : İstenecek döküm türü.
  • dumpPath : Yazılacak döküm yolu.
  • flags : rapor bayraklarını günlüğe kaydetme ve kilitlenme. 6.0'dan küçük çalışma zamanlarında yalnızca LoggingEnabled desteklenir.
  • token : İptal isteklerini izlemek için belirteç.

AttachProfiler yöntemi

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

Hedef uygulamaya ICorProfiler ekleme isteği.

  • attachTimeout : Bundan TimeSpan sonra ekleme durdurulacak.
  • profilerGuid : Guid eklenecek ICorProfiler için.
  • profilerPath : Eklenecek ICorProfiler dll'sinin yolu.
  • additionalData : Profil oluşturucu ekleme sırasında çalışma zamanına geçirilebilen isteğe bağlı ek veriler.

SetStartupProfiler yöntemi

C#
public void SetStartupProfiler(
        Guid profilerGuid,
        string profilerPath);

Başlangıç profili oluşturucu olarak bir profil oluşturucu ayarlayın. Çalışma zamanı başlangıçta duraklatılırken bu komutu vermek yalnızca geçerlidir.

  • profilerGuid : Guid profil oluşturucunun eklenmesi için.
  • profilerPath : Eklenecek profil oluşturucunun yolu.

ResumeRuntime yöntemi

C#
public void ResumeRuntime();

Çalışma zamanına başlangıçta duraklatıldıktan sonra yürütmeyi sürdürmesini söyleyin.

SetEnvironmentVariable yöntemi

C#
public void SetEnvironmentVariable(
    string name,
    string value);

Hedef işlemde bir ortam değişkeni ayarlayın.

  • name : Ayarlanacağı ortam değişkeninin adı.
  • value : Ayarlanacağı ortam değişkeninin değeri.

GetProcessEnvironment

C#
public Dictionary<string, string> GetProcessEnvironment()

Hedef işlemden tüm ortam değişkenlerini ve değerlerini alır.

GetPublishedProcesses yöntemi

C#
public static IEnumerable<int> GetPublishedProcesses();

IEnumerable Eklenebilen tüm etkin .NET işlemlerinin işlem kimliklerini alın.

EventPipeProvider sınıfı

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

Oluşturucu

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

Belirtilen sağlayıcı adı, EventLevel, anahtar sözcükler ve bağımsız değişkenlerle yeni bir örneği EventPipeProvider oluşturur.

Name özelliği

C#
public string Name { get; }

Sağlayıcının adını alır.

EventLevel özelliği

C#
public EventLevel EventLevel { get; }

EventLevel Verilen örneğini EventPipeProvideralır.

Anahtar sözcükler özelliği

C#
public long Keywords { get; }

anahtar sözcükleri EventSourceiçin bit maskesini temsil eden bir değer alır.

Arguments özelliği

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

Verilen öğesini temsil etmek için geçirilecek EventSource isteğe bağlı bağımsız değişkenleri temsil eden anahtar-değer çifti dizelerinden birini IDictionary EventPipeProvideralır.

Açıklamalar

EventPipe, .NET Core 3.1 itibarıyla bir EventPipe oturumu sırasında sağlayıcı yapılandırmasının değiştirilmesine izin vermediğinden bu sınıf sabittir.

EventPipeSession sınıfı

C#
public class EventPipeSession : IDisposable
{
    public Stream EventStream { get; }
    public void Stop();
}

Bu sınıf, devam eden bir EventPipe oturumlarını temsil eder. Sabittir ve verilen çalışma zamanının EventPipe oturumu için tanıtıcı işlevi görür.

EventStream özelliği

C#
public Stream EventStream { get; }

Olay akışını okumak için kullanılabilecek bir Stream alır.

Stop yöntemi

C#
public void Stop();

Verilen EventPipe oturumu durdurur.

DumpType sabit listesi

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

İstenebilecek döküm türünü temsil eder.

  • Normal: Yalnızca bir işlemdeki tüm mevcut iş parçacıkları için mevcut tüm izlemeler için yığın izlemelerini yakalamak için gerekli bilgileri ekleyin. Sınırlı GC yığını belleği ve bilgileri.
  • WithHeap: Bir işlemdeki tüm mevcut iş parçacıkları için yığın izlemelerini yakalamak için gereken GC yığınlarını ve bilgileri içerir.
  • Triage: Yalnızca bir işlemdeki tüm mevcut iş parçacıkları için mevcut tüm izlemeler için yığın izlemelerini yakalamak için gerekli bilgileri ekleyin. Sınırlı GC yığını belleği ve bilgileri. Tam modül yolları gibi hassas olabilecek bilgiler içerdiği bilinen bazı içerikler yeniden dağıtılır. Bu, bazı hassas verilerin açığa çıkarılma durumlarını azaltmaya yönelik olsa da, bu yeniden değiştirme özelliğinin veri gizliliğiyle ilgili herhangi bir yasaya veya standarda uymak için yeterli olduğunu garanti etmemektedir.
  • Full: Tüm erişilebilir belleği sürece dahil edin. Ham bellek verileri sonuna eklenir, böylece ilk yapılar ham bellek bilgileri olmadan doğrudan eşlenebilir. Bu seçenek çok büyük bir döküm dosyasına neden olabilir.

Özel durumlar

Kitaplıktan atılan özel durumlar tür DiagnosticsClientException veya türetilmiş türdedir.

C#
public class DiagnosticsClientException : Exception

DesteklenmeyenCommandException

C#
public class UnsupportedCommandException : DiagnosticsClientException

Bu, komut kitaplık veya hedef işlemin çalışma zamanı tarafından desteklenmediğinde oluşturulabilir.

DesteklenmeyenProtocolException

C#
public class UnsupportedProtocolException : DiagnosticsClientException

Hedef işlemin çalışma zamanı kitaplık tarafından kullanılan tanılama IPC protokolüyle uyumlu olmadığında bu durum oluşabilir.

ServerNotAvailableException

C#
public class ServerNotAvailableException : DiagnosticsClientException

Bu, çalışma zamanı tanılama komutları için hazır olmadan önce çalışma zamanı başlatma sırasında erken veya çalışma zamanı kapatılıyor gibi tanılama IPC komutları için kullanılabilir olmadığında oluşabilir.

ServerErrorException

C#
public class ServerErrorException : DiagnosticsClientException

Bu, çalışma zamanı belirli bir komuta bir hatayla yanıt verdiği zaman oluşabilir.