Yönetilen yığın izlemelerini inceleme (dotnet-stack)
Bu makale şunlar için geçerlidir: ✔️ dotnet-stack
sürüm 5.0.221401 ve sonraki sürümler
Yükleme
İndirmenin ve yüklemenin dotnet-stack
iki yolu vardır:
dotnet genel aracı:
NuGet paketinin en son sürüm sürümünü
dotnet-stack
yüklemek için dotnet tool install komutunu kullanın:dotnet tool install --global dotnet-stack
Doğrudan indirme:
Platformunuzla eşleşen araç yürütülebilir dosyasını indirin:
OS Platform Windows x86 | x64 | Arm | Arm-x64 Linux x64 | Arm | Arm64 | musl-x64 | musl-Arm64
Özet
dotnet-stack [-h, --help] [--version] <command>
Açıklama
Araç dotnet-stack
:
- Platformlar arası bir .NET Core aracıdır.
- Hedef .NET işlemindeki tüm iş parçacıkları için yönetilen yığınları yakalar ve yazdırır.
EventPipe
.NET Core çalışma zamanı tarafından sağlanan izlemeyi kullanır.
Seçenekler
-h|--help
Komut satırı yardımlarını gösterir.
--version
dotnet-stack yardımcı programının sürümünü görüntüler.
Komutlar
Komut | Açıklama |
---|---|
dotnet-stack raporu | Hedef işlemdeki her iş parçacığı için yığın izlemesini yazdırır. |
dotnet-stack ps | İzlemelerin toplandığı dotnet işlemlerini listeler. |
dotnet-stack symbolicate | Bir yığın içindeki Yöntem Belirteci ve IL Uzaklığı'ndan satır numarasını alın. |
dotnet-stack raporu
Hedef işlemdeki her iş parçacığı için yığın izlemesini yazdırır.
Özet
dotnet-stack report -p|--process-id <pid>
-n|--name <process-name>
[-h|--help]
Seçenekler
-n, --name <name>
Yığını raporlama işleminin adı.
-p|--process-id <PID>
Yığını raporlamak için işlem kimliği.
dotnet-stack ps
İzlemelerin toplandığı dotnet işlemlerini listeler.
dotnet-stack
sürüm 6.0.320703 ve sonraki sürümler, varsa her işlemin başlatıldığı komut satırı bağımsız değişkenlerini de görüntüler.
Özet
dotnet-stack ps [-h|--help]
Örnek
komutunu dotnet run --configuration Release
kullanarak uzun süre çalışan bir uygulama başlattığınızı varsayalım. Başka bir pencerede komutunu çalıştırırsınız dotnet-stack ps
. Göreceğiniz çıkış aşağıdaki gibidir. Varsa, komut satırı bağımsız değişkenleri 6.0.320703 ve sonraki sürümlerde dotnet-stack
gösterilir.
> dotnet-stack ps
21932 dotnet C:\Program Files\dotnet\dotnet.exe run --configuration Release
36656 dotnet C:\Program Files\dotnet\dotnet.exe
dotnet-stack symbolicate
Bir yığın içindeki Yöntem Belirteci ve IL Uzaklığı'ndan satır numarasını alın.
Özet
dotnet-stack symbolicate <input-path> [-d|--search-dir] [-o|--output] [-c|--stdout] [-h|--help]
Seçenekler
-d, --search-dir <directory1 directory2 ...>
Derleme ve pdb içeren birden çok dizinin yolu.
-o, --output <output-path>
Doğrudan bir dosyaya çıkış.
-c, --stdout
Doğrudan bir konsola çıkış.
Örnek
> cat stack.trace
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
at DotnetStackSymbolicate.App.MethodA() in DotnetStackSymbolicate.dll:token 0x6000002+0x6
at DotnetStackSymbolicate.App..ctor() in DotnetStackSymbolicate.dll:token 0x6000003+0x51
at DotnetStackSymbolicate.Program.OnCreate() in DotnetStackSymbolicate.Tizen.dll:token 0x6000001+0x8
onSigabrt called
>
> dotnet-stack symbolicate stack.trace --stdout
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
at DotnetStackSymbolicate.App.MethodA() in C:\DotnetStackSymbolicate\DotnetStackSymbolicate.cs:line 19
at DotnetStackSymbolicate.App..ctor() in C:\DotnetStackSymbolicate\DotnetStackSymbolicate.cs:line 38
at DotnetStackSymbolicate.Program.OnCreate() in C:\DotnetStackSymbolicate.Tizen\DotnetStackSymbolicate.Tizen.cs:line 12
onSigabrt called
Output: stack.trace.symbolicated
Yönetilen yığınları dotnet-stack ile raporlama
kullanarak dotnet-stack
yönetilen yığınları raporlamak için:
Yığınları raporlamak için .NET Core uygulamasının işlem tanımlayıcısını (PID) alın.
- Windows'da Görev Yöneticisi'ni
tasklist
veya komutunu kullanabilirsiniz. - Örneğin
ps
Linux'ta komutu. - dotnet-stack ps
- Windows'da Görev Yöneticisi'ni
Şu komutu çalıştırın:
dotnet-stack report --process-id <PID>
Yukarıdaki komut aşağıdakine benzer bir çıkış oluşturur:
Thread (0x48839B): [Native Frames] System.Console!System.IO.StdInReader.ReadKey(bool&) System.Console!System.IO.SyncTextReader.ReadKey(bool&) System.Console!System.ConsolePal.ReadKey(bool) System.Console!System.Console.ReadKey() StackTracee!Tracee.Program.Main(class System.String[])
çıktısı
dotnet-stack
aşağıdaki formu izler:- Çıktıdaki açıklamalar ön ekinde bulunur
#
. - Her iş parçacığının yerel iş parçacığı kimliğini içeren bir üst bilgisi vardır:
Thread (<thread-id>):
. - Yığın çerçeveleri formunu
Module!Method
izler. - Yönetilmeyen koda geçişler çıkışta olduğu gibi
[Native Frames]
gösterilir.
# comment Thread (0x1234): module!Method module!Method Thread (0x5678): [Native Frames] Module!Method Module!Method
- Çıktıdaki açıklamalar ön ekinde bulunur
Not
İşlemin durdurulması, çok büyük uygulamalar için uzun sürebilir (birkaç dakikaya kadar). Çalışma zamanının, işlev adlarını çözümlemek için yakalanan tüm yönetilen kod için tür ve yöntem bilgilerini göndermesi gerekir.