Memeriksa pelacakan tumpukan terkelola (dotnet-stack)
Artikel ini berlaku untuk: ✔️ versi 5.0.221401 dotnet-stack
dan versi yang lebih baru
Instal
Ada dua cara untuk mengunduh dan menginstal dotnet-stack
:
alat global dotnet:
Untuk menginstal versi rilis terbaru paket
dotnet-stack
NuGet, gunakan perintah penginstalan alat dotnet:dotnet tool install --global dotnet-stack
Pengunduhan langsung:
Unduh alat yang dapat dijalankan yang cocok dengan platform Anda:
OS Platform Windows x86 | x64 | Arm | Arm-x64 Linux x64 | Arm | Arm64 | musl-x64 | musl-Arm64
Sinopsis
dotnet-stack [-h, --help] [--version] <command>
Deskripsi
Alat dotnet-stack
:
- Adalah alat .NET Core lintas platform.
- Ambil dan cetak tumpukan terkelola untuk semua alur dalam proses .NET target.
- Manfaatkan pelacakan
EventPipe
yang disediakan oleh runtime .NET Core.
Opsi
-h|--help
Tampilkan bantuan baris perintah.
--version
Tampilkan versi utilitas dotnet-stack.
Perintah
Perintah | Deskripsi |
---|---|
laporan dotnet-stack | Mencetak jejak tumpukan untuk setiap alur dalam proses target. |
dotnet-stack ps | Mencantumkan proses dotnet tempat jejak tumpukan dapat dikumpulkan. |
simbolikasi dotnet-stack | Dapatkan nomor baris dari Token Metode dan Offset IL dalam stacktrace. |
laporan dotnet-stack
Mencetak jejak tumpukan untuk setiap alur dalam proses target.
Sinopsis
dotnet-stack report -p|--process-id <pid>
-n|--name <process-name>
[-h|--help]
Opsi
-n, --name <name>
Nama proses untuk melaporkan tumpukan dari.
-p|--process-id <PID>
ID proses untuk melaporkan tumpukan dari.
dotnet-stack ps
Mencantumkan proses dotnet tempat jejak tumpukan dapat dikumpulkan.
Versi 6.0.320703 dotnet-stack
dan versi yang lebih baru juga menampilkan argumen baris perintah yang digunakan setiap proses, jika tersedia.
Sinopsis
dotnet-stack ps [-h|--help]
Contoh
Misalkan Anda memulai aplikasi yang berjalan lama menggunakan perintah dotnet run --configuration Release
. Di jendela lain, Anda menjalankan perintah dotnet-stack ps
. Output yang akan Anda lihat adalah sebagai berikut. Argumen baris perintah, jika ada, ditampilkan di versi 6.0.320703 dotnet-stack
dan yang lebih baru.
> dotnet-stack ps
21932 dotnet C:\Program Files\dotnet\dotnet.exe run --configuration Release
36656 dotnet C:\Program Files\dotnet\dotnet.exe
simbolikasi dotnet-stack
Dapatkan nomor baris dari Token Metode dan Offset IL dalam stacktrace.
Sinopsis
dotnet-stack symbolicate <input-path> [-d|--search-dir] [-o|--output] [-c|--stdout] [-h|--help]
Opsi
-d, --search-dir <directory1 directory2 ...>
Jalur beberapa direktori dengan rakitan dan pdb.
-o, --output <output-path>
Output langsung ke file.
-c, --stdout
Output langsung ke konsol.
Contoh
> 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
Melaporkan tumpukan terkelola dengan dotnet-stack
Untuk melaporkan tumpukan terkelola menggunakan dotnet-stack
:
Dapatkan pengidentifikasi proses (PID) dari aplikasi .NET Core untuk melaporkan tumpukan.
- Di Windows, Anda dapat menggunakan Manajer Tugas atau perintah
tasklist
, misalnya. - Di Linux, misalnya, perintah
ps
. - dotnet-stack ps
- Di Windows, Anda dapat menggunakan Manajer Tugas atau perintah
Jalankan perintah berikut:
dotnet-stack report --process-id <PID>
Perintah sebelumnya menghasilkan output yang mirip dengan berikut ini:
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[])
Output dari
dotnet-stack
mengikuti bentuk berikut:- Komentar dalam output diawali dengan
#
. - Setiap alur memiliki header yang menyertakan ID alur asli:
Thread (<thread-id>):
. - Bingkai tumpukan mengikuti bentuk
Module!Method
. - Transisi ke kode tak terkelola direpresentasikan sebagai
[Native Frames]
dalam output.
# comment Thread (0x1234): module!Method module!Method Thread (0x5678): [Native Frames] Module!Method Module!Method
- Komentar dalam output diawali dengan
Catatan
Menghentikan proses dapat memakan waktu lama (hingga beberapa menit) untuk aplikasi yang sangat besar. Runtime perlu mengirimkan informasi jenis dan metode untuk semua kode terkendali yang diambil untuk menyelesaikan nama fungsi.