Debug DLL di Visual Studio (C#, C++, Visual Basic, F#)

DLL (pustaka tautan dinamis) adalah pustaka yang berisi kode dan data yang dapat digunakan oleh lebih dari satu aplikasi. Anda dapat menggunakan Visual Studio untuk membuat, membangun, mengonfigurasi, dan men-debug DLL.

Membuat DLL

Templat proyek Visual Studio berikut dapat membuat DLL:

  • Pustaka Kelas (.NET, .NET Framework, dan platform aplikasi lainnya)
  • Pustaka Kontrol Formulir Windows (.NET dan .NET Framework)
  • Pustaka Dynamic-Link (DLL) (C++)

Men-debug Pustaka Kontrol Formulir Windows mirip dengan men-debug Pustaka Kelas. Untuk informasi selengkapnya, lihat Kontrol Formulir Windows.

Anda biasanya memanggil DLL dari proyek lain. Saat Anda men-debug proyek panggilan, tergantung pada konfigurasi DLL, Anda dapat masuk dan men-debug kode DLL.

Konfigurasi DLL debug

Saat Anda menggunakan templat proyek Visual Studio untuk membuat aplikasi, Visual Studio secara otomatis membuat pengaturan yang diperlukan untuk konfigurasi build Debug dan Rilis. Anda dapat mengubah pengaturan ini jika perlu. Untuk informasi lebih lanjut, baca artikel berikut:

Atur C++ DebuggableAttribute

Agar debugger dapat dilampirkan ke DLL C++, kode C++ harus memancarkan DebuggableAttribute.

Untuk mengatur DebuggableAttribute:

  1. Pilih proyek C++ DLL di Penjelajah Solusi dan pilih ikon Properti , atau klik kanan proyek dan pilih Properti.

  2. Di panel Properti, di bawah Linker>Penelusuran Kesalahan, pilih Ya (/ASSEMBLYDEBUG) untuk Rakitan yang Dapat Di-debug.

Untuk informasi selengkapnya, lihat /ASSEMBLYDEBUG.

Mengatur lokasi file C/C++ DLL

Untuk men-debug DLL eksternal, proyek panggilan harus dapat menemukan DLL, file .pdb, dan file lain yang diperlukan DLL. Anda dapat membuat tugas build kustom untuk menyalin file-file ini ke folder< proyek\>Folder output debug, atau Anda dapat menyalin file di sana secara manual.

Untuk proyek C/C++, Anda dapat mengatur lokasi file header dan LIB di halaman properti proyek, alih-alih menyalinnya ke folder output.

Untuk mengatur header C/C++ dan lokasi file LIB:

  1. Pilih proyek C/C++ DLL di Penjelajah Solusi dan pilih ikon Properti , atau klik kanan proyek dan pilih Properti.

  2. Di bagian atas panel Properti , di bawah Konfigurasi, pilih Semua Konfigurasi.

  3. Di bawah C/C++>General>Additional Include Directories, tentukan folder yang memiliki file header.

  4. Di bawahDirektori Pustaka Tambahan>>, tentukan folder yang memiliki file LIB.

  5. Di bawahInput>Linker>Dependensi Tambahan, tentukan jalur lengkap dan nama file untuk file LIB.

  6. Pilih OK.

Untuk informasi selengkapnya tentang pengaturan proyek C++, lihat Referensi halaman properti Windows C++.

Membuat versi Debug

Pastikan untuk membuat versi Debug DLL sebelum Anda mulai men-debug. Untuk men-debug DLL, aplikasi panggilan harus dapat menemukan file .pdb dan file lain yang diperlukan DLL. Untuk informasi selengkapnya, lihat Cara: Mengatur konfigurasi Debug dan Rilis.

Anda dapat membuat tugas build kustom untuk menyalin file DLL ke <folder> proyek panggilan\Folder output debug , atau Anda dapat menyalin file di sana secara manual.

Pastikan untuk memanggil DLL di lokasi yang benar. Ini mungkin tampak jelas, tetapi jika aplikasi panggilan menemukan dan memuat salinan DLL yang berbeda, debugger tidak akan pernah mencapai titik henti yang Anda tetapkan.

Men-debug DLL

Anda tidak dapat menjalankan DLL secara langsung. Ini harus dipanggil oleh aplikasi, biasanya file .exe .

Untuk men-debug DLL, Anda dapat mulai men-debug dari aplikasi panggilan, atau men-debug dari proyek DLL dengan menentukan aplikasi panggilannya. Anda juga dapat menggunakan jendela Debugger Immediate untuk mengevaluasi fungsi atau metode DLL pada waktu desain, tanpa menggunakan aplikasi panggilan.

Mulai penelusuran kesalahan dari aplikasi pemanggil

Aplikasi yang memanggil DLL dapat berupa:

  • Aplikasi dari proyek Visual Studio dalam solusi yang sama atau berbeda dari DLL.
  • Aplikasi yang sudah ada yang sudah disebarkan dan berjalan pada komputer pengujian atau produksi.
  • Terletak di web dan diakses melalui URL.
  • Aplikasi web dengan halaman web yang menyematkan DLL.

Sebelum Anda mulai men-debug aplikasi panggilan, atur titik henti di DLL. Lihat Memulai dengan titik henti. Saat titik henti DLL diaktifkan, Anda dapat menelusuri kode, mengamati tindakan di setiap baris. Untuk informasi selengkapnya, lihat Menavigasi kode di debugger.

Untuk men-debug DLL dari aplikasi panggilan, Anda dapat:

  • Buka proyek untuk aplikasi panggilan, dan mulai debugging dengan memilih Debug>Mulai Debugging atau tekan F5.

    atau

  • Lampirkan ke aplikasi yang sudah disebarkan dan berjalan pada komputer pengujian atau produksi. Gunakan metode ini untuk DLL di situs web atau di aplikasi web. Untuk informasi selengkapnya, lihat Cara: Melampirkan ke proses yang sedang berjalan.

Saat debug, Anda dapat menggunakan jendela modul untuk memverifikasi DLL dan .exe file yang dimuat oleh aplikasi. Untuk membuka jendela Modul, saat debugging, pilih Debug>Windows>Modul. Untuk informasi selengkapnya, lihat Cara: Menggunakan jendela Modul.

Menggunakan jendela Langsung

Anda dapat menggunakan jendela Langsung untuk mengevaluasi fungsi atau metode DLL pada waktu desain. Jendela Langsung memainkan peran aplikasi panggilan.

Nota

Anda dapat menggunakan jendela Langsung pada waktu desain dengan sebagian besar jenis proyek. Ini tidak didukung untuk SQL, proyek web, atau skrip.

Misalnya, untuk menguji metode bernama Test di kelas Class1:

  1. Dengan proyek DLL terbuka, buka jendela Segera dengan memilih Debug>Windows>Segera atau tekan Ctrl+Alt+I.

  2. Buat instans objek jenis Class1 dengan mengetik kode C# berikut di jendela Langsung dan menekan Enter. Kode terkelola ini berfungsi untuk C# dan Visual Basic, dengan perubahan sintaks yang sesuai:

    Class1 obj = new Class1();
    

    Di C#, semua nama harus sepenuhnya memenuhi syarat. Metode atau variabel apa pun harus berada dalam cakupan dan konteks saat ini ketika layanan bahasa mencoba mengevaluasi ekspresi.

  3. Dengan asumsi yang Test mengambil satu int parameter, evaluasi Test menggunakan jendela Segera :

    ?obj.Test(10);
    

    Hasilnya dicetak di jendela Langsung .

  4. Anda dapat terus men-debug Test dengan menempatkan titik henti di dalamnya, lalu mengevaluasi fungsi lagi.

    Titik henti akan tertembak, dan Anda dapat melangkah melalui Test. Setelah eksekusi meninggalkan Test, debugger akan kembali dalam mode desain.

Penelusuran kesalahan mode campuran

Anda dapat menulis aplikasi panggilan untuk DLL dalam kode terkelola atau asli. Jika aplikasi asli Anda memanggil DLL terkelola dan Anda ingin men-debug keduanya, Anda dapat mengaktifkan debugger terkelola dan asli di properti proyek. Proses yang tepat tergantung pada apakah Anda ingin memulai debugging dari proyek DLL atau proyek aplikasi pemanggil. Untuk informasi selengkapnya, lihat Cara melakukan debug dalam mode campuran.

Anda juga dapat men-debug DLL asli dari proyek panggilan terkelola. Untuk informasi selengkapnya, lihat Cara men-debug kode terkelola dan asli.