Aracılığıyla paylaş


Linux dökümlerinin hatasını ayıklama

Bu makale şunlar için geçerlidir: ✔️ .NET Core 3.0 SDK ve sonraki sürümler

Linux'ta dökümleri toplama

İpucu

Döküm toplama, analiz ve diğer uyarılar hakkında sık sorulan sorular için bkz . Dökümler: SSS.

Linux'ta dökümleri toplamanın önerilen iki yolu şunlardır:

Linux'ta dökümleri analiz etme

Döküm toplandıktan sonra, komutuyla dotnet-dump analyze araç kullanılarak dotnet-dump analiz edilebilir. Bu analiz adımının dökümü yakalanan ortamla aynı mimariye ve Linux dağıtımına sahip bir makinede çalıştırılması gerekir. Araç dotnet-dump .NET kodu hakkındaki bilgilerin görüntülenmesini destekler, ancak C ve C++ gibi diğer dillerdeki kod sorunlarını anlamak için kullanışlı değildir.

Alternatif olarak LLDB, Linux'ta dökümleri analiz etmek için kullanılabilir ve bu da hem yönetilen hem de yerel kodun analizine olanak tanır. LLDB, yönetilen kodda hata ayıklamak için SOS uzantısını kullanır. dotnet-sos CLI aracı, yönetilen kodda hata ayıklamak için birçok yararlı komut içeren SOS'u yüklemek için kullanılabilir. .NET Core dökümlerini analiz etmek için LLDB ve SOS, dökümü oluşturulduğu ortamdan aşağıdaki .NET Core ikili dosyalarını gerektirir:

  1. libmscordaccore.so
  2. libcoreclr.so
  3. dotnet (uygulamayı başlatmak için kullanılan konak)

Çoğu durumda, bu ikili dosyalar araç kullanılarak dotnet-symbol indirilebilir. Gerekli ikili dosyalar ile dotnet-symbol indirilemiyorsa (örneğin, kaynaktan oluşturulan özel bir .NET Core sürümü kullanılıyorsa), dökümünün oluşturulduğu ortamdan yukarıda listelenen dosyaları kopyalamak gerekebilir. Dosyalar döküm dosyasının yanında yer almıyorsa, LLDB/SOS komutunu setclrpath <path> kullanarak yüklenmesi gereken yolu ayarlayabilir ve setsymbolserver -directory <path> sembol dosyalarının aranacağı yolu ayarlayabilirsiniz.

Gerekli dosyalar kullanılabilir olduğunda, hata ayıklamak için yürütülebilir dosya olarak dotnet konağı belirtilerek döküm LLDB'ye yüklenebilir:

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

Önceki komutta, <dump-file> analiz etmek için döküm yoludur ve <host-program> .NET Core uygulamasını başlatan yerel programdır. Bu genellikle dotnet uygulama kendi içinde olmadığı sürece ikili dosyadır ve bu durumda .dll uzantısı olmayan uygulamanın adıdır.

LLDB başladıktan sonra, doğru sembol konumunusetsymbolserver -ms (Microsoft'un sembol sunucusunu kullanmak veya setsymbolserver -directory <path> yerel bir yol belirtmek için) işaret etmek için komutunu kullanmak gerekebilirsetsymbolserver. Yerel simgeleri yüklemek için komutunu çalıştırın loadsymbols. Bu noktada, dökümü analiz etmek için SOS komutlarını kullanabilirsiniz.

Not

LLDB komutuyla yüklenebilir sudo apt-get install lldb

Windows'da dökümleri analiz etme

Linux makinesinden toplanan dökümler Visual Studio, Windbg veya dotnet-dump aracı kullanılarak bir Windows makinesinde de analiz edilebilir. Hem Visual Studio hem de Windbg yerel ve yönetilen kodu analiz edebilirken dotnet-dump yalnızca yönetilen kodu analiz eder.

Not

Visual Studio sürüm 16.8 ve üzeri, .NET Core 3.1.7 veya sonraki sürümlerde oluşturulan Linux dökümlerini açmanızı ve analiz etmenizi sağlar.

  • Visual Studio - Bkz . Visual Studio dökümü hata ayıklama kılavuzu.
  • Windbg - Windows kullanıcı modu dökümlerinde hata ayıklamak için kullanacağınız yönergeleri kullanarak windbg'de Linux dökümlerinde hata ayıklayabilirsiniz. Linux x64 veya Arm64 ortamından toplanan dökümler için windbg'nin x64 sürümünü ve Linux x86 ortamından toplanan dökümler için x86 sürümünü kullanın.
  • dotnet-dump - dotnet-dump analyze komutunu kullanarak dökümü görüntüleyin. Linux x64 veya Arm64 ortamından toplanan dökümler için dotnet-dump'un x64 sürümünü ve Linux x86 ortamından toplanan dökümler için x86 sürümünü kullanın.

Ayrıca bkz.