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 makale şunlar için geçerlidir: ✔️ dotnet-debug sürüm 0.0.710501 ve sonraki sürümler
Uyarı
dotnet-debug şu anda yalnızca CoreCLR tabanlı uygulamaları destekler ve şu anda macOS'ta desteklenmez.
Install
NuGet paketinin en son sürüm sürümünü dotnet-debugyüklemek için dotnet tool install komutunu kullanın:
dotnet tool install --global dotnet-debug
Özet
dotnet-debug [-h|--help] [--version] <command>
Description
Genel dotnet-debug araç, canlı .NET işlemlerine eklemenizi ve döküm dosyalarını etkileşimli olarak analiz etmenizi sağlar. Döküm toplama ve çevrimdışı analize odaklanan 'nin aksine dotnet-dump, dotnet-debug canlı işlem incelemesi için tasarlanmıştır. ile aynı SOS hata ayıklama komutlarınıdotnet-dumpdestekler.
Bu araç, tam olarak çalışan lldb bir sürümün kullanılamadığı Alpine Linux gibi platformlarda kullanışlıdır. Araç, dotnet-debug yönetilen durumu ve yığın tanılamalarını analiz etmek için SOS komutlarını çalıştırır, ancak yerel bir hata ayıklayıcı olmadığından yerel yığın çerçevelerinin görüntülenmesi desteklenmez.
Options
--versiondotnet-debug yardımcı programının sürümünü görüntüler.
-h|--helpKomut satırı yardımlarını gösterir.
Commands
| Command |
|---|
| dotnet-debug ekleme |
| dotnet-debug open-dump |
dotnet-debug ekleme
Canlı işleme ekler ve keşfetmek için hata ayıklama komutlarını içeren etkileşimli bir kabuk başlatır.
Özet
dotnet-debug attach <process-id> [-c|--commands <debug_command>] [--accept-license-agreement]
Arguments
<process-id>Eklenecek ve çözümlenen işlem kimliği.
Options
-c|--commands <debug_command>Komutları başlangıçta çalıştırır. Komutları zincirleme çağrısında bu parametrenin birden çok örneği kullanılabilir. Komutlar, komut satırında sağlandığı sırayla çalışır. Komutlar sonrasında çıkmak istiyorsanız
dotnet-debug, son komutunuz olmalıdırexit.--accept-license-agreementİstenmeden lisans sözleşmesini kabul eder.
Example
1234 kimliğine sahip çalışan bir işleme ekleme:
$ dotnet-debug attach 1234
Attaching to process: 1234 ...
Ready to process analysis commands. Type 'help' to list available commands or 'help [command]' to get detailed help on a command.
Type 'quit' or 'exit' to exit the session.
>
Eklemede bir komut çalıştırın ve sonra çıkın:
dotnet-debug attach 1234 -c clrstack -c exit
dotnet-debug open-dump
Döküm dosyasını keşfetmek için hata ayıklama komutlarıyla etkileşimli bir kabuk başlatır.
Özet
dotnet-debug open-dump <dump_path> [-c|--commands] [--accept-license-agreement]
Arguments
<dump_path>Analiz etmek için döküm dosyasının yolu.
Options
-c|--commands <debug_command>Komutları başlangıçta çalıştırır. Komutları zincirleme çağrısında bu parametrenin birden çok örneği kullanılabilir. Komutlar, komut satırında sağlandığı sırayla çalışır. Komutlar sonrasında çıkmak istiyorsanız
dotnet-debug, son komutunuz olmalıdırexit.--accept-license-agreementİstenmeden lisans sözleşmesini kabul eder.
Example
Döküm dosyasını açın ve analiz edin:
$ dotnet-debug open-dump ./core_20260209_135837
Loading dump: ./core_20260209_135837 ...
Ready to process analysis commands. Type 'help' to list available commands or 'help [command]' to get detailed help on a command.
Type 'quit' or 'exit' to exit the session.
>
SOS komutlarında hata ayıklama
attach Hem ve open-dump komutları hem de aşağıdaki SOS komutlarını kabul eden etkileşimli bir oturum açar.
| Command | İşlev |
|---|---|
analyzeoom |
GC yığınına bir ayırma isteğinde gerçekleşen son OOM'un bilgilerini görüntüler. |
clrmodules |
İşlemdeki yönetilen modülleri listeler. |
clrstack |
Yalnızca bir yönetilen kodların bir yığın izlemesini sağlar. |
clrthreads |
Çalışan yönetilen iş parçacıklarını listeler. |
clru |
Yönetilen yöntemin açıklamalı bir ayrıştırma durumunu görüntüler. |
d veya readmemory |
Bellek içeriğinin dökümünü alır. |
dbgout |
İç SOS günlüğünü etkinleştirir/devre dışı bırakır-off. |
dso |
Geçerli yığının sınırları içinde bulunan tüm yönetilen nesneleri görüntüler. |
dumpalc |
Belirtilen nesnenin yüklendiği collectible AssemblyLoadContext hakkındaki ayrıntıları görüntüler. |
dumparray |
Yönetilen dizi hakkındaki ayrıntıları görüntüler. |
dumpasync |
Atık olarak toplanan yığındaki zaman uyumsuz durum makineleri hakkındaki bilgileri görüntüler. |
dumpassembly |
Derlemeyle ilgili ayrıntıları görüntüler. |
dumpclass |
Belirtilen adreste EEClass yapı hakkındaki bilgileri görüntüler. |
dumpconcurrentdictionary |
Eşzamanlı sözlük içeriğini görüntüler. |
dumpconcurrentqueue |
Eşzamanlı kuyruk içeriğini görüntüler. |
dumpdelegate |
Temsilci hakkındaki bilgileri görüntüler. |
dumpdomain |
Tüm AppDomains veya belirtilen içindeki tüm derlemeler hakkındaki bilgileri görüntüler. |
dumpgcdata |
GC verileri hakkındaki bilgileri görüntüler. |
dumpgen |
Belirtilen nesil için yığın içeriğini görüntüler. |
dumpheap |
Atık olarak toplanan yığın hakkındaki bilgileri ve nesnelerle ilgili toplama istatistiklerini görüntüler. |
dumpil |
Yönetilen bir yöntemle ilişkili ortak ara dili (CIL) görüntüler. |
dumplog |
Bir bellek içi yük günlüğünün içeriğini belirtilen dosyaya yazar. |
dumpmd |
Belirtilen adreste MethodDesc yapı hakkındaki bilgileri görüntüler. |
dumpmodule |
Belirtilen adreste modül hakkındaki bilgileri görüntüler. |
dumpmt |
Belirtilen adreste yöntem tablosu hakkındaki bilgileri görüntüler. |
dumpobj |
Belirtilen adreste nesnenin bilgilerini görüntüler. |
dumpruntimetypes |
GC yığınındaki tüm System.RuntimeType nesnelerini bulur ve başvuruda bulundukları tür adını ve MethodTable'ı yazdırır. |
dumpsig |
tarafından <sigaddr> <moduleaddr>belirtilen bir yöntemin veya alanın imzasını dökümünü alır. |
dumpsigelem |
İmza nesnesinin tek bir öğesinin dökümünü alır. |
dumpstackobjects |
Geçerli yığının sınırları içinde bulunan tüm yönetilen nesneleri görüntüler. |
dumpvc |
Değer sınıfının alanları hakkındaki bilgileri görüntüler. |
eeheap |
İç çalışma zamanı veri yapıları tarafından kullanılan işlem belleği hakkındaki bilgileri görüntüler. |
eestack |
İşlemdeki tüm iş parçacıklarında çalışır dumpstack . |
eeversion |
Çalışma zamanı ve SOS sürümleri hakkındaki bilgileri görüntüler. |
ehinfo |
JIT-ed yönteminde özel durum işleme bloklarını görüntüler. |
exit veya quit |
Etkileşimli moddan çıkar. |
finalizequeue |
Sonlandırma için kaydolan tüm nesneleri görüntüler. |
findappdomain |
Bir GC nesnesinin AppDomain'ini çözümlemeye çalışır. |
gchandles |
İşlemdeki çöp toplayıcı tanıtıcılarıyla ilgili istatistikleri görüntüler. |
gcheapstat |
Çöp toplayıcı hakkındaki istatistikleri görüntüler. |
gcinfo |
Bir yöntem için JIT GC kodlamasını görüntüler. |
gcroot |
Belirtilen adreste nesneye yapılan başvurular (veya kökler) hakkındaki bilgileri görüntüler. |
gcwhere |
Belirtilen adresin GC yığınındaki konumu görüntüler. |
histclear |
Hist komutları ailesi tarafından kullanılan tüm kaynakları serbest bırakır. |
histinit |
Hatası ayıklanana kaydedilen yük günlüğünden SOS yapılarını başlatır. |
histobj |
Tüm stres günlüğü yeniden konumlandırma kayıtlarını inceler ve bağımsız değişken olarak geçirilen adrese yol açmış olabilecek çöp toplama yeniden konumlandırma zincirini görüntüler. |
histobjfind |
Belirtilen adreste nesneye başvuran tüm günlük girdilerini görüntüler. |
histroot |
Belirtilen kökün tanıtımlarıyla ve yeniden konumlandırılmalarıyla ilişkili bilgileri görüntüler. |
histstats |
Stres günlüğü istatistiklerini görüntüler. |
ip2md |
MethodDesc JIT ile derlenmiş kodda belirtilen adresteki yapıyı görüntüler. |
listnearobj |
Belirtilen adresin önündeki ve sonrasındaki nesneyi görüntüler. |
logopen |
Konsol dosyası günlüğünü etkinleştirir. |
logclose |
Konsol dosyası günlüğünü devre dışı bırakır. |
logging |
İç SOS günlüğünü etkinleştirir/devre dışı bırakır. |
lm veya modules |
İşlemdeki yerel modülleri görüntüler. |
name2ee |
Belirtilen modülde MethodTable belirtilen tür veya yöntem için ve EEClass yapılarını görüntüler. |
objsize |
Belirtilen nesnenin boyutunu görüntüler. |
parallelstacks |
Birleştirilmiş iş parçacıkları yığınını Visual Studio 'Paralel Yığınlar' paneline benzer şekilde görüntüler. |
pathto |
gc yolunu ile <root><target>görüntüler. |
pe veya printexception |
Belirtilen adreste sınıfından türetilen herhangi bir nesnenin Exception alanlarını görüntüler ve biçimlendirebilir. |
r veya registers |
İş parçacığının kayıtlarını görüntüler. |
runtimes |
Hedefteki çalışma zamanlarını listeler veya varsayılan çalışma zamanını değiştirir. |
setclrpath |
kullanarak setclrpath <path>coreclr dac/dbi dosyalarını yüklemek için yolu ayarlar. |
setsymbolserver |
Sembol sunucusu desteğini etkinleştirir. |
sos |
Çeşitli coreclr hata ayıklama komutlarını yürütür. söz dizimini sos <command-name> <args>kullanın. Daha fazla bilgi için kullanın soshelp. |
soshelp veya help |
Kullanılabilir tüm komutları görüntüler. |
soshelp <command> veya help <command> |
Belirtilen komutu görüntüler. |
syncblk |
SyncBlock tutucu bilgilerini görüntüler. |
taskstate |
Görev durumunu okunabilir bir biçimde görüntüler. |
threadpool |
Çalışma zamanı iş parçacığı havuzu hakkındaki bilgileri görüntüler. |
threadpoolqueue |
Kuyruğa alınmış iş parçacığı havuzu iş öğelerini görüntüler. |
threadstate |
Bir iş parçacığı durumunun anlamını oldukça yazdırır. |
threads <threadid> veya setthread <threadid> |
SOS komutları için geçerli iş parçacığı kimliğini ayarlar veya görüntüler. |
timerinfo |
Zamanlayıcıları çalıştırma hakkındaki bilgileri görüntüler. |
token2ee |
Belirtilen belirteç ve modül için MethodTable yapısını ve MethodDesc yapısını görüntüler. |
traverseheap |
Yığın bilgilerini CLR Profiler tarafından anlaşılan bir biçimde bir dosyaya yazar. |
verifyheap |
GC yığınında bozulma belirtileri olup olmadığını denetler. |
verifyobj |
Bir bağımsız değişken olarak geçirilen nesnede bozulma işaretleri olup olmadığını kontrol eder. |
Uyarı
Diğer ayrıntılar için bkz. .NET için SOS Hata Ayıklama Uzantısı.
Canlı işleme eklemek için kullanma dotnet-debug
Aşağıdaki örnekte, çalışan bir .NET işlemine nasıl eklendiği ve iş parçacığı havuzu sorununun nasıl araştırılması gösterilmektedir:
$ dotnet-debug attach 1902
Attaching to process: 1902 ...
Ready to process analysis commands. Type 'help' to list available commands or 'help [command]' to get detailed help on a command.
Type 'quit' or 'exit' to exit the session.
>
Bu eylem aşağıdaki gibi komutları kabul eden etkileşimli bir oturum açar:
> clrstack
OS Thread Id: 0x573d (0)
Child SP IP Call Site
00007FFD28B42C58 00007fb22c1a8ed9 [HelperMethodFrame_PROTECTOBJ: 00007ffd28b42c58] System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean, Boolean)
00007FFD28B42DD0 00007FB1B1334F67 System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
00007FFD28B42E20 00007FB1B18D33ED SymbolTestApp.Program.Foo4(System.String)
00007FFD28B42ED0 00007FB1B18D2FC4 SymbolTestApp.Program.Foo2(Int32, System.String)
00007FFD28B42F00 00007FB1B18D2F5A SymbolTestApp.Program.Foo1(Int32, System.String)
00007FFD28B42F30 00007FB1B18D168E SymbolTestApp.Program.Main(System.String[])
İşlenmeyen bir özel durumu görmek için:
> pe -lines
Exception object: 00007fb18c038590
Exception type: System.Reflection.TargetInvocationException
Message: Exception has been thrown by the target of an invocation.
InnerException: System.Exception, Use !PrintException 00007FB18C038368 to see more.
StackTrace (generated):
SP IP Function
00007FFD28B42DD0 0000000000000000 System.Private.CoreLib.dll!System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean, Boolean)
00007FFD28B42DD0 00007FB1B1334F67 System.Private.CoreLib.dll!System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)+0xa7
00007FFD28B42E20 00007FB1B18D33ED SymbolTestApp.dll!SymbolTestApp.Program.Foo4(System.String)+0x15d
StackTraceString: <none>
HResult: 80131604
dotnet-debug ve dotnet-dump
dotnet-debug ve dotnet-dump aynı SOS hata ayıklama komutlarını paylaşın, ancak farklı birincil amaçlara hizmet edin:
| Özellik | dotnet-debug |
dotnet-dump |
|---|---|---|
| Canlı işleme ekleme | ✔️ | ❌ |
| Dökümleri toplama | ❌ | ✔️ |
| Döküm dosyalarını analiz etme | ✔️ | ✔️ |
.NET işlemlerini listeleme (ps) |
❌ | ✔️ |
Canlı bir işlemde etkileşimli olarak hata ayıklamanız gerektiğinde kullanın dotnet-debug . Dökümleri toplamanız veya çevrimdışı analiz etmeniz gerektiğinde kullanın dotnet-dump .