Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Anda harus menyelesaikan tugas konfigurasi yang dijelaskan di bagian ini sebelum menggunakan User-Mode Dump Heap (UMDH) untuk menangkap alokasi memori heap pada suatu proses. Jika komputer tidak dikonfigurasi dengan benar, UMDH tidak akan menghasilkan hasil apa pun atau hasilnya tidak akan lengkap atau salah.
Membuat database pelacakan tumpukan mode pengguna
Sebelum menggunakan UMDH untuk mengambil alokasi timbunan untuk suatu proses, Anda harus mengonfigurasi Windows untuk menangkap jejak tumpukan.
Untuk mengaktifkan pengambilan jejak tumpukan untuk proses, gunakan GFlags untuk menyetel flag Buat database jejak tumpukan dalam mode pengguna untuk proses tersebut. Ini dapat dilakukan dengan salah satu metode berikut:
Di antarmuka grafis GFlags, pilih tab File Gambar . Ketik nama proses, termasuk ekstensi nama file (misalnya, Notepad.exe). Tekan tombol TAB , pilih Buat database pelacakan tumpukan mode pengguna, lalu pilih Terapkan.
Atau, secara setara, gunakan baris perintah GFlags berikut, di mana ImageName adalah nama proses (termasuk ekstensi nama file):
gflags /iImageName+ust
Secara default, jumlah data pelacakan tumpukan yang dikumpulkan Windows dibatasi hingga 32 MB pada prosesor x86, dan 64 MB pada prosesor x64. Jika Anda harus menambah ukuran database ini, pilih tab File Gambar di antarmuka grafis GFlags, ketik nama proses, tekan tombol TAB , centang kotak centang Stack Backtrace (Megs), ketik nilai (dalam MB) di kotak teks terkait, lalu pilih Terapkan.
Nota Tingkatkan database ini hanya jika perlu, karena mungkin menipiskan sumber daya Windows yang terbatas. Ketika Anda tidak lagi memerlukan ukuran yang lebih besar, kembalikan pengaturan ini ke nilai aslinya.
Pengaturan ini memengaruhi semua versi baru program. Ini tidak memengaruhi instans program yang sedang berjalan saat ini.
Mengakses Simbol yang Diperlukan
Sebelum menggunakan UMDH, Anda harus memiliki akses ke simbol yang tepat untuk aplikasi Anda. UMDH menggunakan jalur simbol yang ditentukan oleh variabel lingkungan _NT_SYMBOL_PATH. Atur variabel ini sama dengan jalur yang berisi simbol untuk aplikasi Anda.
Jika Anda juga menyertakan jalur ke simbol Windows, analisis mungkin lebih lengkap. Sintaks untuk jalur simbol ini sama dengan yang digunakan oleh debugger; untuk detailnya, lihat Jalur Simbol.
Misalnya, jika simbol untuk aplikasi Anda terletak di C:\MyApp\Symbols, dan Anda telah menginstal file simbol Windows ke \\myshare\winsymbols, Anda akan menggunakan perintah berikut untuk mengatur jalur simbol Anda:
set _NT_SYMBOL_PATH=c:\myapp\symbols;\\myshare\winsymbols
Sebagai contoh lain, jika simbol untuk aplikasi Anda terletak di C:\MyApp\Symbols, dan Anda ingin menggunakan penyimpanan simbol Microsoft publik untuk simbol Windows Anda, menggunakan C:\MyCache sebagai penyimpanan hilir Anda, Anda akan menggunakan perintah berikut untuk mengatur jalur simbol Anda:
set _NT_SYMBOL_PATH=c:\myapp\symbols;srv*c:\mycache*https://msdl.microsoft.com/download/symbols
Penting Misalkan Anda memiliki dua komputer: komputer pengelogan tempat Anda membuat log UMDH dan komputer analisis tempat Anda menganalisis log UMDH. Jalur simbol pada komputer analisis Anda harus menunjuk ke simbol untuk versi Windows yang dimuat pada komputer pengelogan pada saat log dibuat. Jangan arahkan jalur simbol pada komputer analisis ke server simbol. Jika Anda melakukannya, UMDH akan mengambil simbol untuk versi Windows yang berjalan di komputer analisis, dan UMDH tidak akan menampilkan hasil yang bermakna.
Menonaktifkan Cache BSTR
Automation (sebelumnya dikenal sebagai OLE Automation) menyimpan memori yang digunakan oleh string BSTR. Ini dapat mencegah UMDH menentukan pemilik alokasi memori dengan benar. Untuk menghindari masalah ini, Anda harus menonaktifkan cache BSTR.
Untuk menonaktifkan penyimpanan sementara BSTR, atur variabel lingkungan OANOCACHE sama dengan satu (1). Pengaturan ini harus dibuat sebelum meluncurkan aplikasi yang alokasinya akan ditelusuri.
Atau, Anda dapat menonaktifkan penyimpanan sementara BSTR dari dalam aplikasi itu sendiri dengan memanggil fungsi SetNoOaCache dari .NET Framework. Jika Anda memilih metode ini, Anda harus memanggil fungsi ini lebih awal, karena alokasi BSTR apa pun yang telah di-cache ketika SetNoOaCache disebut akan tetap di-cache.
Jika Anda perlu melacak alokasi yang dibuat oleh layanan, Anda harus mengatur OANOCACHE sebagai variabel lingkungan sistem lalu memulai ulang Windows agar pengaturan ini berlaku.
Temukan ID Proses
UMDH mengidentifikasi proses melalui ID proses (PID). Anda dapat menemukan PID dari setiap proses yang berjalan dengan menggunakan Task Manager, Tasklist, atau TList.