Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
LLDB adalah debugger sumber terbuka yang kuat yang merupakan bagian dari proyek LLVM. Saat Anda men-debug aplikasi .NET di Linux, Anda dapat menggunakan LLDB dengan ekstensi debugger .NET untuk memeriksa status aplikasi terkelola. LLDB dapat bekerja dengan cadangan dan proses langsung.
Instalasi
Menginstal LLDB
Ekstensi debugger .NET memerlukan setidaknya LLDB 3.9 tetapi versi 10.0 atau yang lebih baru direkomendasikan. Bagian berikut memberikan instruksi untuk menginstal LLDB pada distribusi Linux populer.
AzureLinux 2.0 dan yang lebih baru
Untuk menginstal paket LLDB:
sudo tdnf install lldb
Untuk meluncurkan LLDB:
lldb
Ubuntu 20.04 dan yang lebih baru
Untuk menginstal paket LLDB:
sudo apt-get update
sudo apt-get install lldb
Untuk meluncurkan LLDB:
lldb
Alpine 3.9 dan yang lebih baru
Untuk menginstal paket LLDB:
apk update
apk add lldb py3-lldb
Untuk meluncurkan LLDB:
lldb
Debian 9 dan yang lebih baru
Untuk menginstal paket LLDB:
sudo apt-get install lldb-3.9 python-lldb-3.9
Untuk meluncurkan LLDB:
lldb-3.9
Fedora 29 dan yang lebih baru
Untuk menginstal paket LLDB:
sudo dnf install lldb python2-lldb
Untuk meluncurkan LLDB:
lldb
RHEL 7.5 dan yang lebih baru
Lihat LLDB di situs web RedHat.
Menginstal ekstensi debugger .NET
Instal ekstensi debugger .NET menggunakan alat pemasangan dotnet-debugger-extensions. Alat penginstal membuat file .lldbinit di direktori beranda Anda yang secara otomatis memuat ekstensi saat Anda memulai LLDB.
Nota
Versi ekstensi debugger tidak perlu cocok dengan versi runtime .NET. Sebaiknya gunakan versi ekstensi terbaru.
Nota
Menginstal dengan dotnet-sos alih-alih dotnet-debugger-extensions juga berfungsi, tetapi hanya menginstal subset perintah ekstensi.
Mulai menggunakan LLDB
Contoh ini menunjukkan penggunaan LLDB untuk melampirkan ke aplikasi .NET yang sudah ada sebelumnya (dotnet webapp.dll) yang berjalan di komputer.
Gunakan perintah
psuntuk menemukan ID proses (PID) aplikasi .NET yang ingin Anda debug.$ ps -ao pid,cmd PID CMD 697 -bash 229233 dotnet webapp.dll 229696 ps -ao pid,cmd ... other processes omitted for brevity ...Dalam hal ini, PID aplikasi .NET yang akan di-debug adalah 229233.
Jalankan LLDB dan lampirkan ke proses.
Luncurkan LLDB menggunakan perintah yang sesuai untuk distribusi Anda (ditunjukkan sebelumnya di bagian Instal LLDB). Seringkali ini hanya
lldb, tetapi beberapa distro memerlukan nomor versi dalam nama, sepertilldb-3.9.$ lldb Current symbol store settings: -> Cache: /home/username/.dotnet/symbolcache -> Server: https://msdl.microsoft.com/download/symbols/ Timeout: 4 RetryCount: 0 (lldb)Saat di prompt
(lldb), jalankan perintah menghubungkan proses.(lldb) process attach --pid 229233 Process 229233 stopped * thread #1, name = 'dotnet', stop reason = signal SIGSTOP frame #0: 0x00007f2ca7c11117 libc.so.6`___lldb_unnamed_symbol3457 + 231 libc.so.6`___lldb_unnamed_symbol3457: -> 0x7f2ca7c11117 <+231>: movl %r12d, %edi 0x7f2ca7c1111a <+234>: movq %rax, %rbx 0x7f2ca7c1111d <+237>: callq 0x7f2ca7c10a60 ; ___lldb_unnamed_symbol3445 0x7f2ca7c11122 <+242>: jmp 0x7f2ca7c11089 ; <+89> thread #2, name = 'dotnet-ust', stop reason = signal SIGSTOP frame #0: 0x00007f2ca7c9e88d libc.so.6`syscall + 29 libc.so.6`syscall: ... more output omitted ...Debugger sekarang terpasang dan Anda dapat menggunakan perintah LLDB bawaan dan perintah ekstensi debugger .NET untuk memeriksa status proses.
Nota
Jika LLDB mengeluarkan 'kesalahan: melampirkan gagal: Operasi tidak diizinkan', ini berarti Anda tidak memiliki hak istimewa yang memadai untuk debug. Cara yang paling dapat diandalkan untuk mengatasinya adalah dengan berhenti dari LLDB dan memulai ulang menggunakan sudo. Ketika LLDB yang ditingkatkan tidak akan secara otomatis menjalankan skrip .lldbinit normal, Anda dapat melakukannya secara eksplisit dengan menggunakan argumen
--sourcepada baris perintah:sudo lldb --source ~/.lldbinit.Jalankan perintah contoh
Perintah clrstack menampilkan pelacakan tumpukan untuk kode .NET pada utas yang saat ini dipilih.
(lldb) clrstack OS Thread Id: 0x497 (1) Child SP IP Call Site 00007FFD0877D260 00007f2ca7c11117 [HelperMethodFrame_1OBJ: 00007ffd0877d260] System.Threading.Monitor.ObjWait(Int32, System.Object) 00007FFD0877D390 00007F2C2864AA0E System.Threading.Monitor.Wait(System.Object, Int32) 00007FFD0877D3A0 00007F2C28654625 System.Threading.ManualResetEventSlim.Wait(Int32, System.Threading.CancellationToken) 00007FFD0877D420 00007F2C286684A8 System.Threading.Tasks.Task.SpinThenBlockingWait(Int32, System.Threading.CancellationToken) 00007FFD0877D480 00007F2C2866832D System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken) 00007FFD0877D4D0 00007F2C286B2508 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions) 00007FFD0877D4F0 00007F2C29281B45 Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(Microsoft.Extensions.Hosting.IHost) 00007FFD0877D510 00007F2C29121A7D Program.<Main>$(System.String[]) [/home/username/app/Program.cs @ 25]
Langkah berikutnya
Untuk mempelajari selengkapnya tentang perintah yang tersedia saat men-debug aplikasi .NET dengan LLDB, lihat dokumentasi untuk ekstensi .NET debugger dan LLDB.
Lihat juga
- LLDB untuk informasi selengkapnya tentang debugger LLDB.
- ekstensi debugger .NET untuk referensi perintah ekstensi yang tersedia.
- simbol dotnet untuk informasi lebih lanjut mengenai menginstal dan menggunakan alat pengunduhan simbol.