2011-05-23 19 views
8

COM işlem dışı ActiveX exe'den çağrılan bir C# .NET bileşenim var.COM'dan çağrıldığında yönetilen koddaki işlenmeyen özel durum hatalarını nasıl ayırım?

Visual Studio 2005'te, .NET bileşenimi çağıran COM exe'de çalışan hata ayıklayıcısını başlatabilirim. Kesme noktaları çalışır ancak işlenmemiş "Nesne referans seti" istisnası kırılmaz.

  • VS İstisnalar tüm CLR özel durumları kontrol ettikten
  • üzerinde ayıklama yönetilmeyen kod etkin "istisnalar yönetilen/yerli sınırlarını AppDomain çapraz veya kırın" etkin iletişim: Ben boşuna aşağıdaki denedi benim projecy
  • özürlü "Just My kodu" hata ayıklama
+1

VS İstisnası iletişim kutusundaki tüm CLR kural dışı durumlarını işaretlediğinizde, kullanıcı tarafından işlenmemiş sütun veya atılan sütunu mu kullandınız? Bu sadece bir tahmindir, ancak COM/Managed interop code istisnaları ele alacağından şüpheleniyorum, bu yüzden bunları uygun HRESULT değerlerine dönüştürebilirdi. –

+0

Kullanıcı tarafından işlenmemiş ve atılmış olarak işaretliyim. Bence haklısınız Frank - COM istisnaları ele alıyor. Bu http://blogs.msdn.com/b/oldnewthing/archive/2011/01/20/10117963.aspx dosyasını buldum ama nasıl IGlobalOptions – tukushan

cevap

3

Genelde yaptığım şey, yönetilen kodumun giriş noktasında System.Diagnostics.Debugger.Launch; numaralı telefona bir çağrı eklemektir. Program zaten aktif olarak hata ayıklama modunda değilse, hata ayıklayıcısını başlatacaktır. Hata ayıklamayı bitirdikten sonra bu satırı kaldırmanız gerektiğini unutmayın, çünkü sürümde hata ayıklayıcıyı başlatmak için bir çağrı tutmak istemezsiniz.

+0

ayarlandığından emin değilim Bu işe yaradı! Yanlış sürece bağlı olduğumu ortaya çıkardı.Yönetilen kodumu çağırmak için COM bileşeninin üst öğesine ekliyordum ve COM ActiveX exe'nin kendisine bağlı olmalıydım. – tukushan

1

yerine F5 ile programlama çalışan, sen yönetilmeyen programını çalıştırmak ve sonra ona ekleyebilir: Visual Studio 2005 için

:

  • Çalıştır (değil hata ayıklama) Aç iletişim "işleme Ekle" Ctrl+F5
  • ile Visual Studio gelen yönetilmeyen projesi: ayıklama ->ek işleme. ..
  • için Ekle tıklayın: seçimi düğmesi: seç ...
  • seçin: ayıklama şu kod türleri:
  • Kontrol Bu öğeleri: Yönetilen, Yerli
  • tıklayın Tamam
  • Mevcut Süreçler
  • tıklayın
  • takın adresinin süreci seç

Bu, yönetilmeyen bir işlemde hem yönetilen hem de yönetilmeyen hata ayıklamayı etkinleştirmelidir. Simgeleriniz varsayarak artık kesme noktaları belirleyebilir veya yönetilen koddaki ilk fırsat istisnalarını yakalayabilirsiniz.

İlgili konular