Bagikan melalui


Gambaran Umum Perintah GFlags

Untuk informasi umum tentang cara menginstal dan menemukan gflags.exe, lihat GFlags.

Anda dapat menggunakan perintah GFlags dan Kotak Dialog Bendera Global secara bergantian.

Penggunaan Perintah GFlags

Untuk menggunakan GFlags, ketik perintah berikut di baris perintah.

Untuk membuka kotak dialog GFlags:

gflags

Untuk mengatur atau menghapus bendera global dalam registri:

gflags /r [{+ | -}Flag [{+ | -}Flag...]]

Untuk mengatur atau menghapus bendera global untuk sesi saat ini:

gflags /k [{+ | -}Flag [{+ | -}Flag...]]

Untuk mengatur atau menghapus bendera global untuk file gambar:

gflags /i ImageFile [{+ | -}Flag [{+ | -}Flag...]]
gflags /i ImageFile /tracedb SizeInMB

Untuk mengatur atau menghapus fitur Kumpulan Khusus (Windows Vista dan yang lebih baru)

gflags {/r | /k} {+ | -}spp {PoolTag | 0xSize}

Untuk mengaktifkan atau menonaktifkan fitur Pelacakan Referensi Objek (Windows Vista dan yang lebih baru)

gflags {/ro | /ko} [/p] [/i ImageFile | /t PoolTag;[PoolTag...]]
gflags {/ro | /ko} /d

Untuk mengaktifkan dan mengonfigurasi verifikasi timbunan halaman:

gflags /p /enable ImageFile  [ /full [/backwards] | /random Probability | /size SizeStart SizeEnd | /address AddressStart AddressEnd | /dlls DLL [DLL...] ] 
[/debug ["DebuggerCommand"] | /kdebug] [/unaligned] [/notraces] [/fault Rate [TimeOut]] [/leaks] [/protect] [/no_sync] [/no_lock_checks] 

Untuk menonaktifkan verifikasi timbunan halaman:

gflags /p [/disable ImageFile] [/?]

Untuk menampilkan bantuan:

gflags /?

Parameter

Bendera
Menentukan singkatan tiga huruf (FlagAbbr) atau nilai heksadesimal (FlagHex) yang mewakili fitur penelusuran kesalahan. Singkatan dan nilai heksadesimal tercantum dalam Tabel Bendera GFlags.

Gunakan salah satu format bendera berikut:

Format Deskripsi

{+ | -}FlagAbbr

Mengatur (+) atau menghapus (-) bendera yang diwakili oleh singkatan bendera. Tanpa simbol plus (+) atau minus (-), perintah tidak berpengaruh.

[+ | -]FlagHex

Menambahkan (+) atau mengurangi (-) nilai heksadesimal bendera. Bendera diatur saat nilainya disertakan dalam jumlah. Tambahkan (+) adalah default. Masukkan nilai heksadesimal (tanpa 0x) yang mewakili bendera tunggal atau masukkan jumlah nilai heksadesimal untuk beberapa bendera.

ImageFile
Menentukan nama file yang dapat dieksekusi, termasuk ekstensi nama file (misalnya, notepad.exe atau mydll.dll).

/r
Registri. Menampilkan atau mengubah bendera debugging di seluruh sistem yang disimpan dalam registri. Setelan ini berlaku ketika Anda memulai ulang Windows dan tetap efektif hingga Anda mengubahnya.

Tanpa parameter tambahan, gflags /r menampilkan bendera di seluruh sistem yang diatur dalam registri.

/k
Pengaturan bendera kernel. Menampilkan atau mengubah bendera debugging di seluruh sistem untuk sesi ini. Pengaturan ini segera efektif, tetapi hilang ketika Windows dimatikan. Pengaturan memengaruhi proses yang dimulai setelah perintah ini selesai.

Tanpa parameter tambahan, gflags /k menampilkan bendera di seluruh sistem yang ditetapkan untuk sesi saat ini.

/saya
Pengaturan file gambar. Menampilkan atau mengubah bendera penelusuran kesalahan untuk proses tertentu. Pengaturan ini disimpan dalam registri. Mereka efektif untuk semua instans baru dari proses ini dan tetap efektif sampai Anda mengubahnya.

Tanpa parameter tambahan, gflags /i ImageFile menampilkan bendera yang ditetapkan untuk proses yang ditentukan.

/tracedb SizeInMB
Mengatur ukuran maksimum database pelacakan tumpukan mode pengguna untuk proses tersebut. Untuk menggunakan parameter ini, bendera Buat database pelacakan tumpukan mode pengguna (ust) harus diatur untuk proses tersebut.

SizeInMB adalah bilangan bulat yang menunjukkan jumlah megabyte dalam unit desimal. Nilai defaultnya adalah ukuran minimum, 8 MB; tidak ada ukuran maksimum. Untuk kembali ke ukuran default, atur SizeInMB ke 0.

Spp
(Windows Vista dan yang lebih baru.) Mengatur atau menghapus fitur Kumpulan Khusus. Misalnya, lihat Contoh 14: Mengonfigurasi Kumpulan Khusus.

PoolTag
(Windows Vista dan yang lebih baru.) Menentukan tag kumpulan untuk fitur Kumpulan Khusus. Gunakan hanya dengan bendera spp .

Masukkan pola empat karakter untuk PoolTag, seperti Tag1. Ini dapat mencakup karakter kartubebas ? (pengganti karakter tunggal) dan * (ganti beberapa karakter). Misalnya, Fat* atau Av?4. Tag kumpulan selalu peka huruf besar/kecil.

Ukuran 0x
(Windows Vista dan yang lebih baru.) Menentukan rentang ukuran untuk fitur Kumpulan Khusus. Gunakan hanya dengan bendera spp . Untuk panduan tentang memilih nilai ukuran, lihat "Memilih Ukuran Alokasi" di Kumpulan Khusus.

/Ro
Mengaktifkan, menonaktifkan, dan menampilkan pengaturan Pelacakan Referensi Objek di registri. Untuk membuat perubahan pada setelan ini efektif, Anda harus memulai ulang Windows.

Tanpa parameter tambahan, /ro menampilkan pengaturan Pelacakan Referensi Objek di registri.

Untuk mengaktifkan Pelacakan Referensi Objek, Anda harus menyertakan setidaknya satu tag kumpulan (/t PoolTag) atau satu file gambar (/i ImageFile) dalam perintah. Untuk detailnya, lihat Contoh 15: Menggunakan Pelacakan Referensi Objek.

Tabel berikut mencantumkan subparameter yang valid dengan /ro.

/t PoolTags

Membatasi jejak ke objek dengan tag kumpulan yang ditentukan. Gunakan titik koma (;) untuk memisahkan nama tag. Masukkan hingga 16 tag kumpulan.

Masukkan pola empat karakter untuk PoolTags, seperti Tag1.

Jika Anda menentukan lebih dari satu tag kumpulan, Windows melacak objek dengan salah satu tag kumpulan yang ditentukan .

Jika Anda tidak menentukan tag kumpulan apa pun, Windows akan melacak semua objek yang dibuat oleh gambar.

/i ImageFile

Membatasi jejak ke objek yang dibuat oleh proses dengan file gambar yang ditentukan. Anda hanya dapat menentukan satu file gambar dengan parameter /i .

Masukkan nama file gambar, seperti notepad.exe, dengan hingga 64 karakter. "System" dan "Idle" bukan nama gambar yang valid.

Jika Anda tidak menentukan file gambar, Windows akan melacak semua objek dengan tag kumpulan yang ditentukan. Jika Anda menentukan file gambar (/i) dan satu atau beberapa tag kumpulan (/t), Windows melacak objek dengan salah satu tag kumpulan yang ditentukan yang dibuat oleh gambar yang ditentukan.

/d

Menghapus pengaturan fitur Pelacakan Referensi Objek. Ketika digunakan dengan /ro, itu menghapus pengaturan dalam registri.

/p

Abadi. Data pelacakan dipertahankan hingga Pelacakan Referensi Objek dinonaktifkan, atau komputer dimatikan atau dimulai ulang. Secara default, data pelacakan untuk objek dibuang saat objek dihancurkan.

/Ko
Mengaktifkan, menonaktifkan, dan menampilkan pengaturan Pelacakan Referensi Objek bendera kernel (run time). Perubahan pada pengaturan ini segera efektif, tetapi hilang ketika sistem dimatikan atau dimulai ulang. Untuk detailnya, lihat Contoh 15: Menggunakan Pelacakan Referensi Objek.

Tanpa parameter tambahan, /ko menampilkan pengaturan Pelacakan Referensi Objek bendera kernel (run time).

Untuk mengaktifkan Pelacakan Referensi Objek, Anda harus menyertakan setidaknya satu tag kumpulan (/t PoolTag) atau satu file gambar (/i ImageFile) dalam perintah.

Tabel berikut mencantumkan subparameter yang valid dengan /ko.

/t PoolTags

Membatasi jejak ke objek dengan tag kumpulan yang ditentukan. Gunakan titik koma (;) untuk memisahkan nama tag. Masukkan hingga 16 tag kumpulan.

Masukkan pola empat karakter untuk PoolTags, seperti Tag1.

Jika Anda menentukan lebih dari satu tag kumpulan, Windows akan melacak objek dengan salah satu tag kumpulan yang ditentukan.

Jika Anda tidak menentukan tag kumpulan apa pun, Windows akan melacak semua objek yang dibuat oleh gambar.

/i ImageFile

Membatasi jejak ke objek yang dibuat oleh proses dengan file gambar yang ditentukan. Anda hanya dapat menentukan satu file gambar dengan parameter /i .

Jika Anda tidak menentukan file gambar, Windows akan melacak semua objek dengan tag kumpulan yang ditentukan.

Jika Anda menentukan file gambar (/i) dan satu atau beberapa tag kumpulan (/t), Windows melacak objek dengan salah satu tag kumpulan yang ditentukan yang dibuat oleh gambar yang ditentukan.

/d

Menghapus pengaturan fitur Pelacakan Referensi Objek. Ketika digunakan dengan /ro, itu menghapus pengaturan dalam registri.

/p

Abadi. Data pelacakan dipertahankan hingga Pelacakan Referensi Objek dinonaktifkan, atau komputer dimatikan atau dimulai ulang. Secara default, data pelacakan untuk objek dibuang saat objek dihancurkan.

/p
Mengatur opsi verifikasi timbunan halaman untuk proses.

Tanpa parameter tambahan, gflags /p menampilkan daftar file gambar yang verifikasi timbunan halamannya diaktifkan.

Verifikasi timbunan halaman memantau operasi memori timbunan dinamis, termasuk mengalokasikan operasi dan operasi gratis, dan menyebabkan kerusakan debugger saat mendeteksi kesalahan timbunan.

/menonaktifkan ImageFile
Menonaktifkan verifikasi timbunan halaman (standar atau penuh) untuk file gambar yang ditentukan.

Perintah ini setara dengan mematikan bendera Aktifkan tumpukan halaman (hpa) untuk proses (gflags /i ImageFile -hpa). Anda dapat menggunakan perintah secara bergantian.

/mengaktifkan ImageFile
Mengaktifkan verifikasi timbunan halaman untuk file gambar yang ditentukan.

Secara default, parameter /enable mengaktifkan verifikasi timbunan halaman standar untuk file gambar. Untuk mengaktifkan verifikasi timbunan halaman penuh untuk file gambar, tambahkan parameter /full ke perintah atau gunakan parameter /i dengan bendera +hpa .

/penuh
Mengaktifkan verifikasi timbunan halaman penuh untuk proses tersebut. Verifikasi tumpukan halaman penuh menempatkan zona memori virtual yang dipesan di akhir setiap alokasi.

Menggunakan parameter ini setara dengan mengaktifkan bendera Aktifkan tumpukan halaman (hpa) untuk proses (gflags /i ImageFile +hpa). Anda dapat menggunakan perintah secara bergantian.

/Mundur
Tempatkan zona memori virtual yang dipesan di awal alokasi, bukan di akhir. Akibatnya, perangkap debugger overruns di awal buffer, alih-alih yang ada di akhir buffer. Hanya valid dengan parameter /full .

/acak Probabilitas
Memilih verifikasi tumpukan halaman penuh atau standar untuk setiap alokasi, berdasarkan probabilitas yang ditentukan.

Probabilitas adalah bilangan bulat desimal dari 0 hingga 100 yang mewakili probabilitas verifikasi timbunan halaman penuh. Probabilitas 100 sama dengan menggunakan parameter /full . Probabilitas 0 sama dengan menggunakan verifikasi timbunan halaman standar.

/tingginya SizeStart SizeEnd
Memungkinkan verifikasi timbunan halaman penuh untuk alokasi dalam rentang ukuran yang ditentukan dan memungkinkan verifikasi timbunan halaman standar untuk semua alokasi lain berdasarkan proses.

SizeStart dan SizeEnd adalah bilangan bulat desimal. Defaultnya adalah verifikasi timbunan halaman standar untuk semua alokasi.

/alamat AddressStart AddressEnd
Mengaktifkan verifikasi timbunan halaman penuh untuk memori yang dialokasikan saat alamat pengembalian dalam rentang alamat yang ditentukan ada di tumpukan panggilan run-time. Ini memungkinkan verifikasi timbunan halaman standar untuk semua alokasi lain oleh proses.

Untuk menggunakan fitur ini, tentukan rentang yang menyertakan alamat semua fungsi yang memanggil fungsi dengan alokasi tersangka. Alamat fungsi panggilan akan berada di tumpukan panggilan ketika alokasi tersangka terjadi.

AddressStart dan AddressEnd menentukan rentang alamat yang dicari dalam jejak tumpukan alokasi. Alamat ditentukan dalam format heksadesimal, seperti, 0xAABBCCDD.

Pada Windows Server 2003 dan sistem yang lebih lama, parameter /address hanya valid pada komputer berbasis x86. Pada Windows Vista, : ini valid pada semua arsitektur yang didukung.

/dlls DLL[, DLL...]
Mengaktifkan verifikasi timbunan halaman penuh untuk alokasi yang diminta oleh DLL yang ditentukan dan verifikasi timbunan halaman standar untuk semua alokasi lain oleh proses.

DLL adalah nama file biner, termasuk ekstensi nama filenya. File yang ditentukan harus merupakan pustaka fungsi yang dimuat proses selama eksekusi.

/awakutu
Secara otomatis meluncurkan proses yang ditentukan oleh parameter /enable di bawah debugger.

Secara default, parameter ini menggunakan debugger NTSD dengan baris perintah ntsd -g -G -x dan dengan heap halaman diaktifkan, tetapi Anda dapat menggunakan variabel DebuggerCommand untuk menentukan debugger dan baris perintah yang berbeda.

Untuk informasi tentang NTSD, lihat Penelusuran Kesalahan Menggunakan CDB dan NTSD.

Opsi ini berguna untuk program yang sulit dimulai dari prompt perintah dan yang dimulai oleh proses lain.

"DebuggerCommand"
Menentukan debugger dan perintah yang dikirim ke debugger. String yang dikutip ini dapat mencakup jalur yang sepenuhnya memenuhi syarat ke debugger, nama debugger, dan parameter perintah yang ditafsirkan debugger. Tanda kutip diperlukan.

Jika perintah menyertakan jalur ke debugger, jalur tidak dapat berisi tanda kutip lainnya. Jika tanda kutip lain muncul, shell perintah (cmd.exe) akan salah menafsirkan perintah.

/kdebug
Secara otomatis meluncurkan proses yang ditentukan oleh parameter /enable di bawah debugger NTSD dengan baris perintah ntsd -g -G -x, dengan tumpukan halaman diaktifkan, dan dengan kontrol NTSD dialihkan ke debugger kernel.

Untuk informasi tentang NTSD, lihat Penelusuran Kesalahan Menggunakan CDB dan NTSD.

/unaligned
Menyelaraskan akhir setiap alokasi pada batas akhir halaman, bahkan jika melakukannya berarti bahwa alamat awal tidak selaras pada blok 8-byte. Secara default, manajer timbunan menjamin bahwa alamat awal alokasi selaras pada blok 8 byte.

Opsi ini digunakan untuk mendeteksi kesalahan off-byte satu per satu. Ketika parameter ini digunakan dengan parameter /full , zona memori virtual yang dipesan dimulai tepat setelah byte terakhir alokasi dan kesalahan langsung terjadi ketika proses mencoba membaca atau menulis bahkan satu byte di luar alokasi.

/decommit
Opsi ini tidak lagi valid. Ini diterima, tetapi diabaikan.

Program PageHeap (pageheap.exe) yang disertakan dalam Windows 2000 menerapkan verifikasi timbunan halaman penuh dengan menempatkan halaman yang tidak dapat diakses setelah alokasi. Dalam alat itu , parameter /decommit menggantikan zona memori virtual yang dipesan untuk halaman yang tidak dapat diakses. Dalam versi GFlags ini, zona memori virtual yang dipesan selalu digunakan untuk menerapkan verifikasi timbunan halaman penuh.

/notraces
Menentukan bahwa jejak tumpukan run-time tidak disimpan.

Opsi ini sedikit meningkatkan performa, tetapi membuat penelusuran kesalahan jauh lebih sulit. Parameter ini valid, tetapi penggunaannya tidak disarankan.

/kesalahan
Memaksa alokasi memori program gagal pada laju yang ditentukan dan setelah batas waktu yang ditentukan.

Parameter ini menyisipkan kesalahan alokasi timbunan ke dalam file gambar yang sedang diuji (praktik yang dikenal sebagai "injeksi kesalahan") sehingga beberapa alokasi memori gagal, seperti yang mungkin terjadi ketika program berjalan dalam kondisi memori rendah. Pengujian ini membantu mendeteksi kesalahan dalam menangani kegagalan alokasi, seperti gagal merilis sumber daya.

Tarif

Menentukan bilangan bulat desimal dari 1 (.01%) hingga 10000 (100%) yang mewakili probabilitas bahwa alokasi akan gagal. Defaultnya adalah 100 (1%).

Timeout

Menentukan interval waktu antara awal program dan awal rutinitas injeksi kesalahan.

TimeOut diukur dalam hitungan detik. Defaultnya adalah 5 (detik).

/Kebocoran
Memeriksa kebocoran timbunan ketika proses berakhir.

Parameter /leaks menonaktifkan timbunan halaman penuh. Ketika /bocoran digunakan, parameter /full dan parameter yang memodifikasi parameter /full , seperti /backwards, diabaikan, dan GFlags melakukan verifikasi tumpukan halaman standar dengan pemeriksaan kebocoran.

/melindungi
Melindungi struktur internal tumpuk. Pengujian ini digunakan untuk mendeteksi kerusakan tumpukan acak. Hal ini dapat membuat eksekusi secara signifikan lebih lambat.

/no_sync
Memeriksa akses yang tidak disinkronkan. Parameter ini menyebabkan jeda jika mendeteksi bahwa timbunan yang dibuat dengan bendera HEAP_NO_SERIALIZE diakses oleh utas yang berbeda.

Jangan gunakan bendera ini untuk men-debug program yang menyertakan manajer timbunan yang disesuaikan. Fungsi yang menyinkronkan akses timbunan menyebabkan pemverifikasi timbunan halaman melaporkan kesalahan sinkronisasi yang tidak ada.

/no_lock_checks
Menonaktifkan pemverifikasi bagian penting.

/?
Menampilkan bantuan untuk GFlags. Dengan /p, /? menampilkan bantuan untuk opsi verifikasi timbunan halaman di GFlags.

Komentar

Mengetik gflag tanpa parameter akan membuka kotak dialog Bendera Global.

Mengetik gflags /p tanpa parameter tambahan menampilkan daftar program yang mengaktifkan verifikasi timbunan halaman.

Untuk menghapus semua bendera, atur Bendera ke -FFFFFFFF. (Pengaturan Bendera ke 0 menambahkan nol ke nilai bendera saat ini. Ini tidak menghapus semua bendera.)

Ketika Anda mengatur Bendera untuk file gambar ke FFFFFFFFFF, Windows menghapus semua bendera dan menghapus entri GlobalFlag di subkuncu registri untuk file gambar. Subkunjuknya tetap ada.

Parameter /full, /random, /size, /address, dan /dlls untuk operasi heap halaman /enable menentukan alokasi mana yang tunduk pada verifikasi timbunan halaman dan metode verifikasi yang digunakan. Anda hanya dapat menggunakan salah satu parameter ini di setiap perintah. Defaultnya adalah verifikasi timbunan halaman standar dari semua alokasi proses. Parameter yang tersisa menetapkan opsi untuk verifikasi timbunan halaman.

Fitur timbunan halaman di GFlags hanya memantau alokasi memori timbunan yang menggunakan fungsi manajer timbunan Windows standar (HeapAlloc, GlobalAlloc, LocalAlloc, malloc, new, new[], atau fungsi dealokasi yang sesuai), atau yang menggunakan operasi kustom yang memanggil fungsi manajer timbunan standar.

Untuk menentukan apakah verifikasi tumpukan halaman penuh atau standar diaktifkan untuk program, di baris perintah, ketik gflags /p. Dalam tampilan yang dihasilkan, jejak menunjukkan bahwa verifikasi timbunan halaman standar diaktifkan untuk program dan jejak penuh menunjukkan bahwa verifikasi timbunan halaman penuh diaktifkan untuk program.

Parameter /enable mengatur bendera Aktifkan timbunan halaman (hpa) untuk file gambar di registri. Namun, parameter /enable mengaktifkan verifikasi timbunan standar untuk file gambar secara default, tidak seperti parameter /i dengan bendera +hpa , yang mengaktifkan verifikasi tumpukan penuh untuk file gambar.

Verifikasi timbunan halaman standar menempatkan pola acak di akhir alokasi dan memeriksa pola ketika blok tumpukan dibebaskan. Verifikasi tumpukan halaman penuh menempatkan zona memori virtual yang dipesan di akhir setiap alokasi.

Verifikasi timbunan halaman penuh dapat mengonsumsi memori sistem dengan cepat. Untuk mengaktifkan verifikasi timbunan halaman penuh untuk proses intensif memori, gunakan parameter /size atau /dlls .

Setelah menggunakan bendera global untuk penelusuran kesalahan, kirimkan perintah gflags /p /disable untuk menonaktifkan verifikasi tumpukan halaman dan menghapus entri registri terkait. Jika tidak, entri yang dibaca debugger tetap berada di registri. Anda tidak dapat menggunakan perintah gflags /i hpa untuk tugas ini, karena menonaktifkan verifikasi tumpukan halaman, tetapi tidak menghapus entri registri.

Secara default, pada Windows Vista dan versi Windows yang lebih baru, pengaturan khusus program (bendera file gambar dan pengaturan verifikasi timbunan halaman) disimpan di akun pengguna saat ini.

Versi GFlags ini mencakup opsi -v , yang memungkinkan fitur dikembangkan untuk GFlags. Namun, fitur-fitur ini belum lengkap dan, oleh karena itu, tidak didokumenkan.