Aracılığıyla paylaş


Visual Studio'da DLL hatalarını ayıklama (C#, C++, Visual Basic, F#)

DLL (dinamik bağlantı kitaplığı), birden fazla uygulama tarafından kullanılabilecek kod ve veriler içeren bir kitaplıktır. DLL'leri oluşturmak, derlemek, yapılandırmak ve hatalarını ayıklamak için Visual Studio'yu kullanabilirsiniz.

DLL oluşturma

Aşağıdaki Visual Studio proje şablonları DLL'ler oluşturabilir:

  • Sınıf Kitaplığı (.NET, .NET Framework ve diğer uygulama platformları)
  • Windows Forms Denetim Kitaplığı (.NET ve .NET Framework)
  • Dynamic-Link Kitaplığı (DLL) (C++)

Windows Forms Denetim Kitaplığı'nın hata ayıklaması, Sınıf Kitaplığı'nın hatalarını ayıklamaya benzer. Daha fazla bilgi için bkz. Windows Forms Denetimleri.

Genellikle başka bir projeden DLL çağırırsınız. Çağıran projede hata ayıkladığınızda, DLL yapılandırmasına bağlı olarak, DLL kodunda adım adım ilerleyebilir ve bu kodda hata ayıklayabilirsiniz.

DLL hata ayıklama yapılandırması

Uygulama oluşturmak için Visual Studio proje şablonu kullandığınızda Visual Studio, Hata Ayıklama ve Sürüm derleme yapılandırmaları için gerekli ayarları otomatik olarak oluşturur. Gerekirse bu ayarları değiştirebilirsiniz. Daha fazla bilgi için aşağıdaki makalelere bakın:

C++ DebuggableAttribute'u ayarlama

Hata ayıklayıcının bir C++ DLL'sine eklenebilmesi için C++ kodunun DebuggableAttribute üretmesi gerekir.

Ayarlamak için DebuggableAttribute:

  1. Çözüm Gezgini'nde C++ DLL projesini seçin ve Özellikler simgesini seçin veya projeye sağ tıklayıp Özellikler'i seçin.

  2. Özellikler bölmesinde, Bağlayıcı> altındaki Hata Ayıklama bölümünde, Hata Ayıklanabilir Derleme için Evet (/ASSEMBLYDEBUG) seçeneğini seçin.

Daha fazla bilgi için bkz. /ASSEMBLYDEBUG.

C/C++ DLL dosya konumlarını ayarlama

Dış DLL'de hata ayıklamak için, çağıran bir projenin DLL'yi, .pdb dosyasını ve DLL'nin gerektirdiği diğer dosyaları bulabilmesi gerekir. Bu dosyaları proje klasörünüz\Hata ayıklama çıkış klasörünüze<> kopyalamak için özel bir derleme görevi oluşturabilir veya dosyaları burada el ile kopyalayabilirsiniz.

C/C++ projeleri için, üst bilgi ve LIB dosya konumlarını çıkış klasörüne kopyalamak yerine proje özellik sayfalarında ayarlayabilirsiniz.

C/C++ üst bilgisi ve LIB dosya konumlarını ayarlamak için:

  1. Çözüm Gezgini'nde C/C++ DLL projesini seçin ve Özellikler simgesini seçin veya projeye sağ tıklayıp Özellikler'i seçin.

  2. Özellikler bölmesinin üst kısmındaki Yapılandırma'nın altında Tüm Yapılandırmalar'ı seçin.

  3. C/C++>Genel>Ek Ekleme Dizinleri'nin altında üst bilgi dosyalarının yer aldığı klasörü belirtin.

  4. Bağlayıcı>Genel>Ek Kitaplık Dizinleri'nin altında LIB dosyalarının yer aldığı klasörü belirtin.

  5. Bağlayıcı>Girişi>Ek Bağımlılıkları altında, LIB dosyalarının tam yolunu ve dosya adını belirtin.

  6. Tamam'ı seçin.

C++ proje ayarları hakkında daha fazla bilgi için bkz. Windows C++ özellik sayfası referansı.

Hata Ayıklama sürümü oluştur

Hata ayıklamaya başlamadan önce DLL'nin Hata Ayıklama sürümünü derlediğinizden emin olun. Dll'de hata ayıklamak için, çağıran uygulamanın .pdb dosyasını ve DLL'nin gerektirdiği diğer dosyaları bulabilmesi gerekir. Daha fazla bilgi için bkz. Nasıl yapılır: Hata Ayıklama ve Yayın yapılandırmalarını ayarlama

DLL dosyalarını çağıran proje klasörünüz\Hata ayıklama çıkış klasörünüze<> kopyalamak için özel bir derleme görevi oluşturabilir veya dosyaları buradan el ile kopyalayabilirsiniz.

DLL'yi doğru konumda çağırdığından emin olun. Bu açıkça görünebilir, ancak bir çağrı uygulaması DLL'nin farklı bir kopyasını bulur ve yüklerse, hata ayıklayıcı ayarladığınız kesme noktalarına asla ulaşmaz.

DLL hatalarını ayıklama

DLL'i doğrudan çalıştıramazsınız. Genellikle bir .exe dosyası olan bir uygulama tarafından çağrılmalıdır.

DLL'de hata ayıklamak için çağıran uygulamadan hata ayıklamaya başlayabilir veya DLL projesinden hata ayıklayarak çağıran uygulamasını belirtebilirsiniz. Ayrıca, çağırma uygulaması kullanmadan tasarım zamanında DLL işlevlerini veya yöntemlerini değerlendirmek için hata ayıklayıcısı Anında penceresini de kullanabilirsiniz.

Arama uygulamasından hata ayıklamayı başlatma

DLL çağıran uygulama şu olabilir:

  • Aynı veya DLL'den farklı bir çözümdeki Visual Studio projesinden bir uygulama.
  • Zaten dağıtılmış ve bir test veya üretim bilgisayarında çalışan mevcut bir uygulama.
  • Web'de bulunur ve bir URL üzerinden erişilir.
  • DLL'yi ekleyen bir web sayfası olan bir web uygulaması.

Arama uygulamasında hata ayıklamaya başlamadan önce DLL'de bir kesme noktası ayarlayın. Bkz. Kesme noktalarını kullanmaya başlama. DLL kesme noktasına erişildiğinde, her satırdaki eylemi gözlemleyerek kodda adım adım ilerleyebilirsiniz. Daha fazla bilgi için bkz . Hata ayıklayıcıda kodda gezinme.

Bir arama uygulamasından DLL'de hata ayıklamak için şunları yapabilirsiniz:

  • Çağıran uygulamanın projesini açın ve Hata Ayıklamayı>Başlat Hata Ayıklama'yı seçerek veya F5 tuşuna basarak hata ayıklamaya başlayın.

    veya

  • Halihazırda dağıtılmış ve bir test veya üretim bilgisayarında çalışan bir uygulamaya bağlanın. Web sitelerindeki veya web uygulamalarındaki DLL'ler için bu yöntemi kullanın. Daha fazla bilgi için Nasıl Yapılır: Çalışan Bir İşleme Ekleme bölümüne bakın.

Hata ayıklama sırasında, DLL'leri doğrulamak ve uygulamanın yükleyebileceği dosyaları .exe için Modüller penceresini kullanabilirsiniz. Modüller penceresini açmak için hata ayıklarkenWindows>Modüllerinde> seçin. Daha fazla bilgi için bkz . Nasıl yapılır: Modüller penceresini kullanma.

Anında penceresini kullanma

Tasarım zamanında DLL işlevlerini veya yöntemlerini değerlendirmek için Anında penceresini kullanabilirsiniz. Anında penceresi bir arama uygulamasının rolünü oynar.

Uyarı

Proje türlerinin çoğuyla tasarım zamanında Anında penceresini kullanabilirsiniz. SQL, web projeleri veya betikler için desteklenmemektedir.

Örneğin, sınıf Test içinde Class1 adlı bir yöntemi test etmek için:

  1. DLL projesi açıkken,Windows>Hatalarını Ayıkla'yı> seçerek veya Ctrl++ tuşlarına basarak Anında penceresini açın.

  2. Class1 penceresine aşağıdaki C# kodunu yazıp Enter tuşuna basarak türündeki bir nesnenin örneğini oluşturun. Bu yönetilen kod C# ve Visual Basic için uygun söz dizimi değişiklikleriyle çalışır:

    Class1 obj = new Class1();
    

    C# dilinde tüm adların tam olarak nitelenmiş olması gerekir. Dil hizmeti ifadeyi değerlendirmeye çalıştığında tüm yöntemler veya değişkenler geçerli kapsam ve bağlamda olmalıdır.

  3. Test Bir int parametre aldığını varsayarak Test, Anında penceresini kullanarak değerlendirin:

    ?obj.Test(10);
    

    Sonuç Anlık pencerede yazdırılır.

  4. İçine bir kesme noktası yerleştirip işlevi yeniden değerlendirerek Test hata ayıklamaya devam edebilirsiniz.

    Kesme noktasına ulaşılacak ve adım adım ilerleyebileceksiniz Test. Yürütme çıktıktan Testsonra hata ayıklayıcı tasarım moduna geri döner.

Karışık modda hata ayıklama

Yönetilen veya yerel kodda DLL için bir arama uygulaması yazabilirsiniz. Yerel uygulamanız yönetilen DLL çağırırsa ve her ikisinde de hata ayıklamak istiyorsanız, proje özelliklerinde hem yönetilen hem de yerel hata ayıklayıcıları etkinleştirebilirsiniz. Tam işlem, DLL projesinden mi yoksa çağıran uygulama projesinden mi hata ayıklama başlatmak istediğinize bağlıdır. Daha fazla bilgi için bkz . Nasıl yapılır: Karma modda hata ayıklama.

Yönetilen bir çağrı projesinden yerel DLL'de hata ayıklama da yapabilirsiniz. Daha fazla bilgi için bkz. Yönetilen ve yerel kodda hata ayıklama.