Ekstensi debugger .NET
Ekstensi debugger .NET memungkinkan Anda melihat informasi tentang kode yang berjalan di dalam runtime .NET, baik pada proses langsung maupun cadangan. Ekstensi telah diinstal sebelumnya dengan
- Kumpulkan informasi tentang tumpukan terkelola.
- Cari kerusakan tumpukan.
- Tampilkan jenis data internal yang digunakan oleh runtime.
- Lihat informasi tentang semua kode terkelola yang berjalan di dalam runtime.
Ekstensi debugger .NET menyertakan perintah dari alat
Sintaksis
Di bawah windbg: ![command] [options]
Di bawah LLDB: sos [command] [options]
Banyak perintah memiliki alias atau pintasan di bawah LLDB: clrstack [options]
Perintah
Tabel perintah berikut ini juga tersedia di Bantuan atau soshelp. Bantuan perintah individual tersedia menggunakan soshelp <command>
.
Perintah | Deskripsi |
---|---|
Membuat titik henti pada metode yang ditentukan dalam modul yang ditentukan. Jika modul dan metode yang ditentukan belum dimuat, perintah ini menunggu pemberitahuan bahwa modul dimuat dan just-in-time (JIT) dikompilasi sebelum membuat titik henti. Anda dapat mengelola daftar titik henti yang tertunda dengan menggunakan opsi-list Opsi Gunakan opsi -clear atau -clearall untuk menghapus titik henti yang tertunda dari daftar. |
|
CLRStack [-a] [-l] [-p] [-n] [-f] [-r] [-all] | Menyediakan jejak tumpukan kode terkelola saja. Opsi -p Opsi -l menunjukkan informasi tentang variabel lokal dalam bingkai. Ekstensi debugger .NET tidak dapat mengambil nama lokal, sehingga output untuk nama lokal dalam format <alamat lokal>=<nilai>. Opsi Opsi -n menonaktifkan tampilan nama file sumber dan nomor baris. Jika debugger memiliki opsi SYMOPT_LOAD_LINES ditentukan, SOS mencari simbol untuk setiap bingkai terkelola dan jika berhasil, menampilkan nama file sumber dan nomor baris yang sesuai. Parameter -n (Tanpa nomor baris) dapat ditentukan untuk menonaktifkan perilaku ini. Opsi -f (mode penuh) menampilkan bingkai asli yang mengintermiksnya dengan bingkai terkelola dan nama rakitan dan offset fungsi untuk bingkai terkelola. Opsi ini tidak menampilkan bingkai asli saat digunakan dengan dotnet-dump .Opsi -r mencadangkan register untuk setiap bingkai tumpukan. Opsi -all mencadangkan tumpukan semua utas terkelola. |
COMState | Mencantumkan model apartemen COM untuk setiap utas dan penunjuk Context , jika tersedia. Perintah ini hanya didukung pada Windows. |
DumpArray [-start<startIndex>] [panjang<panjang>] [-details] [-nofields] <alamat objek array> -atau- |
Memeriksa elemen objek array. Opsi Opsi Opsi Opsi |
DumpAsync (dumpasync) [-mt<methodTable>] [-type<nama jenis parsial>] [-waiting] [-roots] | DumpAsync melintasi tumpukan yang dikumpulkan sampah dan mencari objek yang mewakili mesin status asinkron seperti yang dibuat ketika status metode asinkron ditransfer ke tumpukan. Perintah ini mengenali mesin status asinkron yang didefinisikan sebagai async void , async Task , async Task<T> , async ValueTask , dan async ValueTask<T> .Output mencakup blok detail untuk setiap objek komputer status asinkron yang ditemukan. Detail ini meliputi: - Baris untuk jenis objek mesin status asinkron, termasuk alamat MethodTable, alamat objeknya, ukurannya, dan nama jenisnya. - Baris untuk nama jenis komputer status seperti yang terkandung dalam objek. - Daftar setiap bidang pada mesin status. - Baris untuk kelanjutan dari objek komputer status ini, jika satu atau beberapa telah terdaftar. - Menemukan akar GC untuk objek mesin status asinkron ini. Didukung untuk aplikasi AOT Asli. |
Menampilkan informasi tentang rakitan. Perintah DumpAssembly mencantumkan beberapa modul, jika ada. Anda bisa mendapatkan alamat rakitan dengan menggunakan perintah |
|
alamat DumpClass<EEClass> | Menampilkan informasi tentang struktur EEClass yang terkait dengan tipe.Perintah DumpClass Gunakan perintah |
Menghitung setiap objek Assembly yang dimuat dalam alamat objek AppDomain yang ditentukan. Saat dipanggil tanpa parameter, perintah DumpDomain mencantumkan semua objek AppDomain dalam proses. Karena .NET (Core) hanya memiliki satu AppDomain, DumpDomain hanya mengembalikan satu objek. | |
DumpHeap [-stat] [-strings] [-short] [-min<size>] [-max<size>] [-thinlock] [-startAtLowerBound] [-mt<MethodTable>] [-type<nama jenis parsial>] [mulai [akhir]] | Menampilkan informasi tentang statistik tumpukan dan pengumpulan yang dikumpulkan sampah tentang objek. Perintah DumpHeap menampilkan peringatan jika mendeteksi fragmentasi yang berlebihan di tumpukan pengumpul sampah. Opsi Opsi Opsi -short membatasi output hanya untuk alamat setiap objek. Perintah ini memungkinkan Anda dengan mudah menyalurkan output dari perintah ke perintah debugger lain untuk otomatisasi. Opsi -min mengabaikan objek yang kurang dari parameter size , yang ditentukan dalam byte.Opsi Opsi Opsi -startAtLowerBound memaksa tumpukan berjalan untuk memulai di batas bawah rentang alamat yang disediakan. Selama fase perencanaan, tumpukan sering kali tidak dapat dilalui karena objek sedang dipindahkan. Opsi ini memaksa DumpHeap untuk memulai perjalanannya di batas bawah yang ditentukan. Anda harus menyediakan alamat objek yang valid sebagai batas bawah agar opsi ini berfungsi. Anda dapat menampilkan memori di alamat objek buruk untuk menemukan tabel metode berikutnya secara manual. Jika pengumpulan sampah saat ini dalam panggilan ke memcopy , Anda mungkin juga dapat menemukan alamat objek berikutnya dengan menambahkan ukuran ke alamat awal, yang disediakan sebagai parameter.Opsi -mt hanya mencantumkan objek yang sesuai dengan struktur MethodTable yang ditentukan.Opsi -type hanya mencantumkan objek yang nama jenisnya adalah kecocokan substring dari string yang ditentukan. Parameter start mulai mencantumkan dari alamat yang ditentukan.Parameter end berhenti mencantumkan di alamat yang ditentukan.Didukung untuk aplikasi AOT Asli. |
Menampilkan bahasa perantara umum (CIL) yang terkait dengan metode terkelola. Dynamic CIL dipancarkan secara berbeda dari CIL yang dimuat dari rakitan. Dynamic CIL mengacu pada objek dalam array objek terkelola daripada token metadata. |
|
DumpLock [--allthreads] [--waits] | Menampilkan informasi tentang objek System.Threading.Lock, seperti objek yang ditahan oleh utas (default), atau yang sedang ditunggu oleh utas. |
DumpLog [-addr<addressOfStressLog>] [<Filename>] | Menulis konten log stres dalam memori ke file yang ditentukan. Jika Anda tidak menentukan nama, perintah ini akan membuat file yang disebut StressLog.txt di direktori saat ini. Log stres dalam memori membantu Anda mendiagnosis kegagalan stres tanpa menggunakan kunci atau I/O. Untuk mengaktifkan log stres, atur kunci registri berikut di bawah HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework: (DWORD) StressLog = 1 (DWORD) LogFacility = 0xffffffff (DWORD) StressLogSize = 65536 Opsi -addr opsional memungkinkan Anda menentukan log stres selain log default.Didukung untuk aplikasi AOT Asli. |
Menampilkan informasi tentang struktur MethodDesc pada alamat yang ditentukan.Anda dapat menggunakan perintah IP2MD |
|
Menampilkan informasi tentang tabel metode pada alamat yang ditentukan. Menentukan opsi Setiap objek terkelola berisi penunjuk tabel metode. |
|
DumpModule [-mt] <Alamat modul> | Menampilkan informasi tentang modul pada alamat yang ditentukan. Opsi -mt menampilkan jenis yang ditentukan dalam modul dan jenis yang dirujuk oleh modul Anda dapat menggunakan perintah DumpDomain atau DumpAssembly untuk mengambil alamat modul. |
-atau- |
Menampilkan informasi tentang objek pada alamat yang ditentukan. Perintah DumpObj menampilkan bidang, informasi struktur EEClass , tabel metode, dan ukuran objek.Anda dapat menggunakan perintah Anda dapat menjalankan perintah Opsi |
DumpRuntimeTypes | Menampilkan objek jenis runtime dalam tumpukan pengumpul sampah dan mencantumkan nama jenis dan tabel metode terkait. |
DumpStack [-EE] [-n] [top tumpukan [ tumpukanbottom ]] |
Menampilkan pelacakan tumpukan. Opsi top dan bottom untuk membatasi bingkai tumpukan yang ditampilkan pada platform x86.Opsi -n menonaktifkan tampilan nama file sumber dan nomor baris. Jika debugger memiliki opsi SYMOPT_LOAD_LINES ditentukan, SOS akan mencari simbol untuk setiap bingkai terkelola dan jika berhasil menampilkan nama file sumber dan nomor baris yang sesuai. Parameter -n (Tanpa nomor baris) dapat ditentukan untuk menonaktifkan perilaku ini. |
DumpSig<modul><> sigaddr | Menampilkan informasi tentang struktur Sig pada alamat yang ditentukan. |
DumpSigElem<><moduleaddr> | Menampilkan elemen tunggal objek tanda tangan. Dalam kebanyakan kasus, Anda harus menggunakan DumpSig untuk melihat objek tanda tangan individual. Namun, jika tanda tangan telah rusak dalam beberapa cara, Anda dapat menggunakan DumpSigElem untuk membaca bagian yang valid. |
DumpStackObjects [-verifikasi] [ tumpukantop [ tumpukanbottom ]]-atau- DSO [-verify] [ top stack [bottom stack]] |
Menampilkan semua objek terkelola yang ditemukan di dalam batas tumpukan saat ini. Opsi -verifikasi memvalidasi setiap bidang CLASS nonstatis dari bidang objek.Gunakan perintah |
Menampilkan informasi tentang bidang kelas nilai pada alamat yang ditentukan. Parameter |
|
EEHeap [-gc] [-loader] | Menampilkan informasi tentang memori proses yang digunakan oleh struktur data runtime internal. Opsi Informasi untuk pengumpul sampah mencantumkan rentang setiap segmen dalam tumpukan terkelola. Jika pointer berada dalam rentang segmen yang diberikan oleh -gc, pointer adalah penunjuk objek. |
EEStack [-short] [-EE] | Menjalankan perintah DumpStack pada semua utas dalam proses. Opsi Utas yang telah mengambil kunci. Utas yang telah terhenti untuk memungkinkan pengumpulan sampah. Utas yang saat ini berada dalam kode terkelola. |
EHInfo [<methodDesc address>] [<Code address>] | Menampilkan blok penanganan pengecualian dalam metode tertentu. Perintah ini menampilkan alamat kode dan offset untuk blok klausa (blok try ) dan blok handler (blok catch ). |
FAQ |
Menampilkan pertanyaan yang sering diajukan. Tidak didukung dalam dotnet-dump . |
FinalizeQueue [-detail] | [-allReady] [-pendek ] | Menampilkan semua objek yang terdaftar untuk finalisasi. Opsi Opsi -allReady menampilkan semua objek yang siap untuk finalisasi, terlepas dari apakah objek tersebut sudah ditandai oleh pengumpulan sampah, atau akan ditandai oleh pengumpulan sampah berikutnya. Objek yang ada dalam daftar "siap untuk finalisasi" adalah objek yang dapat diselesaikan yang tidak lagi berakar. Opsi ini bisa mahal, karena memverifikasi apakah semua objek dalam antrean yang dapat diselesaikan masih berakar.Opsi -short membatasi output ke alamat setiap objek. Jika digunakan dengan -allReady, itu menghitung semua objek yang memiliki finalizer yang tidak lagi berakar. Jika digunakan secara independen, ia mencantumkan semua objek dalam antrean yang dapat diselesaikan dan "siap untuk finalisasi". |
Menentukan domain aplikasi objek pada alamat yang ditentukan. | |
Menyebabkan debugger rusak dalam debuggee pada koleksi berikutnya dari generasi yang ditentukan. Efeknya diatur ulang segera setelah jeda terjadi. Untuk menghentikan koleksi berikutnya, Anda harus membuat ulang perintah. Formulir |
|
GCHandles [-perdomain] | Menampilkan statistik tentang handel pengumpul sampah dalam proses. Opsi Gunakan perintah Hanya didukung pada Windows. |
GCHandleLeaks |
Mencari memori untuk referensi apa pun ke handel pengumpul sampah yang kuat dan disematkan dalam proses dan menampilkan hasilnya. Jika handel ditemukan, perintah |
Menampilkan data yang menunjukkan kapan lokasi register atau tumpukan berisi objek terkelola. Jika pengumpulan sampah terjadi, pengumpul harus mengetahui lokasi referensi ke objek sehingga dapat memperbaruinya dengan nilai penunjuk objek baru. | |
GCRoot [-nostacks] [-all] <Object address> | Menampilkan informasi tentang referensi (atau akar) ke objek pada alamat yang ditentukan. Perintah GCRoot memeriksa seluruh tumpukan terkelola dan tabel handel untuk handel dalam objek lain dan handel pada tumpukan. Setiap tumpukan kemudian dicari penunjuk ke objek, dan antrean finalizer juga dicari. Perintah ini tidak menentukan apakah akar tumpukan valid atau dibuang. Gunakan perintah clrstack dan U untuk membongkar bingkai tempat nilai lokal atau argumen berada untuk menentukan apakah akar tumpukan masih digunakan. Opsi -nostacks membatasi pencarian ke handel pengumpul sampah dan objek yang dapat dijangkau. Opsi -all memaksa semua akar ditampilkan alih-alih hanya akar yang unik. |
Menampilkan lokasi dan ukuran dalam tumpukan kumpulan sampah dari argumen yang diteruskan. Ketika argumen terletak di tumpukan terkelola tetapi bukan alamat objek yang valid, ukuran ditampilkan sebagai 0 (nol). | |
Menampilkan semua perintah yang tersedia ketika tidak ada parameter yang ditentukan, atau menampilkan informasi bantuan terperinci tentang perintah yang ditentukan. Parameter faq menampilkan jawaban atas pertanyaan yang sering diajukan. |
|
HeapStat [-inclUnrooted | -iu] | Menampilkan ukuran pembuatan untuk setiap timbunan dan total ruang kosong di setiap generasi pada setiap tumpukan. Jika opsi -inclUnrooted ditentukan, laporan menyertakan informasi tentang objek terkelola dari tumpukan pengumpulan sampah yang tidak lagi berakar. Hanya didukung pada Windows. |
HistClear | Merilis sumber daya apa pun yang digunakan oleh keluarga perintah Hist .Umumnya, Anda tidak perlu secara eksplisit memanggil HistClear , karena setiap HistInit membersihkan sumber daya sebelumnya. |
histInit | Menginisialisasi struktur SOS dari log stres yang disimpan di debuggee. |
<obj_address> HistObj | Memeriksa semua catatan relokasi log stres dan menampilkan rantai relokasi pengumpulan sampah yang mungkin menyebabkan alamat yang diteruskan sebagai argumen. |
<obj_address> HistObjFind | Menampilkan semua entri log yang mereferensikan objek pada alamat yang ditentukan. |
Menampilkan informasi yang terkait dengan promosi dan relokasi akar yang ditentukan. Nilai akar dapat digunakan untuk melacak pergerakan objek melalui pengumpulan sampah. |
|
IP2MD (ip2md) <Alamat kode> | Menampilkan struktur MethodDesc pada alamat yang ditentukan dalam kode yang telah dikompilasi JIT. |
ListNearObj (lno) <obj_address> | Menampilkan objek sebelumnya dan mengikuti alamat yang ditentukan. Perintah mencari alamat dalam tumpukan pengumpulan sampah yang terlihat seperti awal objek terkelola yang valid (berdasarkan tabel metode yang valid) dan objek mengikuti alamat argumen. Hanya didukung pada Windows. |
MinidumpMode [0] [1] | Mencegah menjalankan perintah yang tidak aman saat menggunakan minidump. Teruskan 0 untuk menonaktifkan fitur ini atau 1 untuk mengaktifkan fitur ini. Secara default, nilai Minidump yang dibuat dengan perintah .dump /m atau perintah .dump memiliki data khusus CLR terbatas dan memungkinkan Anda untuk menjalankan hanya subset perintah SOS dengan benar. Beberapa perintah mungkin gagal dengan kesalahan tak terduga karena area memori yang diperlukan tidak dipetakan atau hanya dipetakan sebagian. Opsi ini melindungi Anda dari menjalankan perintah yang tidak aman terhadap minidump. Hanya didukung dengan Windbg. |
Name2EE (name2ee) <nama modul><jenis atau nama metode> -atau- |
Menampilkan struktur MethodTable dan struktur EEClass untuk jenis atau metode yang ditentukan dalam modul yang ditentukan.Modul yang ditentukan harus dimuat dalam proses. Untuk mendapatkan nama jenis yang tepat, telusuri modul dengan menggunakan Ildasm.exe (Il Disassembler). Anda juga dapat meneruskan * sebagai parameter nama modul untuk mencari semua modul terkelola yang dimuat. Parameter nama modul Perintah ini mendukung sintaksis debugger Windows dari < module >! <type >. Jenis harus sepenuhnya memenuhi syarat. |
ObjSize [<Object address>] | [-agregat] [-stat] | Menampilkan ukuran objek yang ditentukan. Jika Anda tidak menentukan parameter apa pun, perintah ObjSize menampilkan ukuran semua objek yang ditemukan pada utas terkelola, menampilkan semua handel pengumpul sampah dalam proses, dan menjumlahkan ukuran objek apa pun yang diarahkan oleh handel tersebut. Perintah ObjSize mencakup ukuran semua objek turunan selain induk. Opsi Hanya didukung pada Windows. |
-atau- |
Menampilkan dan memformat bidang dari objek apa pun yang berasal dari kelas Exception pada alamat yang ditentukan. Jika Anda tidak menentukan alamat, perintah PrintException menampilkan pengecualian terakhir yang dilemparkan pada utas saat ini. Opsi berlapis Opsi -lines menampilkan informasi sumber, jika tersedia. Anda dapat menggunakan perintah ini untuk memformat dan melihat bidang _stackTrace , yang merupakan array biner. |
ProcInfo [-env] [-time] [-mem] | Menampilkan variabel lingkungan untuk proses, waktu CPU kernel, dan statistik penggunaan memori. Hanya didukung dengan Windbg. |
RCWCleanupList<alamat RCWCleanupList> | Menampilkan daftar pembungkus yang dapat dipanggil runtime pada alamat yang ditentukan yang sedang menunggu pembersihan. Hanya didukung dengan Windbg. |
Menulis gambar, yang dimuat dalam memori pada alamat yang ditentukan, ke file yang ditentukan. Hanya didukung dengan Windbg. | |
SetHostRuntime [<runtime-directory>] | Perintah ini mengatur jalur ke runtime .NET untuk digunakan untuk menghosting kode terkelola yang berjalan sebagai bagian dari SOS dalam debugger (LLDB). Runtime harus setidaknya versi 2.1.0 atau lebih tinggi. Jika ada spasi dalam direktori, spasi harus dikutip tunggal ('). Biasanya, SOS mencoba menemukan runtime .NET yang diinstal untuk menjalankan kode terkelolanya secara otomatis tetapi perintah ini tersedia jika gagal. Defaultnya adalah menggunakan runtime yang sama (libcoreclr) yang sedang di-debug. Gunakan perintah ini jika runtime default yang di-debug tidak cukup berfungsi untuk menjalankan kode SOS atau jika versinya kurang dari 2.1.0. Jika Anda menerima pesan kesalahan berikut saat menjalankan perintah SOS, gunakan perintah ini untuk mengatur jalur ke 2.1.0 atau runtime .NET yang lebih besar. (lldb) clrstack Error: Fail to initialize CoreCLR 80004005 ClrStack failed (lldb) sethostruntime /usr/share/dotnet/shared/Microsoft.NETCore.App/2.1.6 Anda dapat menggunakan "dotnet --info" dalam shell perintah untuk menemukan jalur runtime .NET yang diinstal. |
SetSymbolServer [-ms] [-disable] [-log] [-loadsymbols] [-cache<cache-path>] [-directory<search-directory>] [-sympath<windows-symbol-path>] [<symbol-server-URL>] | Mengaktifkan dukungan pengunduhan server simbol. Opsi Opsi -disable mengaktifkan dukungan unduhan simbol. Opsi>-cache<jalur cache menentukan direktori cache simbol. Defaultnya adalah $HOME/.dotnet/symbolcache jika tidak ditentukan. Opsi Opsi -sympath menambahkan jalur server, cache, dan direktori dalam format jalur simbol Windows. Opsi -log memungkinkan pencatatan log unduhan simbol. Opsi -loadsymbols mencoba mengunduh simbol .NET asli untuk runtime. Didukung pada lldb dan dotnet-dump. |
SOSFlush |
Membersihkan cache SOS internal. |
SOSStatus [-reset] | Menampilkan status SOS internal atau mengatur ulang status singgahan internal. |
StopOnException [-turunan] [-create | -create2] <Exception><Pseudo-register number> | Menyebabkan debugger berhenti ketika pengecualian yang ditentukan dilemparkan, tetapi untuk terus berjalan ketika pengecualian lain dilemparkan. Opsi turunan Hanya didukung dengan Windbg. |
SyncBlk [-all | <syncblk number>] | Menampilkan struktur SyncBlock yang ditentukan atau semua struktur SyncBlock . Jika Anda tidak meneruskan argumen apa pun, perintah SyncBlk menampilkan struktur SyncBlock yang sesuai dengan objek yang dimiliki oleh utas.Struktur SyncBlock adalah kontainer untuk informasi tambahan yang tidak perlu dibuat untuk setiap objek. Ini dapat menyimpan data interop COM, kode hash, dan informasi penguncian untuk operasi aman utas. |
ThreadPool |
Menampilkan informasi tentang kumpulan utas terkelola, termasuk jumlah permintaan kerja dalam antrean, jumlah utas port penyelesaian, dan jumlah timer. |
Menampilkan semua utas terkelola dalam proses. Perintah Threads menampilkan ID singkat debugger, ID utas CLR, dan ID utas sistem operasi. Selain itu, perintah Threads menampilkan kolom Domain yang menunjukkan domain aplikasi tempat utas dijalankan, kolom APT yang menampilkan mode apartemen COM, dan kolom Pengecualian yang menampilkan pengecualian terakhir yang dilemparkan dalam utas. Opsi Opsi Didukung untuk aplikasi AOT Asli. |
|
Menampilkan status utas. Parameter |
|
token2EE<nama modul><token> | Mengubah token metadata yang ditentukan dalam modul yang ditentukan menjadi struktur MethodTable atau struktur MethodDesc .Anda dapat meneruskan * parameter nama modul untuk menemukan apa yang dipetakan token tersebut di setiap modul terkelola yang dimuat. Anda juga dapat meneruskan nama debugger untuk modul, seperti mscorlib atau image00400000 . |
Menampilkan pembongkaran anotasi metode terkelola yang ditentukan baik oleh penunjuk struktur MethodDesc untuk metode atau dengan alamat kode dalam isi metode. Perintah U menampilkan seluruh metode dari awal hingga akhir, dengan anotasi yang mengonversi token metadata menjadi nama.Opsi Opsi -ehinfo menampilkan informasi pengecualian untuk metode . Anda juga dapat memperoleh informasi ini dengan perintah Opsi -n menonaktifkan tampilan nama file sumber dan nomor baris. Jika debugger memiliki opsi SYMOPT_LOAD_LINES ditentukan, SOS mencari simbol untuk setiap bingkai terkelola dan, jika berhasil, menampilkan nama file sumber dan nomor baris yang sesuai. Anda dapat menentukan opsi -n untuk menonaktifkan perilaku ini. |
|
VerifyHeap | Memeriksa tumpukan pengumpul sampah untuk tanda-tanda kerusakan dan menampilkan kesalahan apa pun yang ditemukan. Kerusakan timbunan dapat disebabkan oleh panggilan pemanggilan platform yang salah dibangun. Didukung untuk aplikasi AOT Asli. |
Memeriksa objek yang diteruskan sebagai argumen untuk tanda-tanda kerusakan. Hanya didukung pada Windows. | |
VMMap |
Melintasi ruang alamat virtual dan menampilkan jenis perlindungan yang diterapkan ke setiap wilayah. Hanya didukung dengan Windbg. |
VMStat |
Menyediakan tampilan ringkasan ruang alamat virtual, diurutkan berdasarkan setiap jenis perlindungan yang diterapkan ke memori tersebut (gratis, dicadangkan, diterapkan, privat, dipetakan, gambar). Kolom TOTAL menampilkan hasil kolom AVERAGE dikalikan dengan kolom BLK COUNT. Hanya didukung dengan Windbg. |
Windows Debugger
Anda juga dapat menggunakan ekstensi debugger .NET dengan memuatnya ke WinDbg/dbg debugger dan menjalankan perintah dalam debugger Windows. Perintah dapat digunakan pada proses langsung atau cadangan.
Windbg harus memuat ekstensi secara otomatis setiap kali proses yang di-debug berisi runtime .NET (coreclr.dll atau libcoreclr.so).
LLDB Debugger
Untuk petunjuk tentang mengonfigurasi ekstensi debugger .NET untuk LLDB, lihat dotnet-debugger-extensions. Perintah dapat digunakan pada proses langsung atau cadangan.
Secara default Anda dapat menjangkau semua perintah dengan memasukkan: sos [command_name]
. Namun, perintah umum telah diberi alias sehingga Anda tidak memerlukan awalan sos
:
Perintah | Fungsi |
---|---|
analyzeoom |
Menampilkan info OOM terakhir yang terjadi pada permintaan alokasi ke tumpukan GC. |
bpmd |
Membuat titik henti pada metode terkelola yang ditentukan dalam modul yang ditentukan. |
clrmodules |
Mencantumkan modul terkelola dalam proses. |
clrstack |
Menyediakan jejak tumpukan kode terkelola saja. |
clrthreads |
Mencantumkan utas terkelola yang sedang berjalan. |
clru |
Menampilkan pembongkaran yang dianotasi dari metode terkelola. |
dbgout |
Mengaktifkan/menonaktifkan (-off ) pengelogan SOS internal. |
dso |
Menampilkan semua objek terkelola yang ditemukan di dalam batas tumpukan saat ini. |
dumpalc |
Menampilkan detail tentang AssemblyLoadContext yang dikumpulkan tempat objek yang ditentukan dimuat. |
dumparray |
Menampilkan detail tentang array terkelola. |
dumpasync |
Menampilkan info tentang mesin status asinkron pada tumpukan yang dikumpulkan sampah. |
dumpassembly |
Menampilkan detail tentang rakitan. |
dumpclass |
Menampilkan informasi tentang struktur EEClass pada alamat yang ditentukan. |
dumpconcurrentdictionary |
Menampilkan isi kamus bersamaan. |
dumpconcurrentqueue |
Menampilkan isi antrean bersamaan. |
dumpdelegate |
Menampilkan informasi tentang delegasi. |
dumpdomain |
Menampilkan informasi tentang semua rakitan dalam semua AppDomains atau yang ditentukan. |
dumpgcdata |
Menampilkan informasi tentang data GC. |
dumpgen |
Menampilkan isi timbunan untuk pembuatan yang ditentukan. |
dumpheap |
Menampilkan info tentang statistik tumpukan dan pengumpulan yang dikumpulkan sampah tentang objek. |
dumpil |
Menampilkan bahasa perantara umum (CIL) yang terkait dengan metode terkelola. |
dumplock |
Menampilkan informasi tentang objek System.Threading.Lock, seperti objek yang ditahan oleh utas (default), atau yang sedang ditunggu oleh utas. Perintah ini hanya tersedia di ekstensi debugger .NET . |
dumplog |
Menulis konten log stres dalam memori ke file yang ditentukan. |
dumpmd |
Menampilkan informasi tentang struktur MethodDesc pada alamat yang ditentukan. |
dumpmodule |
Menampilkan informasi tentang modul pada alamat yang ditentukan. |
dumpmt |
Menampilkan informasi tentang tabel metode pada alamat yang ditentukan. |
dumpobj |
Menampilkan info objek pada alamat yang ditentukan. |
dumpruntimetypes |
Menemukan semua objek System.RuntimeType di tumpukan GC dan mencetak nama jenis dan MethodTable yang mereka rujuk juga. |
dumpsig |
Mencadangkan tanda tangan metode atau bidang yang ditentukan oleh <sigaddr> <moduleaddr> . |
dumpsigelem |
Mencadangkan satu elemen objek tanda tangan. |
dumpstack |
Menampilkan jejak tumpukan asli dan terkelola. |
dumpstackobjects |
Menampilkan semua objek terkelola yang ditemukan di dalam batas tumpukan saat ini. |
dumpvc |
Menampilkan info tentang bidang kelas nilai. |
eeheap |
Menampilkan info tentang memori proses yang digunakan oleh struktur data runtime internal. |
eestack |
Menjalankan dumpstack pada semua utas dalam proses. |
eeversion |
Menampilkan informasi tentang versi runtime dan SOS. |
ehinfo |
Menampilkan blok penanganan pengecualian dalam metode JIT-ed. |
finalizequeue |
Menampilkan semua objek yang terdaftar untuk finalisasi. |
findappdomain |
Mencoba mengatasi AppDomain objek GC. |
findroots |
Menemukan dan menampilkan akar objek di seluruh koleksi GC. |
gchandles |
Menampilkan statistik tentang handel pengumpul sampah dalam proses. |
gcheapstat |
Menampilkan statistik tentang pengumpul sampah. |
gcinfo |
Menampilkan pengodean JIT GC untuk metode . |
gcroot |
Menampilkan info tentang referensi (atau akar) ke objek pada alamat yang ditentukan. |
gcwhere |
Menampilkan lokasi dalam tumpukan GC dari alamat yang ditentukan. |
histclear |
Merilis sumber daya apa pun yang digunakan oleh keluarga perintah Hist. |
histinit |
Menginisialisasi struktur SOS dari log stres yang disimpan di debuggee. |
histobj |
Memeriksa semua catatan relokasi log stres dan menampilkan rantai relokasi pengumpulan sampah yang mungkin menyebabkan alamat yang diteruskan sebagai argumen. |
histobjfind |
Menampilkan semua entri log yang mereferensikan objek pada alamat yang ditentukan. |
histroot |
Menampilkan informasi yang terkait dengan promosi dan relokasi akar yang ditentukan. |
histstats |
Menampilkan statistik log stres. |
ip2md |
Menampilkan struktur MethodDesc pada alamat yang ditentukan dalam kode yang telah dikompilasi JIT. |
listnearobj |
Menampilkan objek sebelumnya dan menggantikan alamat yang ditentukan. |
loadsymbols |
Memuat simbol modul asli .NET. |
logging |
Mengaktifkan/menonaktifkan pengelogan SOS internal. |
name2ee |
Menampilkan struktur MethodTable dan EEClass untuk jenis atau metode yang ditentukan dalam modul yang ditentukan. |
objsize |
Menampilkan ukuran objek yang ditentukan. |
parallelstacks |
Menampilkan tumpukan utas gabungan yang mirip dengan panel Visual Studio 'Parallel Stacks'. |
pathto |
Menampilkan jalur GC dari <root> ke <target> . |
pe |
Menampilkan dan memformat bidang dari objek apa pun yang berasal dari kelas Exception pada alamat yang ditentukan. |
printexception |
Menampilkan dan memformat bidang dari objek apa pun yang berasal dari kelas Exception pada alamat yang ditentukan. |
runtimes |
Mencantumkan runtime dalam target atau mengubah runtime default. |
stoponcatch |
Proses target akan memutus waktu berikutnya pengecualian terkelola tertangkap selama eksekusi. |
setclrpath |
Mengatur jalur untuk memuat file coreclr dac/dbi.
setclrpath <path> . |
sethostruntime |
Mengatur atau menampilkan direktori runtime .NET yang akan digunakan untuk menjalankan kode terkelola di SOS. |
setsymbolserver |
Mengaktifkan dukungan server simbol. |
setsostid |
Mengatur indeks id/utas OS saat ini alih-alih menggunakan satu LLDB yang disediakan.
setsostid <tid> <index> . |
sos |
Menjalankan berbagai perintah debugging coreclr. Gunakan sintaks sos <command-name> <args> . Untuk informasi selengkapnya, lihat 'soshelp'. |
soshelp |
Menampilkan semua perintah yang tersedia ketika tidak ada parameter yang ditentukan, atau menampilkan informasi bantuan terperinci tentang perintah yang ditentukan: soshelp <command> . |
syncblk |
Menampilkan info pemegang SyncBlock. |
taskstate |
Menampilkan status Tugas dalam format yang dapat dibaca manusia. |
threadpool |
Menampilkan info tentang kumpulan utas runtime. |
threadpoolqueue |
Menampilkan item kerja kumpulan utas yang diantrekan. |
threadstate |
Cukup mencetak arti dari status utas. |
timerinfo |
Menampilkan informasi tentang timer yang sedang berjalan. |
token2ee |
Menampilkan struktur MethodTable dan struktur MethodDesc untuk token dan modul yang ditentukan. |
traverseheap |
Menulis informasi tumpukan ke file dalam format yang dipahami oleh CLR Profiler. |
verifyheap |
Memeriksa tumpukan GC untuk tanda-tanda kerusakan. |
verifyobj |
Memeriksa objek yang diteruskan sebagai argumen untuk tanda-tanda kerusakan. |
Penggunaan contoh windbg/cdb
Perintah | Deskripsi |
---|---|
!dumparray -start 2 -length 5 -details 00ad28d0 |
Menampilkan konten array di alamat 00ad28d0 . Tampilan dimulai dari elemen kedua dan berlanjut untuk lima elemen. |
!dumpassembly 1ca248 |
Menampilkan konten rakitan di alamat 1ca248 . |
!dumpheap |
Menampilkan informasi tentang tumpukan pengumpul sampah. |
!DumpLog |
Menulis konten log stres dalam memori ke file (default) yang disebut StressLog.txt di direktori saat ini. |
!dumpmd 902f40 |
Menampilkan struktur MethodDesc di alamat 902f40 . |
!dumpmodule 1caa50 |
Menampilkan informasi tentang modul di alamat 1caa50 . |
!DumpObj a79d40 |
Menampilkan informasi tentang objek di alamat a79d40 . |
!DumpVC 0090320c 00a79d9c |
Menampilkan bidang kelas nilai di alamat 00a79d9c menggunakan tabel metode di alamat 0090320c . |
!eeheap -gc |
Menampilkan memori proses yang digunakan oleh pengumpul sampah. |
!finalizequeue |
Menampilkan semua objek yang dijadwalkan untuk finalisasi. |
!findappdomain 00a79d98 |
Menentukan domain aplikasi objek di alamat 00a79d98 . |
!gcinfo 5b68dbb8 |
Menampilkan semua handel pengumpul sampah dalam proses saat ini. |
!name2ee unittest.exe MainClass.Main |
Menampilkan struktur MethodTable dan EEClass untuk metode Main di kelas MainClass dalam modul unittest.exe . |
!token2ee unittest.exe 02000003 |
Menampilkan informasi tentang token metadata di alamat 02000003 dalam modul unittest.exe . |
Contoh penggunaan LLDB
Perintah | Deskripsi |
---|---|
dumparray -start 2 -length 5 -details 00ad28d0 |
Menampilkan konten array di alamat 00ad28d0 . Tampilan dimulai dari elemen kedua dan berlanjut untuk lima elemen. |
dumpassembly 1ca248 |
Menampilkan konten rakitan di alamat 1ca248 . |
dumpheap |
Menampilkan informasi tentang tumpukan pengumpul sampah. |
dumplog |
Menulis konten log stres dalam memori ke file (default) yang disebut StressLog.txt di direktori saat ini. |
dumpmd 902f40 |
Menampilkan struktur MethodDesc di alamat 902f40 . |
dumpmodule 1caa50 |
Menampilkan informasi tentang modul di alamat 1caa50 . |
dumpobj a79d40 |
Menampilkan informasi tentang objek di alamat a79d40 . |
dumpvc 0090320c 00a79d9c |
Menampilkan bidang kelas nilai di alamat 00a79d9c menggunakan tabel metode di alamat 0090320c . |
eeheap -gc |
Menampilkan memori proses yang digunakan oleh pengumpul sampah. |
findappdomain 00a79d98 |
Menentukan domain aplikasi objek di alamat 00a79d98 . |
gcinfo 5b68dbb8 |
Menampilkan semua handel pengumpul sampah dalam proses saat ini. |
name2ee unittest.exe MainClass.Main |
Menampilkan struktur MethodTable dan EEClass untuk metode Main di kelas MainClass dalam modul unittest.exe . |
token2ee unittest.exe 02000003 |
Menampilkan informasi tentang token metadata di alamat 02000003 dalam modul unittest.exe . |
clrthreads |
Menampilkan utas terkelola. |