Bagikan melalui


Sintaks Titik Henti

Elemen sintaks berikut dapat digunakan saat membuat titik henti, baik melalui jendela Perintah Debugger atau melalui antarmuka grafis WinDbg.

Alamat dalam titik henti

Titik henti mendukung berbagai jenis sintaks alamat, termasuk alamat virtual, offset fungsi, dan nomor baris 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 henti pada metode

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__MyMethod 
    
  • Dalam 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, serta anggota kelas publik C++, serta sertakan ekspresi dalam tanda kurung. Misalnya, gunakan bp (?? MyPublic) atau bp (operator baru).

Teknik yang lebih serbaguna adalah menggunakan @!" sintaksis karakter". Ini adalah escape khusus dalam evaluator MASM yang memungkinkan Anda menyediakan teks arbitrer untuk resolusi simbol. Anda harus memulai dengan tiga simbol @!" dan diakhpuni 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 secara eksklusif untuk nama, dan bukan parameter. Templat dan kelebihan beban adalah sumber utama simbol yang memerlukan notasi kuotasi ini. Anda juga dapat mengatur perintah bu dengan menggunakan @!" sintaksis 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, tanda kurung siku diperlukan, dan Ekspresi adalah singkatan dari ekspresi numerik apa pun yang diselesaikan ke 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]

Breakpoint pseudo-registers

Jika Anda ingin merujuk ke alamat titik henti dalam ekspresi, Anda bisa menggunakan pseudo-register dengan sintaks angka $bp, 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 titik henti diselesaikan ke beberapa lokasi. Untuk informasi selengkapnya, lihat Resolusi titik henti ambigu.

Lihat juga

Menggunakan Titik Henti

Sintaks Titik Henti

bp, bu, bm (Atur Titik Henti)

Titik Henti Tidak Terselesaikan (bu Titik Henti)