2009-10-13 17 views
5

Bir Windows hizmetinde Microsoft Log Ayrıştırıcısını kullanıyorum. Program normal bir web sayfasında çalışır, ancak kodu bir windows servisine koyduğumda çalışmaz. Breakponts'u windows servisine koydum ama kodu çalıştırdığımda program kesme noktasında durmuyor. Bu yüzden, sorun gidermekle problemi Log Parser yazılımı ve Linq'e kadar daralttım. Yani Linq veya log ayrıştırıcı yazılımı sorunu yaratıyor. Hiç bir fikrin var mı?Visual Studio 2008'de bir Windows hizmeti programında hata ayıklamanın en iyi yolu nedir

cevap

2

Programın nasıl çalıştığına bağlı olarak geçmişte bu kadar çok yol yaptım. Debugger.Launch() etrafında bir #DEBUG önişlemci yönergesi ile projeyi en iyi duruma getirdiğinizde, Debugger.Launch() çağrısının derleme içinde derlenmeyeceği şekilde en kolay şekilde yapılır.

Ayrıca, bu görevi gerçekleştirdiğimiz yöntemlerden biri de "attach" iletişim kutusu görüntülendiğinde hata ayıklayıcısına el ile eklememize olanak veren System.Windows.Forms.MessageBox.Show ("attach") ile gerçekleştirilmiştir.

Tercih etmediğim en son yöntem, hizmetinizin davranışını iletilen komut satırı parametrelerini temel alarak değiştirmektir. Temel olarak, belirli bir param devre dışı bırakıldığında ServiceBase.Run kullanarak hizmetleri başlatmamak, ancak bir sınıfı çağırmak için DEĞİL Bu, hizmetin davranış/ana işlevini içine alır.

+1

Son nokta - Ben de bunun için 'Environment.UserInteractive' kontrol edebilirsiniz inanıyorum. –

2

OnStart yönteminde hata ayıklamak ister misiniz? Eğer öyleyse, başlangıçta çalıştırma yöntemi çalışırken hata ayıklayıcısını ekleme şansına sahip olmak için System.Diagnostics.Debugger.Launch() veya System.Diagnostics.Debugger.Break() yöntemini kullanabilirsiniz, aksi halde hata ayıklayıcısını eklemekle her zaman geç kalırsınız.

2

Şişman kedinin hata ayıklayıcısını servis işlemine takma önerisi doğru geliyor. Bu hala çalışmıyorsa, Debug.WriteLine ve DebugView kullanmayı deneyin.

İlgili konular