Aracılığıyla paylaş


Linux döküm dosyalarında hata ayıklama

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

Linux'ta döküm dosyalarını toplama

Tavsiye

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 et

Döküm toplandıktan sonra, dotnet-dump aracı dotnet-dump analyze komutuyla kullanılarak 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 dotnet-symbol aracı kullanılarak indirilebilir. Gerekli ikili dosyalar dotnet-symbol ile indirilemiyorsa (örneğin, kaynaktan oluşturulan özel bir .NET Core sürümü kullanılıyorsa), dökümü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 ikili dosyadır, ancak uygulama kendi içinde olduğunda, .dll uzantısı olmayan uygulamanın adıdır.

LLDB başladıktan sonra, doğru sembol konumunu işaret etmek için setsymbolserver komutunu (setsymbolserver -ms Microsoft'un sembol sunucusunu kullanmak veya setsymbolserver -directory <path> yerel bir yol belirtmek için) kullanmak gerekebilir. 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.

Uyarı

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.

Uyarı

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 bakınız