Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu bölümde, tanılama istemci kitaplığının API'leri açıklanmaktadır.
DiagnosticsClient sınıfı
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();
}
Oluşturucu
public DiagnosticsClient(int processId);
İşlem kimliğiyle DiagnosticsClientçalışan uyumlu bir .NET işlemi için yeni bir örneği processId oluşturur.
processID : Hedef uygulamanın işlem kimliği.
StartEventPipeSession yöntemleri
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.
-
providersIEnumerableEventPipeProvider: İ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ç.
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);
Tek bir sağlayıcı kullanarak bir EventPipe izleme oturumu başlatır.
-
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ç.
public EventPipeSession StartEventPipeSession(
EventPipeSessionConfiguration config);
public Task<EventPipeSession> StartEventPipeSessionAsync(
EventPipeSessionConfiguration configuration,
CancellationToken token);
kullanarak EventPipeSessionConfigurationbir EventPipe izleme oturumu başlatır.
-
config/configurationEventPipeSessionConfiguration: Oturumu tanımlayan bir. -
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
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: olaraktrueayarlanırsa, hedef uygulama döküm oluşturma sırasında tanılama günlüklerini yazar.
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.
public 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: olaraktrueayarlanırsa, hedef uygulama döküm oluşturma sırasında tanılama günlüklerini yazar. -
token: İptal isteklerini izlemek için belirteç.
public 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ç.
ApplyStartupHook yöntemleri
public void ApplyStartupHook(
string startupHookPath);
public Task ApplyStartupHookAsync(
string startupHookPath,
CancellationToken token);
Belirtilen derlemeyi hedef işlemde ile StartupHook yükler.
-
startupHookPath: Başlangıç kancasını içeren derlemenin yolu. -
token(zaman uyumsuz aşırı yükleme için): İptal isteklerini izlemek için belirteç.
PerfMap yöntemleri
public void EnablePerfMap(
PerfMapType type);
public void DisablePerfMap();
Hedef işlemde performans eşlemelerinin oluşturulmasını denetler.
-
typePerfMapType: Etkinleştirileceği performans eşlemesinin türünü belirtir.
AttachProfiler yöntemi
public void AttachProfiler(
TimeSpan attachTimeout,
Guid profilerGuid,
string profilerPath,
byte[] additionalData=null);
Hedef uygulamaya ICorProfiler ekleme isteği.
-
attachTimeout: BundanTimeSpansonra ekleme durdurulacak. -
profilerGuid:Guideklenecek 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
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:Guidprofil oluşturucunun eklenmesi için. -
profilerPath: Eklenecek profil oluşturucunun yolu.
ResumeRuntime yöntemi
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
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
public Dictionary<string, string> GetProcessEnvironment()
Hedef işlemden tüm ortam değişkenlerini ve değerlerini alır.
GetPublishedProcesses yöntemi
public static IEnumerable<int> GetPublishedProcesses();
IEnumerable Eklenebilen tüm etkin .NET işlemlerinin işlem kimliklerini alın.
EventPipeSessionConfiguration sınıfı
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 bool RequestRundown { get; }
public int CircularBufferSizeInMB { get; }
public bool RequestStackwalk { get; }
public long RundownKeyword { get; }
public IReadOnlyCollection<EventPipeProvider> Providers { get; }
}
bir EventPipeSessioniçin yapılandırmayı temsil eder.
-
providersIEnumerableEventPipeProvider: Etkinleştirecek bir sn. -
circularBufferSizeMB: Olayları toplamak için çalışma zamanının arabelleğinin MB cinsinden boyutu. -
requestRundown: isetrue, çalışma zamanından rundown olayları isteyin. -
requestStackwalk: isetrue, yayılan her olay için bir yığın izlemesi kaydedin. -
rundownKeyword: Rundown olayları için kullanılan anahtar sözcük maskesi.
EventPipeProvider sınıfı
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
public EventPipeProvider(
string name,
EventLevel eventLevel,
long keywords = 0,
IDictionary<string, string> arguments = null)
Belirtilen sağlayıcı adı, EventPipeProvider, anahtar sözcükler ve bağımsız değişkenlerle yeni bir örneği EventLevel oluşturur.
Name özelliği
public string Name { get; }
Sağlayıcının adını alır.
EventLevel özelliği
public EventLevel EventLevel { get; }
EventLevel Verilen örneğini EventPipeProvideralır.
Anahtar sözcükler özelliği
public long Keywords { get; }
anahtar sözcükleri EventSourceiçin bit maskesini temsil eden bir değer alır.
Arguments özelliği
public IDictionary<string, string> Arguments { get; }
Verilen öğesini temsil etmek için geçirilecek IDictionary isteğe bağlı bağımsız değişkenleri temsil eden anahtar-değer çifti dizelerinden birini EventSourceEventPipeProvideralı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ı
public class EventPipeSession : IDisposable
{
public Stream EventStream { get; }
public void Stop();
public Task StopAsync(
CancellationToken cancellationToken);
public void Dispose();
}
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
public Stream EventStream { get; }
Olay akışını okumak için kullanılabilecek bir Stream alır.
Durdurma yöntemleri
public void Stop();
public Task StopAsync(
CancellationToken cancellationToken);
Verilen EventPipe oturumu durdurur.
-
cancellationToken(zaman uyumsuz aşırı yükleme için): İptal isteklerini izlemek için belirteç.
Dispose yöntemi
public void Dispose();
ile EventPipeSessionilişkili kaynakları serbest bırakır.
DiagnosticsClientConnector sınıfı
public sealed class DiagnosticsClientConnector : IAsyncDisposable
{
public DiagnosticsClient Instance { get; }
public ValueTask DisposeAsync();
public static Task<DiagnosticsClientConnector> FromDiagnosticPort(
string diagnosticPort,
CancellationToken ct);
}
Bir tanılama bağlantı noktasından bir DiagnosticsClient oluşturan ve temel alınan tanılama sunucusu bağlantısının ömrünü yöneten bir yardımcıyı temsil eder.
-
InstanceDiagnosticsClient: Hedef çalışma zamanına bağlı. -
DisposeAsync: Temel alınan sunucuyu/bağlantıyı zaman uyumsuz olarak atar. -
FromDiagnosticPort: Belirtilen tanılama bağlantı noktasından yeniDiagnosticsClientConnectorbir oluşturur.
public static Task<DiagnosticsClientConnector> FromDiagnosticPort(
string diagnosticPort,
CancellationToken ct)
-
diagnosticPort: Üzerinden bağlanacak tanılama bağlantı noktası dizesi (örneğin, dinleme veya bağlantı noktası). -
ct: İptal isteklerini izlemek için belirteç.
DumpType sabit listesi
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.
WriteDumpFlags sabit listesi
public enum WriteDumpFlags
{
None = 0x00,
LoggingEnabled = 0x01,
VerboseLoggingEnabled = 0x02,
CrashReportEnabled = 0x04
}
Döküm istenirken belirtilebilen ek seçenekleri temsil eder.
-
None: Ek davranış yoktur. -
LoggingEnabled: Döküm oluşturma sırasında temel günlüğü etkinleştirin. -
VerboseLoggingEnabled: Döküm oluşturma sırasında ayrıntılı günlüğe kaydetmeyi etkinleştirin. -
CrashReportEnabled: Kilitlenme raporunun oluşturulmasını etkinleştirin.
PerfMapType sabit listesi
public enum PerfMapType
{
None = 0,
All = 1,
JitDump = 2,
PerfMap = 3
}
Etkinleştirilebilen performans eşleme davranışının türünü temsil eder.
-
None: Performans eşlemesi çıkışı yok. -
All: Çalışma zamanı tarafından desteklenen tüm performans eşlemesi çıkışlarını etkinleştirin. -
JitDump: JIT dökümü performans eşlemesi çıkışını etkinleştirin. -
PerfMap: Geleneksel performans haritası çıkışını etkinleştirin.
Özel durumlar
Kitaplıktan atılan özel durumlar tür DiagnosticsClientException veya türetilmiş türdedir.
public class DiagnosticsClientException : Exception
DesteklenmeyenCommandException
public class UnsupportedCommandException : DiagnosticsClientException
Bu, komut kitaplık veya hedef işlemin çalışma zamanı tarafından desteklenmediğinde oluşturulabilir.
DesteklenmeyenProtocolException
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
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
public class ServerErrorException : DiagnosticsClientException
Bu, çalışma zamanı belirli bir komuta bir hatayla yanıt verdiği zaman oluşabilir.
ProfilerAlreadyActiveException
public class ProfilerAlreadyActiveException : ServerErrorException
Bu özel durum, bir profil oluşturucu hedef çalışma zamanına zaten yüklendiğinde ve başka bir ekleme denendiğinde oluşturulur.