Bagikan melalui


Tutorial: Men-debug C# dan C++ dalam sesi penelusuran kesalahan yang sama

Visual Studio memungkinkan Anda mengaktifkan lebih dari satu jenis debugger dalam sesi penelusuran kesalahan, yang bernama penelusuran kesalahan mode campuran. Dalam tutorial ini, Anda belajar men-debug kode terkelola dan asli dalam satu sesi penelusuran kesalahan.

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 penelusuran kesalahan mode campuran lainnya, seperti penelusuran kesalahan kode asli dan Python, dan menggunakan debugger skrip dalam jenis aplikasi seperti ASP.NET.

Dalam tutorial ini, Anda akan:

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

Prasyarat

Anda harus memasang Visual Studio, dengan beban kerja berikut:

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

Anda harus memasang Visual Studio, dengan beban kerja berikut:

  • Pengembangan desktop dengan C++
  • Pengembangan desktop .NET atau Pengembangan lintas platform .NET Core, tergantung pada jenis aplikasi yang ingin Anda buat.

Jika belum memiliki Visual Studio, buka halaman unduhan Visual Studio untuk memasangnya secara gratis.

Jika sudah memasang Visual Studio, tetapi tidak memiliki beban kerja yang dibutuhkan, pilih Buka Penginstal Visual Studio di panel kiri kotak dialog Proyek Baru Visual Studio. Di Alat Penginstal Visual Studio, pilih beban kerja yang dibutuhkan, 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 Empty Project, pilih Templates, lalu pilih Empty Project untuk C++. Dalam kotak dialog yang muncul, pilih Buat. Kemudian, ketik nama seperti Mixed_Mode_Debugging dan klik Buat.

    Jika tidak menemukan templat proyek Empty Project, buka Tools>Get Tools and Features..., yang membuka Alat Penginstal Visual Studio. Alat 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 Proyek>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 Tambahkan.

    Visual Studio menambahkan file C++ baru ke Penjelajah Solusi.

  4. Salin kode berikut ke Mixed_Mode.cpp:

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

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

  6. Dalam dialog Item Baru, pilih File header (.h). Ketik Mixed_Mode.cpp di bidang Nama, lalu pilih Tambahkan.

    Visual Studio menambahkan file header baru ke Penjelajah Solusi.

  7. Salin kode berikut 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 platform x86 atau x64. Jika aplikasi panggilan Anda berupa .NET Core, yang selalu berjalan dalam mode 64-bit, pilih x64 sebagai platform.

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

  3. Di bagian atas panel Properti, pastikan Konfigurasi diatur ke Aktif(Debug) dan Platform sama dengan yang Anda tetapkan di toolbar: x64, atau Win32 untuk platform x86.

    Penting

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

  4. Pada Properti Konfigurasi di panel kiri, pilih Linker>Lanjutan, dan di menu drop-down di samping Tidak Ada Titik Masuk, pilih Tidak. Jika Anda harus mengubahnya menjadi Tidak, pilih Terapkan.

  5. Pada Properti Konfigurasi, pilih Umum, dan di menu drop-down di samping Jenis Konfigurasi, pilih Pustaka Dinamis (.dll). Pilih Terapkan, lalu pilih OK.

    Switch to a native DLL

  6. Pilih proyek di Penjelajah Solusi lalu pilih Build>Build Solution, tekan F7, atau klik kanan pada 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, pilih Templat, lalu pilih Aplikasi Konsol untuk .NET Core atau Aplikasi Konsol (.NET Framework) untuk C#. Dalam kotak dialog yang muncul, pilih Next.

    Kemudian, ketik nama seperti Mixed_Mode_Calling_App dan klik Next atau Create, opsi mana pun yang tersedia.

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

    Jika Anda tidak menemukan templat proyek yang benar, buka Tools>Get Tools and Features..., yang membuka Alat Penginstal Visual Studio. Pilih beban kerja .NET yang benar seperti yang dijelaskan dalam prasyarat, lalu pilih Ubah.

    Catatan

    Anda juga dapat menambahkan proyek terkelola baru ke solusi C++ yang sudah ada. Kami membuat proyek dalam solusi baru untuk membuat tugas penelusuran kesalahan mode campuran lebih sulit.

    Visual Studio membuat proyek kosong dan menampilkannya dalam Penjelajah Solusi.

  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. Di kode baru, ganti jalur file di [DllImport] dengan jalur file Anda ke Mixed_Mode_Debugging.dll yang baru saja dibuat. Lihat komentar kode untuk petunjuknya. Pastikan untuk mengganti tempat penampung nama pengguna.

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

Mengonfigurasi penelusuran kesalahan mode campuran

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

  2. Aktifkan penelusuran kesalahan kode asli di properti.

    Pilih Debug di panel kiri, pilih Buka antarmuka pengguna profil peluncuran debug, lalu centang Aktifkan penelusuran kesalahan kode asli, lalu tutup halaman properti untuk menyimpan perubahan. Enable mixed mode debugging

    Pilih Debug di panel kiri, centang Aktifkan penelusuran kesalahan kode asli, lalu tutup halaman properti untuk menyimpan perubahan.

    Enable mixed mode debugging

  3. Jika Anda menargetkan DLL x64 dari aplikasi .NET Framework, ubah target platform dari Semua CPU ke x64. Untuk melakukannya, Anda mungkin perlu memilih Manajer Konfigurasi dari menu drop-down Platform Solusi toolbar Debug. Kemudian, jika Anda tidak dapat beralih ke x64 secara langsung, buat Konfigurasi Baru yang menargetkan x64.

Mengatur titik henti dan memulai penelusuran kesalahan

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

    int result = Multiply(7, 7);
    

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

  2. Tekan F5, pilih panah hijau di toolbar Visual Studio, atau pilih Debug>Start Debugging untuk memulai penelusuran kesalahan.

    Debugger dijeda pada titik henti yang Anda tetapkan. Panah kuning menunjukkan tempat debugger saat ini dijeda.

Masuk dan keluar dari kode asli

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

    File header asli Mixed_Mode.h terbuka, dan Anda melihat panah kuning tempat debugger dijeda.

    Step into native code

    Step into native code

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

    • Arahkan kursor ke variabel dalam kode sumber untuk melihat nilainya.

    • Lihat variabel dan nilainya di jendela Autos dan Locals.

    • 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>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 penelusuran kesalahan mode campuran.

Langkah selanjutnya

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