2010-08-25 13 views
16

Üçüncü taraf sistemlerle çalışırken, özellikle sağlayıcıları, denetleyicileri, bileşenleri ve benzerlerini dinamik olarak yükleyen çok yapılandırılabilir sistemlerde, bazen yalnızca belirli bir nesne veya sınıfın ne zaman olduğunu bilmek istiyorum erişildi. Normalde, kaynağımdaki herhangi bir potansiyel satırın üzerine bir kesme noktası koyardım (bir sıkıntı, ama işe yarıyor), ancak kaynak mevcut değilse:Bir sınıf için her erişimde bir kesme noktası nasıl ayarlayabilirim

Visual Studio 2010 Ultimate'a herhangi bir ve her erişimde kesinti yapmasını nasıl sağlayabilirim? belirli bir sınıfa

Not: bildiğim kadarıyla benim deneyim gider gibi, bu genellikle mümkün değildir, ama sen Fonksiyon de Debug> Yeni Breakpoint> Kesme Noktasını tıklayabilirsiniz

cevap

7

doğruladı görmek istiyorum. Ctrl-B sizi doğrudan oraya getirir. Belirli bir işlevin kırılmasına izin verir. Hata ayıklama sırasında, Kesme Noktası penceresinde, yöntemin bulunup bulunmadığının (kırmızı yuvarlak simge) ya da vurulup vurulmayacağını (daire simgesiyle beyaz, devre dışı bırakılmış kesme noktası olarak), normal kesme noktalarında olduğu gibi görebilirsiniz. Bkz.

+1

Teşekkür (public yok beyanları) için kesme noktaları eklemek isteyebilirsiniz, bu, gerçekten, tek yöntem için kullanışlı Yüklendi. Fakat bu, bir sınıfa her erişimde bana yardımcı olmaz, ya da 'ctor' ya da 'cctor' için bu şekilde bir kırılma noktası oluşturabilir (ama belki de daha fazlasını denemeliyim). – Abel

+2

@Abel: "Namespace.ClassName.ClassName" öğesini deneyin. – SLaks

+0

Tüm türler ve yöntemler için işe yaramayabilirim, ancak Reflector Professional'ı satın almaya karar verdim (ücretsiz sürümü, çağlar için kullandı) ve yüklenen veya başvurulan derlemenin yansıtılan kodundaki hata ayıklamalarını ve hata ayıklamalarını ayarlamamı sağlar . – Abel

1

Bir kerede (VS2008 öncesi), tüm (ctrl-a) ve ardından set kesme noktası (F9) öğesini seçerek bir dosyadaki her satırda bir kesme noktası ayarlayabilirsiniz.

Her yöntemin girişine yalnızca bir tane ayarlamak için, doğru bir şekilde hatırlarsam bir makro alır. http://www.wintellect.com/CS/blogs/jrobbins/

[DÜZENLEME: ctrl-A, F9 2010 veya 2008 yılında çalışmaz, bu nedenle bir önceki sürüm olmalıdır ben bu hatırlıyorum]

+0

F9, birden çok satıra seçildiğinde yalnızca geçerli satırda bir kesme noktası belirler. Ama bir macr yapmak için öneriniz iyidir. – Abel

+0

@Abel: .. ve seçili kodda bulunan diğer kesme noktalarını temizler. Bu, bazı eski versiyonlardan beri bir değişiklik (2008'de işe yaramıyor, belki 2005'i hatırlıyorum). Cevabı güncelleyeceğim. – Richard

+0

Teşekkürler. Ve ben 2010'u kullanıyorum ve bunu daha önceki sürümlerden hatırlayamıyorum, ama bir daha, bir sonraki baskı çıkmadan önce keşfedemediğiniz özellikler her zaman var. – Abel

1

Muhtemel bir kaynak olarak John Robbins'in bloguna göz atın Sadece bunun için bir Visual Studio 2010 eklentisi yaptı. Bu kontrol edin: http://weblogs.asp.net/uruit/archive/2011/08/04/visual-studio-2010-addin-setting-a-class-breakpoint.aspx

Güncelleme Bu proje artık Github yaşıyor

. Katkıda bulunmaktan çekinmeyin.

+0

İlgi çekici, bahşiş için teşekkürler, bir göz atacağım! – Abel

+0

Benim için çalışmıyor. Eklenti Yöneticisi "BreakAll" listelerini listeler, ancak hata ayıklama menüsünde yeni bir menü öğesi yoktur. Ctrl + D, Z (ekran görüntüsünde gösterildiği gibi) da çalışmıyor. – Qwertie

+0

@Qwertie Projenin en son sürümü için Github rötuşunu kontrol edin. Ayrıca kontrol edebileceğiniz bilinen sorunların bir listesi de vardır. – alf

10

en şık değil, ancak Ctrl + Fpublic o zaman F9 [set kesme noktası] ardından F3 arasında Spam eğer içine her kamu giriş noktasında bir kesme noktası ayarlamak için [sonraki bulmak] sınıf. o değil mi bile

Ayrıca protected ve internal giriş noktalarında ve herhangi açık arabirim uygulamaları

+0

Nice trick :) @carlwalsh – Divya

İlgili konular