Visual Studio'da harici sınıf kütüphane projelerinde hata ayıklama nasıl yapılır?


137

Başka bir çözümde bulunan bir dış proje (B) sınıf kitaplığından derleme başvuran bir proje (A) var.

Henüz A projesinden programı çalıştırırken verimli bir şekilde B sınıf kitaplığı hata ayıklama anlamak için var Ben hata ayıklama zaman bilgi vb gibi proje B etkinleştirmek zorunda bir şey var, bu yüzden ben A'dan hata ayıklama zamanında adım olabilir?

Şimdiden teşekkürler.

Yanıtlar:


202

Just My Code'u (JMC) devre dışı bırakmayı deneyin.

  • Araçlar -> Seçenekler -> Hata Ayıklayıcı
  • "Yalnızca Kodumu Etkinleştir" seçeneğinin işaretini kaldırın

Hata ayıklayıcı, varsayılan olarak dünya görünümünü yalnızca çözümünüzde bulunan kodla sınırlamaya çalışır. Bu zaman zaman gerçekten çok acımasızdır, ancak çözümünüzde olmayan kodda (durumunuzda olduğu gibi) hata ayıklamak istediğinizde, görmek için JMC'yi devre dışı bırakmanız gerekir. Aksi takdirde, kod harici olarak ele alınır ve görüşünüzden büyük ölçüde gizlenir.

DÜZENLE

Kodunuz kırıldığında aşağıdakileri deneyin.

  • Hata ayıklama -> Windows -> Modüller
  • İlgilendiğiniz proje için DLL dosyasını bulun
  • Sağ Tıkla -> Sembolleri Yükle -> Diğer projeniz için .PDB Yolunu Seç

2
söz konusu onay kutusunun işareti zaten kaldırılmıştı. Ne olsa fark ettim, dış kütüphanenin bir yöntemine girer, ama ben bir arayüzün bir parçası olan bir yöntemi çağırmaya çalıştığınızda adım.
Konstantinos

Bir DLL'nin özelliklerine gitmeniz ve Yerel Kopyala'nın Doğru olarak ayarlandığından emin olmanız gerekebilir. Aksi takdirde, Modüller referansınız için .pdb dosyasını bulamaz.
Bryan Rayner

Sadece My Code herhangi bir fark gibi görünmüyor (etkin olsa bile harici koda atlayabilirsiniz), ancak hata ayıklayıcı modül bulmak yardımcı olur.
TheOperator

3
Bu klasörde eşleşen bir sembol dosyası bulunamadı.
Christine

1
Başvurulan bir modül için PDB dosyalarınız yoksa, ReSharper, Debug / Windows / Modules içindeki sağ tıklama menüsündeki "ReSharper Deecompiler ile Sembolleri Yükle" seçeneğini kullanarak ikili dosyaları ayrıştırmak için kullanılabilir. çok güçlü.
emilast

12

Bu beni bir süredir rahatsız etti. Genellikle yaptığım şey, hata ayıklama modunu kullanarak harici kitaplığımı yeniden oluşturmak, sonra hem .dll hem de .pdb dosyasını web sitemin bölmesine kopyalamaktır. Bu, kütüphanecilik koduna girmeme izin veriyor.


10

Yolunu al

proje A

C:\Projects\ProjectA

proje B

C:\Projects\ProjectB

ve ProjectB'nin dll'si

C:\Projects\ProjectB\bin\Debug\

İçine Hata ayıklamak için ProjectBgelen ProjectAaşağıdakileri yapın

  1. Kopya B'ın dll ile dll en .PDBetmek ProjectA' ın derleme dizinine.
  2. Şimdi hata ayıklayın ProjectA. Kod, hata ayıklama sırasında dll yöntemini veya olaylarını vb çağırmanız gereken bölüme ulaştığında F11, dll koduna adım atmak için basın .

NOT: .PDB DOSYASINA KOPYALAMA KAÇIRMAYIN


5

Biri harici dll ve biri ana uygulama için olmak üzere iki görsel stüdyo örneği çalıştırıyorum.
Harici dll proje özelliklerinde, aşağıdakileri ayarlayın:

Etkinlik Oluşturun:

  • copy /y "$(TargetDir)$(TargetName).dll" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).dll"

  • copy /y "$(TargetDir)$(TargetName).pdb" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).pdb"

Hata ayıklama:

  • Harici programı başlat: C:\<path-to-main>\bin\debug\<AppName>.exe

  • Çalışma dizini C:\<path-to-main>\bin\debug

Bu şekilde, harici dll'yi her oluşturduğumda, ana uygulamanın dizininde güncellenir. Ben dış dll projesinden hata ayıklama isabet - ana uygulama çalışır, ancak hata ayıklayıcı sadece dış dll kesme noktalarına vurur. Ana projeden hata ayıklama vurursanız, ana uygulama en son oluşturulan harici dll ile çalışır, ancak şimdi hata ayıklayıcı sadece ana projede kesme noktalarına çarptı.

Bir hata ayıklayıcının her ikisi için de işi yapacağının farkındayım, ancak ikisini bu şekilde düz tutmayı daha kolay buluyorum.


1

[Bana bu cevabı gönderen Martin Beckett'e göre]

Harici bir kütüphanede hata ayıklayabilirsiniz.

Proje ayarları sekmesinde, 'kaynak kodu' alanındaki 'visual studio dizinleri'ni arayın, openCV kaynaklarına giden yolu içerir. Sonra hata ayıklama dll her biri için .pdb dosyalarının dll ile aynı dizinde olduğundan emin olun.


0

Benzer bir sorun yaşıyordum (B) projesindeki sınır değerlerime çarpılmıyordu. Benim çözüm proje (B) yeniden inşa etmek sonra dlls güncellenmesi gerektiği gibi proje (A) hata ayıklamak oldu.

Visual studio, harici bir kütüphanede hata ayıklamanıza izin vermelidir.


0

NuGet referansları

NuProet paketleri tarafından -Project_A (project_a.dll üretir) -Project_B (project_b.dll üretir) ve Project_B referanslarını varsayalım, sonra sadece project_a.dll, project_a.pdb dosyasını Project_B / Packages klasörüne kopyalayın. Aslında / bin'e kopyalanması gerekir.

Şimdi Project_A'da hata ayıklayın. Kod, hata ayıklama sırasında dll yöntemini veya olaylarını vb çağırmanız gereken bölüme ulaştığında, dll koduna adım atmak için F11 tuşuna basın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.