Bagikan melalui


Lampirkan ke program

Setelah mendaftarkan program dengan port yang sesuai, Anda harus melampirkan debugger ke program yang ingin Anda debug.

Pilih cara melampirkan

Ada tiga cara di mana manajer debug sesi (SDM) mencoba melampirkan ke program yang sedang di-debug.

  1. Untuk program yang diluncurkan oleh mesin debug melalui metode LaunchSuspended (biasanya bahasa yang ditafsirkan, misalnya), SDM memperoleh antarmuka IDebugProgramNodeAttach2 dari objek IDebugProgramNode2 yang terkait dengan program yang dilampirkan. Jika SDM dapat memperoleh IDebugProgramNodeAttach2 antarmuka, SDM kemudian memanggil metode OnAttach . Metode IDebugProgramNodeAttach2::OnAttach kembali S_OK untuk menunjukkan bahwa metode tidak melekat pada program dan bahwa upaya lain dapat dilakukan untuk melampirkan ke program.

  2. Jika SDM dapat memperoleh antarmuka IDebugProgramEx2 dari program yang dilampirkan, SDM memanggil metode Lampirkan . Pendekatan ini khas untuk program yang diluncurkan dari jarak jauh oleh pemasok port.

  3. Jika program tidak dapat dilampirkan melalui IDebugProgramNodeAttach2::OnAttach metode atau IDebugProgramEx2::Attach , SDM memuat mesin debug (jika belum dimuat) dengan memanggil CoCreateInstance fungsi lalu memanggil metode Lampirkan . Pendekatan ini khas untuk program yang diluncurkan secara lokal oleh pemasok port.

    Dimungkinkan juga bagi pemasok port kustom untuk memanggil IDebugEngine2::Attach metode dalam implementasi pemasok port kustom dari metode tersebut IDebugProgramEx2::Attach . Biasanya dalam hal ini, pemasok port kustom meluncurkan mesin debug pada komputer jarak jauh.

    Lampiran dicapai ketika manajer debug sesi (SDM) memanggil metode Lampirkan .

    Jika Anda menjalankan DE dalam proses yang sama dengan aplikasi yang akan di-debug, maka Anda harus menerapkan metode IDebugProgramNode2 berikut:

  1. Kirim objek peristiwa IDebugEngineCreateEvent2 ke SDM. Untuk informasi selengkapnya, lihat Mengirim peristiwa.

  2. Panggil metode GetProgramId pada objek IDebugProgram2 yang diteruskan ke IDebugEngine2::Attach metode .

    Ini mengembalikan yang GUID digunakan untuk mengidentifikasi program. GUID harus disimpan dalam objek yang mewakili program lokal ke DE, dan harus dikembalikan ketika IDebugProgram2::GetProgramId metode dipanggil pada IDebugProgram2 antarmuka.

    Catatan

    Jika Anda menerapkan IDebugProgramNodeAttach2 antarmuka, program GUID diteruskan ke IDebugProgramNodeAttach2::OnAttach metode . Ini GUID digunakan untuk program GUID yang dikembalikan oleh IDebugProgram2::GetProgramId metode .

  3. Kirim objek peristiwa IDebugProgramCreateEvent2 untuk memberi tahu SDM bahwa objek lokal IDebugProgram2 dibuat untuk mewakili program ke DE. Untuk detailnya, lihat Mengirim Peristiwa.

    Catatan

    Ini bukan objek yang sama IDebugProgram2 yang diteruskan ke IDebugEngine2::Attach metode . Objek yang dilewatkan IDebugProgram2 sebelumnya hanya dikenali oleh port dan merupakan objek terpisah.