Men-debug cadangan Linux

Artikel ini berlaku untuk: ✔️ .NET Core 3.0 SDK dan versi yang lebih baru

Mengumpulkan cadangan di Linux

Tip

Untuk tanya jawab umum tentang pengumpulan cadangan, analisis, dan peringatan lainnya, lihat Dump: FAQ.

Dua cara yang direkomendasikan untuk mengumpulkan cadangan di Linux adalah:

Menganalisis cadangan di Linux

Setelah cadangan dikumpulkan, dapat dianalisis menggunakan dotnet-dump alat dengan dotnet-dump analyze perintah . Langkah analisis ini perlu dijalankan pada mesin yang memiliki arsitektur dan distro Linux yang sama dengan lingkungan tempat cadangan ditangkap. Alat ini dotnet-dump mendukung menampilkan informasi tentang kode .NET, tetapi tidak berguna untuk memahami masalah kode untuk bahasa lain seperti C dan C++.

Atau, LLDB dapat digunakan untuk menganalisis cadangan di Linux, yang memungkinkan analisis kode terkelola dan asli. LLDB menggunakan ekstensi SOS untuk men-debug kode terkelola. Alat dotnet-sos CLI dapat digunakan untuk menginstal SOS, yang memiliki banyak perintah berguna untuk men-debug kode terkelola. Untuk menganalisis cadangan .NET Core, LLDB dan SOS memerlukan biner .NET Core berikut dari lingkungan tempat cadangan dibuat di:

  1. libmscordaccore.so
  2. libcoreclr.so
  3. dotnet (host yang digunakan untuk meluncurkan aplikasi)

Dalam kebanyakan kasus, biner ini dapat diunduh menggunakan alat ini dotnet-symbol . Jika biner yang diperlukan tidak dapat diunduh dengan dotnet-symbol (misalnya, jika versi privat .NET Core yang dibangun dari sumber sedang digunakan), mungkin perlu menyalin file yang tercantum di atas dari lingkungan tempat cadangan dibuat. Jika file tidak terletak di samping file cadangan, Anda dapat menggunakan perintah setclrpath <path> LLDB/SOS untuk mengatur jalur tempat file harus dimuat dan setsymbolserver -directory <path> untuk mengatur jalur untuk mencari file simbol.

Setelah file yang diperlukan tersedia, cadangan dapat dimuat di LLDB dengan menentukan host dotnet sebagai yang dapat dieksekusi untuk men-debug:

lldb --core <dump-file> <host-program>

Dalam perintah sebelumnya, <dump-file> adalah jalur cadangan untuk dianalisis dan <host-program> merupakan program asli yang memulai aplikasi .NET Core. Ini biasanya dotnet biner kecuali aplikasi mandiri, dalam hal ini adalah nama aplikasi tanpa ekstensi .dll .

Setelah LLDB dimulai, mungkin perlu menggunakan setsymbolserver perintah untuk menunjuk ke lokasi simbol yang benar (setsymbolserver -ms untuk menggunakan server simbol Microsoft atau setsymbolserver -directory <path> untuk menentukan jalur lokal). Untuk memuat simbol asli, jalankan loadsymbols. Pada titik ini, Anda dapat menggunakan perintah SOS untuk menganalisis cadangan.

Catatan

LLDB dapat diinstal dengan perintah sudo apt-get install lldb

Menganalisis cadangan di Windows

Cadangan yang dikumpulkan dari komputer Linux juga dapat dianalisis pada komputer Windows menggunakan Visual Studio, Windbg, atau alat dotnet-dump . Visual Studio dan Windbg dapat menganalisis kode asli dan terkelola, sementara dotnet-dump hanya menganalisis kode terkelola.

Catatan

Visual Studio versi 16.8 dan yang lebih baru memungkinkan Anda membuka dan menganalisis cadangan Linux yang dihasilkan pada .NET Core 3.1.7 atau yang lebih baru.

  • Visual Studio - Lihat panduan penelusuran kesalahan cadangan Visual Studio.
  • Windbg - Anda dapat men-debug cadangan Linux di windbg menggunakan instruksi yang sama yang akan Anda gunakan untuk men-debug cadangan mode pengguna Windows. Gunakan windbg versi x64 untuk cadangan yang dikumpulkan dari lingkungan Linux x64 atau Arm64 dan versi x86 untuk cadangan yang dikumpulkan dari lingkungan Linux x86.
  • dotnet-dump - Lihat dump menggunakan perintah dotnet-dump analyze . Gunakan versi x64 dotnet-dump untuk cadangan yang dikumpulkan dari lingkungan Linux x64 atau Arm64 dan versi x86 untuk cadangan yang dikumpulkan dari lingkungan Linux x86.

Lihat juga

  • dotnet-sos untuk detail selengkapnya tentang menginstal ekstensi SOS.
  • dotnet-symbol untuk detail selengkapnya tentang menginstal dan menggunakan alat pengunduhan simbol.
  • Repositori diagnostik .NET Core untuk detail selengkapnya tentang penelusuran kesalahan, termasuk FAQ yang berguna.
  • Menginstal LLDB untuk instruksi tentang menginstal LLDB di Linux atau Mac.
  • Berlatih dan memecahkan masalah di Linux untuk tutorial tentang debugging crash dump di Linux