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.
Elemen sintaks berikut dapat digunakan saat membuat titik henti, baik melalui jendela Perintah Debugger atau melalui antarmuka grafis WinDbg.
Alamat pada titik penghentian
Titik henti (breakpoint) mendukung berbagai jenis sintaks alamat, termasuk alamat virtual, offset fungsi, dan nomor baris kode sumber. Misalnya, Anda dapat menggunakan salah satu perintah berikut untuk mengatur titik henti:
0:000> bp 0040108c
0:000> bp main+5c
0:000> bp `source.c:31`
Untuk informasi selengkapnya tentang sintaks ini, lihat Sintaks Ekspresi Numerik, Sintaks Baris Sumber, dan topik perintah individual.
Titik penghentian pada metoda
Jika Anda ingin menempatkan titik henti pada metode MyMethod di kelas MyClass , Anda dapat menggunakan dua sintaks yang berbeda:
Dalam sintaks ekspresi MASM, Anda dapat menunjukkan metode dengan titik dua atau dengan garis bawah ganda.
0:000> bp MyClass::MyMethod 0:000> bp MyClass__MyMethodDalam sintaks ekspresi C++, Anda harus menunjukkan metode dengan titik dua.
0:000> bp @@( MyClass::MyMethod )
Jika Anda ingin menggunakan perintah titik henti yang lebih kompleks, Anda harus menggunakan sintaks ekspresi MASM. Untuk informasi selengkapnya tentang sintaks ekspresi, lihat Mengevaluasi Ekspresi.
Titik henti menggunakan ekspresi MASM yang rumit
Untuk mengatur titik henti pada fungsi yang rumit, termasuk fungsi yang berisi spasi, maupun anggota kelas publik C++, sertakan ekspresi tersebut dalam tanda kurung. Misalnya, gunakan bp (?? MyPublic) atau bp (operator baru).
Teknik yang lebih serbaguna adalah menggunakan sintaks @!"chars". Ini adalah pelolosan khusus dalam evaluator MASM yang memungkinkan Anda menyediakan teks bebas untuk penyelesaian simbol. Anda harus memulai dengan tiga simbol @!" dan diakhir dengan tanda kutip ("). Tanpa sintaks ini, Anda tidak dapat menggunakan spasi, kurung sudut (<, >), atau karakter khusus lainnya dalam nama simbol dalam evaluator MASM. Sintaks ini khusus untuk nama, dan bukan parameter. Templat dan kelebihan beban adalah sumber utama simbol yang memerlukan notasi kutipan ini. Anda juga dapat mengatur perintah bu dengan menggunakan @!" sintaks karakter", seperti yang ditunjukkan contoh kode berikut.
0:000> bu @!"ExecutableName!std::pair<unsigned int,std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> > >::operator="
Dalam contoh ini, ExecutableName adalah nama file yang dapat dieksekusi.
Sintaks escape ini lebih berguna untuk C++ (misalnya, operator yang kelebihan beban) alih-alih C karena tidak ada spasi (atau karakter khusus) dalam nama fungsi C. Namun, sintaks ini juga penting untuk banyak kode terkelola karena penggunaan kelebihan beban yang cukup besar dalam .NET Framework.
Untuk mengatur titik henti pada teks arbitrer dalam sintaks C++, gunakan bu @@c++(teks) untuk simbol yang kompatibel dengan C++.
Titik henti dalam skrip
ID titik henti tidak harus dirujuk secara eksplisit. Sebagai gantinya, Anda dapat menggunakan ekspresi numerik yang diselesaikan ke bilangan bulat yang sesuai dengan ID titik henti. Untuk menunjukkan bahwa ekspresi harus ditafsirkan sebagai titik henti, gunakan sintaks berikut.
b?[Expression]
Dalam sintaks ini, kurung siku diperlukan, dan Ekspresi mewakili setiap ekspresi numerik yang menghasilkan bilangan bulat yang sesuai dengan ID titik henti.
Sintaks ini memungkinkan skrip debugger untuk memilih titik henti secara terprogram. Dalam contoh berikut, titik henti berubah tergantung pada nilai pseudo-register yang ditentukan pengguna.
b?[@$t0]
Pseudoregister breakpoint
Jika Anda ingin merujuk ke alamat titik henti dalam ekspresi, Anda bisa menggunakan pseudo-register dengan sintaks $bpNumber , di mana Angka adalah ID titik henti. Untuk informasi selengkapnya tentang sintaks ini, lihat Sintaks Pseudo-Register.
Resolusi titik henti ambigu
Dalam versi 10.0.25310.1001 dan yang lebih baru dari mesin debugger, resolusi titik henti ambigu sekarang didukung. Titik henti ambigu memungkinkan debugger mengatur titik henti dalam skenario tertentu di mana ekspresi dari titik henti berakhir di beberapa lokasi. Untuk informasi selengkapnya, lihat Resolusi titik henti ambigu.