Bagikan melalui


Tutorial: Debug C# dan C++ dalam sesi debugging yang sama

Visual Studio memungkinkan Anda mengaktifkan lebih dari satu jenis debugger dalam sesi debugging, yang disebut debugging mode campuran. Dalam tutorial ini, Anda belajar melacak debug kode managed dan native dalam satu sesi debug.

Tutorial ini menunjukkan cara men-debug kode asli dari aplikasi terkelola, tetapi Anda juga dapat men-debug kode terkelola dari aplikasi asli. Debugger juga mendukung jenis debugging campuran mode lainnya, seperti penelusuran kesalahan Python dan kode asli, serta menggunakan penelusur skrip dalam jenis-jenis aplikasi seperti ASP.NET.

Dalam tutorial ini, Anda akan:

  • Membuat DLL asli sederhana
  • Buat aplikasi .NET Core atau .NET Framework sederhana untuk memanggil DLL
  • Mengonfigurasi penelusuran kesalahan mode campuran
  • Mulai debugger
  • Tekan titik henti di aplikasi terkelola
  • Masuk ke kode asli

Prasyarat

Anda harus menginstal Visual Studio, dengan beban kerja berikut:

  • Pengembangan Desktop dengan C++
  • pengembangan desktop .NET

Jika Anda tidak memiliki Visual Studio, buka halaman unduhan Visual Studio untuk menginstalnya secara gratis.

Jika Anda telah menginstal Visual Studio, tetapi tidak memiliki beban kerja yang Anda butuhkan, pilih Buka Penginstal Visual Studio di panel kiri kotak dialog Proyek Baru Visual Studio. Di Penginstal Visual Studio, pilih beban kerja yang Anda butuhkan, lalu pilih Ubah.

Membuat DLL asli sederhana

Untuk membuat file untuk proyek DLL:

  1. Buka Visual Studio dan buat proyek.

    Tekan Esc untuk menutup jendela mulai. Ketik Ctrl + Q untuk membuka kotak pencarian, ketik Proyek Kosong, lalu pilih Proyek Kosong untuk C++. Dalam kotak dialog Konfigurasikan proyek baru Anda yang muncul, ketik nama seperti Mixed_Mode_Debugging dan klik Buat.

    Jika Anda tidak melihat template proyek Proyek Kosong, buka Alat>Dapatkan Alat dan Fitur..., yang akan membuka Penginstal Visual Studio. Penginstal Visual Studio diluncurkan. Pilih beban kerja Pengembangan Desktop dengan C++, lalu pilih Ubah.

    Visual Studio membuat proyek.

  2. Di Penjelajah Solusi, pilih File Sumber, lalu pilih Project>Tambahkan Item Baru. Atau, klik kanan File Sumber dan pilih Tambahkan>Item Baru.

    Jika Anda tidak melihat semua templat item, pilih Perlihatkan Semua Templat.

  3. Dalam dialog Item Baru, pilih file C++ (.cpp). Ketik Mixed_Mode.cpp di bidang Nama, lalu pilih Tambah.

    Visual Studio menambahkan file C++ baru ke Solution Explorer.

  4. Salin kode berikut ke Mixed_Mode.cpp:

    #include "Mixed_Mode.h"
    
  5. Di Penjelajah Solusi, pilih Berkas Header, lalu pilih Proyek>Tambahkan Item Baru. Atau, klik kanan Header Files dan pilih Tambahkan>Item Baru.

    Jika Anda tidak melihat semua templat item, pilih Perlihatkan Semua Templat.

  6. Pada dialog Item Baru, pilih file Header (.h). Ketik Mixed_Mode.h di bidang Nama, lalu pilih Tambah.

    Visual Studio menambahkan file header baru ke Penjelajah Solusi.

  7. Salin kode berikut ini ke Mixed_Mode.h:

    #ifndef MIXED_MODE_MULTIPLY_HPP
    #define MIXED_MODE_MULTIPLY_HPP
    
    extern "C"
    {
      __declspec(dllexport) int __stdcall mixed_mode_multiply(int a, int b) {
        return a * b;
      }
    }
    #endif
    
  8. Pilih File>Simpan Semua atau tekan Ctrl+Shift+S untuk menyimpan file.

Untuk mengonfigurasi dan membangun proyek DLL:

  1. Di toolbar Visual Studio, pilih konfigurasi Debug dan x86 atau platform x64. Jika aplikasi panggilan Anda adalah .NET Core, yang selalu berjalan dalam mode 64-bit, pilih x64 sebagai platform.

  2. Di Penjelajah Solusi, pilih simpul proyek Mixed_Mode_Debugging dan pilih ikon Properti, atau klik kanan simpul proyek dan pilih Properti.

  3. Di bagian atas panel Properti, pastikan Konfigurasi ditetapkan menjadi Aktif(Debug) dan Platform sama dengan yang Anda tetapkan pada bilah alat: x64, atau Win32 untuk platform x86.

    Penting

    Jika Anda beralih platform dari x86 ke x64 atau sebaliknya, Anda harus mengonfigurasi ulang properti untuk platform baru.

  4. Di bawah Properti Konfigurasi di panel kiri, pilih Linker>Tingkat Lanjut, dan di menu dropdown di samping Tanpa Titik Masuk, pilih Tidak. Jika Anda harus mengubahnya menjadi Tidak ada, pilih Terapkan.

  5. Di bawah Properti Konfigurasi, pilih Umum, dan di menu dropdown di samping Jenis Konfigurasi, pilih Pustaka Dinamis.dll. Pilih Terapkan, lalu pilih OK.

    Beralih ke DLL asli

  6. Pilih proyek di Solution Explorer lalu pilih Build>Build Solution, tekan F7, atau klik kanan proyek dan pilih Build.

    Proyek harus dibangun tanpa kesalahan.

Membuat aplikasi terkelola sederhana untuk memanggil DLL

  1. Buka Visual Studio dan buat proyek baru.

    Tekan Esc untuk menutup jendela mulai. Ketik Ctrl + Q untuk membuka kotak pencarian, ketik konsol, lalu pilih Aplikasi Konsol C# untuk .NET atau .NET Framework.

    Kemudian, ketik nama seperti Mixed_Mode_Calling_App dan klik Berikutnya atau Buat, mana pun opsi yang tersedia.

    Untuk .NET Core atau .NET 5+, pilih kerangka kerja target yang direkomendasikan atau .NET 8, lalu pilih Buat.

    Jika Anda tidak melihat templat proyek yang benar, buka Alat >Dapatkan Alat dan Fitur..., yang membuka Alat Penginstal Visual Studio. Pilih beban kerja .NET yang benar seperti yang dijelaskan dalam prasyarat, lalu pilih Ubah.

    Nota

    Anda juga dapat menambahkan proyek terkelola baru ke solusi C++ yang sudah ada. Kami membuat proyek dalam solusi baru agar tugas debugging mode campuran menjadi lebih menantang.

    Visual Studio membuat proyek kosong dan menampilkannya di Solution Explorer.

  2. Ganti semua kode di Program.cs dengan kode berikut:

    using System;
    using System.Runtime.InteropServices;
    
    namespace Mixed_Mode_Calling_App
    {
        public class Program
        {
            // Replace the file path shown here with the
            // file path on your computer. For .NET Core, the typical (default) path
            // for a 64-bit DLL might look like this:
            // C:\Users\username\source\repos\Mixed_Mode_Debugging\x64\Debug\Mixed_Mode_Debugging.dll
            // Here, we show a typical path for a DLL targeting the **x86** option.
            [DllImport(@"C:\Users\username\source\repos\Mixed_Mode_Debugging\Debug\Mixed_Mode_Debugging.dll", EntryPoint =
            "mixed_mode_multiply", CallingConvention = CallingConvention.StdCall)]
            public static extern int Multiply(int x, int y);
            public static void Main(string[] args)
            {
                int result = Multiply(7, 7);
                Console.WriteLine("The answer is {0}", result);
                Console.ReadKey();
            }
        }
    }
    
  3. Dalam kode baru, ganti jalur file di [DllImport] dengan jalur file Anda ke Mixed_Mode_Debugging.dll yang baru saja Anda buat. Lihat komentar kode untuk petunjuk. Pastikan untuk mengganti nama pengguna pengganti.

  4. Pilih File>Simpan Program.cs atau tekanCtrl+ S untuk menyimpan file.

Mengonfigurasi penelusuran kesalahan mode campuran

  1. Di Penjelajah Solusi, pilih simpul proyek Mixed_Mode_Calling_App dan pilih ikon Properti, atau klik kanan simpul proyek dan pilih Properti.

  2. Aktifkan debugging kode asli di properti.

    kode .NET

    Pilih Debug di panel kiri, pilih Buka antarmuka peluncuran profil debug, lalu pilih kotak centang Aktifkan debugging kode asli, lalu tutup halaman properti untuk menyimpan perubahan.

    Mengaktifkan debugging mode campuran

    kode .NET Framework

    Di menu sebelah kiri, pilih Debug. Kemudian, di bagian mesin Debugger, pilih properti Aktifkan penelusuran kesalahan kode asli, lalu tutup halaman properti untuk menyimpan perubahan.

  3. Jika Anda menargetkan DLL x64 dari aplikasi .NET Framework, ubah target platform dari CPU apa pun menjadi x64. Untuk melakukan ini, Anda mungkin perlu memilih Configuration Manager dari menu drop-down Platform Penyelesaian toolbar Debug. Kemudian, jika Anda tidak dapat beralih ke x64 secara langsung, buat konfigurasi New yang menargetkan x64.

Tetapkan titik henti dan mulai debugging

  1. Dalam proyek C#, buka Program.cs. Atur titik henti pada baris kode berikut dengan mengklik di margin paling kiri, memilih garis dan menekan F9, atau mengklik kanan garis dan memilih titik henti >Sisipkan Titik Henti.

    int result = Multiply(7, 7);
    

    Lingkaran merah muncul di margin kiri tempat Anda mengatur titik henti.

  2. Tekan F5, pilih panah hijau di toolbar Visual Studio, atau pilih Debug>Mulai Debugging untuk memulai debugging.

    Debugger berhenti pada titik henti yang Anda tetapkan. Panah kuning menunjukkan tempat di mana debugger sedang berhenti.

Masuk-keluar dari kode asli

  1. Saat penelusuran kesalahan dijeda di aplikasi terkelola, tekan F11, atau pilih Debug>Masuk ke.

    File header asli Mixed_Mode.h terbuka, dan Anda melihat panah kuning di mana debugger dihentikan.

    Melangkah ke dalam kode asli

  2. Sekarang, Anda dapat mengatur dan menekan titik henti dan memeriksa variabel dalam kode asli atau terkelola.

    • Arahkan mouse ke atas variabel dalam kode sumber untuk melihat nilainya.

    • Lihat variabel dan nilainya di jendela Autos dan Lokals.

    • Saat dijeda di debugger, Anda juga dapat menggunakan jendela Watch dan jendela Call Stack.

  3. Tekan F11 lagi untuk memajukan debugger satu baris.

  4. Tekan Shift+F11 atau pilih Debug>Langkah Keluar untuk melanjutkan eksekusi dan menjeda lagi di aplikasi terkelola.

  5. Tekan F5 atau pilih panah hijau untuk melanjutkan penelusuran kesalahan aplikasi.

Selamat! Anda telah menyelesaikan tutorial tentang debugging mode gabungan.

Langkah berikutnya

Dalam tutorial ini, Anda mempelajari cara men-debug kode asli dari aplikasi terkelola dengan mengaktifkan debugging mode campuran. Untuk gambaran umum fitur debugger lainnya, lihat: