Bagikan melalui


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

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

Buat DLL

Templat proyek Visual Studio berikut ini dapat membuat DLL:

  • Pustaka Kelas C#, Visual Basic, atau F#
  • Pustaka C# atau Visual Basic Formulir Windows Control (WCF)
  • Pustaka Dynamic-Link C++ (DLL)

Untuk informasi selengkapnya, lihat Teknik penelusuran kesalahan MFC.

Menelusuri kesalahan Pustaka WCF mirip dengan menelusuri kesalahan Pustaka Kelas. Untuk detailnya, lihat Kontrol Formulir Windows.

Anda biasanya memanggil DLL dari proyek lain. Saat Anda menelususri kesalahan proyek panggilan, tergantung pada konfigurasi DLL, Anda dapat masuk dan menelusuri kesalahan kode DLL.

Konfigurasi debug DLL

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:

Mengatur C++ DebuggableAttribute

Agar debugger melampirkan 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 bawahPenelusuran Kesalahan>Linker, pilih Ya (/ASSEMBLYDEBUG) untuk Perakitan yang Dapat Di-debug.

Untuk informasi selengkapnya, lihat /ASSEMBLYDEBUG.

Atur lokasi file C/C++ DLL

Untuk men-debug DLL eksternal, proyek panggilan harus dapat menemukan DLL, file .pdb-nya, 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++ 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 bawah Linker>General>Additional Libraries Directories, 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 C++ Windows.

Membuat versi Debug

Pastikan untuk membuat versi Debug DLL sebelum Anda memulai penelusuran kesalahan. Untuk men-debug DLL, aplikasi panggilan harus dapat menemukan 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.

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 informasi selengkapnya, lihat Proyek Visual Studio - C++.

Untuk men-debug DLL, Anda dapat memulai penelusuran kesalahan dari aplikasi panggilan, atau men-debug dari proyek DLL dengan menentukan aplikasi panggilannya. Anda juga dapat menggunakan jendela Langsung debugger untuk mengevaluasi fungsi atau metode DLL pada waktu desain, tanpa menggunakan aplikasi panggilan.

Untuk informasi selengkapnya, lihat Pandangan pertama pada debugger.

Mulai penelusuran kesalahan dari aplikasi panggilan

Aplikasi yang memanggil DLL dapat berupa:

  • Aplikasi dari proyek Visual Studio dalam solusi yang sama atau berbeda dari DLL.
  • Aplikasi yang sudah ada dan 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.

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

  • Buka proyek untuk aplikasi panggilan, dan mulai penelusuran kesalahan dengan memilih Debug>Mulai Debugging atau menekan F5.

    or

  • 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.

Sebelum Anda mulai menelussuri kesalahan aplikasi panggilan, atur titik henti di DLL. Lihat Menggunakan titik henti. Ketika titik henti DLL terpukul, Anda dapat menelusuri kode, mengamati tindakan di setiap baris. Untuk informasi selengkapnya, lihat Menavigasi kode di debugger.

Selama penelusuran kesalahan, Anda dapat menggunakan jendela Modul untuk memverifikasi DLL dan .exe file yang dimuat aplikasi. Untuk membuka jendela Modul, saat menelususri kesalahan, pilih Debug>Windows>Modules. 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.

Catatan

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 Langsung dengan memilih Debug>Windows>Immediate atau menekan 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();
    

    Dalam 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 Langsung :

    ?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 terpukul, 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 penelusuran kesalahan dari proyek DLL atau proyek aplikasi panggilan. Untuk mengetahui informasi selengkapnya, lihat Cara: Mendebug 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.