Bagikan melalui


Operator Konteks di Visual Studio Debugger (C++)

Anda dapat menggunakan operator konteks di C++ untuk memenuhi syarat lokasi titik henti, nama variabel, atau ekspresi. Operator konteks berguna untuk menentukan nama dari cakupan luar yang disembunyikan oleh nama lokal.

Sintaks

Ada dua cara untuk menentukan konteks:

  1. {,,[module] } expression

    Kurung kurawal harus berisi dua koma dan nama modul (dapat dijalankan atau DLL) atau jalur lengkap.

    Misalnya, untuk mengatur titik henti pada SomeFunction fungsi EXAMPLE.dll:

    {,,EXAMPLE.dll}SomeFunction
    
  2. module!expression

    EXAMPLE.dll!SomeFunction
    
  • module adalah nama modulnya. Anda dapat menggunakan jalur lengkap untuk membedakan antara modul dengan nama yang sama.

    Jika jalur module menyertakan koma, spasi yang disematkan, atau kurung kurawal, Anda harus menggunakan tanda kutip di sekitar jalur sehingga pengurai konteks dapat mengenali string dengan benar. Tanda kutip tunggal dianggap sebagai bagian dari nama file Windows, jadi Anda harus menggunakan tanda kutip ganda. Contohnya,

    {,,"a long, long, library name.dll"} g_Var
    
  • expression adalah ekspresi C++ yang valid yang diselesaikan ke target yang valid, seperti nama fungsi, nama variabel, atau alamat penunjuk di module.

    Saat penilai ekspresi menemukan simbol dalam ekspresi, penilai akan mencari simbol dalam urutan berikut:

  1. Cakupan leksikal ke luar, dimulai dengan blok saat ini, serangkaian pernyataan yang diapit kurung kurawal, dan dilanjutkan ke luar dengan blok tertutup. Blok saat ini adalah kode yang berisi lokasi alamat penunjuk instruksi saat ini.

  2. Cakupan fungsi. Fungsi saat ini.

  3. Cakupan kelas, jika lokasi saat ini berada di dalam fungsi anggota C++. Cakupan kelas mencakup semua kelas dasar. Penilai ekspresi menggunakan aturan dominasi normal.

  4. Simbol global dalam modul saat ini.

  5. Simbol publik dalam program saat ini.