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:
dotnet-dump
CLI aracı- Kilitlenmelerle ilgili dökümleri toplayan ortam değişkenleri
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:
- libmscordaccore.so
- libcoreclr.so
- 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.
- SOS uzantısını yükleme hakkında daha fazla bilgi için dotnet-sos.
- sembol indirme aracını yükleme ve kullanma hakkında daha fazla bilgi için dotnet-symbol .
- Hata ayıklama hakkında daha fazla ayrıntı için yararlı bir SSS de dahil olmak üzere .NET Core tanılama deposu .
- LINUX veya Mac'e LLDB yükleme yönergeleri için LLDB'yi yükleme.
- Linux'ta kilitlenme bilgi dökümlerinde hata ayıklama öğreticisi için Linux'ta alıştırma yapma ve sorun giderme