Hata Ayıklama

Lefkoşalı

Dost Üyeler
Katılım
29 Nis 2009
Mesajlar
57
Tepkime puanı
0
Puanları
0
aşağıdaki konularda bilgi sahibi olduğunuz varsayılmaktadır:

Windows Hizmetleri
WinDbg Hata Ayıklayıcısı

Hizmet başlatıldıktan sonra WinDbg hata ayıklayıcısını hizmete ekleme
Bu yöntem, hata ayıklayıcısını bir işleme ekleyip işlemde hata ayıklamak için kullanabileceğiniz yönteme benzemektedir.
Hata ayıklamak istediğiniz hizmeti barındıran işlemin işlem kimliğini kullanma
Hata ayıklamak istediğiniz hizmeti barındıran işlemin işlem kimliğini (PID) belirlemek için, aşağıdaki yöntemlerden birini kullanın.
Yöntem 1: Görev Yöneticisi'ni Kullanma
Görev çubuğunu sağ tıklatın ve sonra da Görev Yöneticisi'ni tıklatın. Windows Görev Yöneticisi iletişim kutusu görüntülenir.
Windows Görev Yöneticisi iletişim kutusundaki İşlemler sekmesini tıklatın.
Yansıma Adı altında, hata ayıklamak istediğiniz hizmeti barındıran işlemin görüntü adını tıklatın. Bu işlem için, ilgili PID alanının değeriyle belirtilen işlem kimliğini not alın.
Yöntem 2: Görev Listesi Yardımcı Programını (tlist.exe) Kullanma
Başlat'ı ve ardından Çalıştır'ı tıklatın. Çalıştır iletişim kutusu görüntülenir.
Aç kutusuna cmd yazın ve Tamam'ı tıklatın.
Komut isteminde, dizin yolunu bilgisayarınızdaki tlist.exe dosyasının konumunu gösterecek şekilde değiştirin.

Not Tlist.exe dosyası, genellikle şu dizinde bulunur: C:\Program Files\Debugging Tools for Windows
Komut istemine tlist yazıp, bilgisayarınızda çalışmakta olan tüm işlemlerin görüntü adlarını ve işlem kimliklerini listeleyin.

Not Hata ayıklamak istediğiniz hizmeti barındıran işlemin işlem kimliğini not alın.
Komut isteminde, dizin yolunu bilgisayarınızdaki windbg.exe dosyasının konumunu gösterecek şekilde değiştirin.

Not Komut istemi açık değilse, Yöntem 1'deki a ve b adımlarını izleyin. Windbg.exe dosyası genellikle şu dizinde bulunur: C:\Program Files\Debugging Tools for Windows.
Komut istemine windbg –p İşlemKimliği yazıp, WinDbg hata ayıklayıcısını, hata ayıklamak istediğiniz hizmeti barındıran işleme ekleyin.

Not İşlemKimliği, hata ayıklamak istediğiniz hizmeti barındıran işlemin işlem kimliği için bir yer tutucudur.
Hata ayıklamak istediğiniz hizmeti barındıran işlemin görüntü adını kullanma
Bu yöntemi, çalıştırmak istediğiniz hizmeti barındıran işlemin yalnızca tek bir çalışan örneği varsa kullanabilirsiniz. Bunu yapmak için şu adımları izleyin:
Başlat'ı ve ardından Çalıştır'ı tıklatın. Çalıştır iletişim kutusu görüntülenir.
Aç kutusuna, cmd yazın ve Tamam'ı tıklatıp komut istemini açın.
Komut isteminde, dizin yolunu bilgisayarınızdaki windbg.exe dosyasının konumunu gösterecek şekilde değiştirin.

Not Windbg.exe dosyası, genellikle şu dizinde bulunur: C:\Program Files\Debugging Tools for Windows.
Komut istemine windbg –pn GörüntüAdı yazıp, WinDbg hata ayıklayıcısını, hata ayıklamak istediğiniz hizmeti barındıran işleme ekleyin.

Not Görüntü adı, hata ayıklamak istediğiniz hizmeti barındıran işlemin görüntü adı için bir yer tutucudur. "-pn" komut satırı seçeneği, GörüntüAdı komut satırı bağımsız değişkeninin, bir işlemin görüntü adı olduğunu belirtir.
WinDbg hata ayıklayıcısını başlatma ve hata ayıklamak istediğiniz hizmeti barındıran işleme ekleme
Windows Gezgini'ni başlatın.
Bilgisayarınızdaki windbg.exe dosyasını bulun.

Not Windbg.exe dosyası, genellikle şu dizinde bulunur: C:\Program Files\Debugging Tools for Windows
Windbg.exe dosyasını çalıştırıp WinDbg hata ayıklayıcısını başlatın.
File (Dosya) menüsünde Attach to a Process'i (İşleme Ekle) tıklatıp Attach to Process iletişim kutusunu görüntüleyin.
Hata ayıklamak istediğiniz hizmeti barındıran işleme karşılık gelen düğümü tıklatıp seçin ve sonra da Tamam'ı tıklatın.
Görüntülenen iletişim kutusunda, Evet'i tıklatıp temel çalışma alanı bilgilerini kaydedin. Hizmetinizin derlemesi kaldırılmış kodunda artık hata ayıklayabildiğinize dikkat edin.

Hizmeti WinDbg hata ayıklayıcısı ekli olarak başlatılacak şekilde yapılandırma
Bu yöntemi, hizmeti başlatma ile ilgili sorunları gidermek istiyorsanız hizmetlerde hata ayıklamak için kullanabilirsiniz.
"Görüntü Dosyası Yürütme" seçeneklerini yapılandırın. Bunu yapmak için aşağıdaki yöntemlerden birini kullanın:
Yöntem 1: Genel Bayrak Düzenleyicisi'ni (gflags.exe) Kullanma
Windows Gezgini'ni başlatın.
Bilgisayarınızdaki gflags.exe dosyasını bulun.

Not Gflags.exe dosyası, genellikle şu dizinde bulunur: C:\Program Files\Debugging Tools for Windows.
Gflags.exe dosyasını çalıştırıp Genel Bayrak Düzenleyicisi'ni başlatın.
Image File Name (Görüntü Dosyası Adı) metin kutusuna, hata ayıklamak istediğiniz hizmeti barındıran işlemin görüntü adını yazın. Örneğin, MyService.exe görüntü adını kullanan bir işlem tarafından barındırılan bir hizmette hata ayıklamak istiyorsanız, MyService.exe yazın.
Destination (Hedef) altında, Image File Options (Görüntü Adı Seçenekleri) seçeneğini tıklatıp işaretleyin.
Image Debugger Options (Görüntü Hata Ayıklayıcısı Seçenekleri) altında, Debugger (Hata Ayıklayıcısı) onay kutusunu tıklatıp seçin.
Debugger metin kutusuna, kullanmak istediğiniz hata ayıklayıcısının tam yolunu yazın. Örneğin, bir hizmette hata ayıklamak için WinDbg hata ayıklayıcısını kullanmak istiyorsanız, aşağıdakine benzer bir tam yol yazabilirsiniz: C:\Program Files\Debugging Tools for Windows\windbg.exe
Apply'ı (Uygula) ve OK'i (Tamam) tıklatın, sonra da Genel Bayrak Düzenleyicisi'nden çıkın.
Yöntem 2: Kayıt Defteri Düzenleyicisi'ni Kullanma
Başlat'ı ve ardından Çalıştır'ı tıklatın. Çalıştır iletişim kutusu görüntülenir.
Aç kutusuna regedit yazın ve Tamam'ı tıklatıp Kayıt Defteri Düzenleyicisi'ni başlatın.
Uyarı Kayıt Defteri Düzenleyicisi'ni veya başka bir yöntemi kullanarak kayıt defterini hatalı olarak değiştirirseniz önemli sorunlar oluşabilir. Bu sorunlar, işletim sisteminizi yeniden yüklemenizi gerektirebilir. Microsoft bu sorunların çözülebileceğini garanti etmemektedir. Kayıt defterini değiştirmek kendi sorumluluğunuzdadır.

Kayıt Defteri Düzenleyicisi'nde, aşağıdaki kayıt defteri alt anahtarını bulup sağ tıklatın:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
Yeni'nin üzerine gelin ve Anahtar'ı tıklatın. Kayıt Defteri Düzenleyicisi'nin sol bölmesinde, Yeni Anahtar #1 (yeni bir kayıt defteri alt anahtarının adı) öğesinin düzenleme için seçili olduğuna dikkat edin.
Yeni anahtar #1 yerine, GörüntüAdı yazın ve ENTER tuşuna basın

Not Görüntü adı, hata ayıklamak istediğiniz hizmeti barındıran işlemin görüntü adı için bir yer tutucudur. Örneğin, MyService.exe görüntü adını kullanan bir işlem tarafından barındırılan bir hizmette hata ayıklamak istiyorsanız, MyService.exe yazın.
Adım e'de oluşturduğunuz kayıt defteri alt anahtarını sağ tıklatın.
Yeni'nin üzerine gelin ve sonra Dize Değeri'ni tıklatın. Kayıt Defteri Düzenleyicisi'nin sağ bölmesinde, yeni kayıt defteri girdisinin adı olan Yeni Değer #1 öğesinin düzenleme için seçili olduğuna dikkat edin.
Yeni Değer #1 yerine Debugger yazın ve sonra da ENTER tuşuna basın.
Adım h'de oluşturduğunuz Debugger kayıt defteri girdisini sağ tıklatın ve ardından Değiştir'i tıklatın. Dize Düzenle iletişim kutusu görüntülenir.
Değer verisi metin kutusuna HataAyıklayıcısıYolu yazın ve Tamam'ı tıklatın.

Not HataAyıklayıcısıYolu, kullanmak istediğiniz hata ayıklayıcısının tam yolu için bir yer tutucudur. Örneğin, bir hizmette hata ayıklamak için WinDbg hata ayıklayıcısını kullanmak istiyorsanız, şuna benzer bir tam yolu yazabilirsiniz:
C:\Progra~1\Debugg~1\windbg.exe
Hata ayıklayıcısı penceresinin masaüstünüzde görünmesini sağlamak ve hata ayıklayıcısıyla etkileşim kurmak için, hizmetinizi etkileşimli yapın. Hizmetinizi etkileşimli yapmazsanız, hata ayıklayıcısı başlatılmasına karşın onu göremez ve komut yayımlayamazsınız. Hizmetinizi etkileşimli yapmak için aşağıdaki yöntemlerden birini kullanın:
Yöntem 1: Hizmetler konsolunu kullanma
Başlat'ı tıklatın ve Programlar'ın üzerine gidin.
Programlar menüsünde, Yönetimsel Araçlar'ın üzerine gidin ve Hizmetler'i tıklatın. Hizmetler konsolu görüntülenir.
Hizmetler konsolunun sağ bölmesinde, HizmetAdı'nı sağ tıklatın ve ardından Özellikler'i tıklatın.

Not HizmetAdı, hata ayıklamak istediğiniz hizmetin adı için bir yer tutucudur.
Oturum Aç sekmesinde, Yerel Sistem hesabı altında Hizmetin masaüstü ile etkileşimine izin ver onay kutusunu tıklatıp seçin ve sonra da Tamam'ı tıklatın.
Yöntem 2: Kayıt Defteri Düzenleyicisi'ni Kullanma
Kayıt Defteri Düzenleyicisi'nde, aşağıdaki kayıt defteri alt anahtarını bulun ve tıklatın:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\ServiceName
NotHizmetAdı yerine, hata ayıklamak istediğiniz hizmetin adını yazın. Örneğin, MyService adlı bir hizmette hata ayıklamak istiyorsanız, aşağıdaki kayıt defteri anahtarını bulun ve tıklatın:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\MyService
Kayıt Defteri Düzenleyicisi'nin sağ bölmesindeki Ad alanı altında, Tür öğesini sağ tıklatın ve sonra da Değiştir'i tıklatın. DWORD Değerini Düzenle iletişim kutusu görüntülenir.
Değer verisi metin kutusundaki metin yerine, iki işlenen olarak geçerli metnin ikili değeri ile 0x00000100 ikili değerinin kullanıldığı ikili OR işleminin sonucunu yazın. 0x00000100 ikili değeri, bilgisayarınızdaki WinNT.h üstbilgi dosyasında tanımlı olan SERVICE_INTERACTIVE_PROCESS sabit değerine karşılık gelir. Bu sabit değer, bir hizmetin normalde etkileşimli olduğunu belirtir.
Bir hizmet başlatıldığında, ne kadar süre içinde başlatılması gerektiğini (hizmetin zaman aşımı süresini) belirtmek üzere Hizmet Denetim Yöneticisi ile iletişim kurar. Hizmet Denetim Yöneticisi, bu zaman aşımı süresi boyunca hizmetten bir "hizmet başlatıldı" bildirimi almazsa, hizmeti barındıran işlemi sonlandırır. Bu zaman aşımı süresi genelde 30 saniyeden daha kısadır. Zaman aşımı süresini ayarlamazsanız, hata ayıklamaya çalıştığınız sırada Hizmet Denetim Yöneticisi, işlemi ve ekli hata ayıklayıcısını sonlandırır. Zaman aşımı süresini ayarlamak için şu adımları izleyin:
Kayıt Defteri Düzenleyicisi'nde, aşağıdaki kayıt defteri alt anahtarını bulup sağ tıklatın:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l
Yeni'nin üzerine gidin ve sonra DWORD Değeri'ni tıklatın. Kayıt Defteri Düzenleyicisi'nin sağ bölmesinde, Yeni Değer #1 öğesinin (yeni kayıt defteri girdisinin adı) düzenleme için seçili olduğuna dikkat edin.
Yeni Değer #1 yerine, ServicesPipeTimeout yazın ve ENTER tuşuna basın
Adım c'de oluşturduğunuz ServicesPipeTimeout kayıt defteri girdisini sağ tıklatın ve ardından Değiştir'i tıklatın. DWORD Değerini Düzenle iletişim kutusu görüntülenir.
Değer verisi metin kutusuna ZamanAşımıSüresi yazın ve Tamam'ı tıklatın.

Not ZamanAşımıSüresi, hizmet için ayarlamak istediğiniz zaman aşımı süresi (milisaniye olarak) değeri için bir yer tutucudur. Örneğin, zaman aşımı süresini 24 saat (86400000 milisaniye) olarak ayarlamak istiyorsanız 86400000 yazın.
Bilgisayarı yeniden başlatın. Hizmet Denetim Yöneticisi'nin bu değişikliği uygulaması için bilgisayarı yeniden başlatmalısınız.
Windows hizmetinizi başlatın. Bunu yapmak için şu adımları izleyin:
Başlat'ı tıklatın ve Programlar'ın üzerine gidin.
Programlar menüsünde, Yönetimsel Araçlar'ın üzerine gidin ve Hizmetler'i tıklatın. Hizmetler konsolu görüntülenir.
Hizmetler konsolunun sağ bölmesinde, HizmetAdı'nı sağ tıklatın ve ardından Başlat'ı tıklatın.

Not HizmetAdı, hata ayıklamak istediğiniz hizmetin adı için bir yer tutucudur.

Sorun giderme
Bir hizmette ağ üzerinden hata ayıklamaya çalışmadan önce, hizmetin kullandığı simgelere ve kaynak dosyalarına, hizmetin çalışacağı bilgisayardan erişilebildiğini doğrulayın. Bunu yapmak için aşağıdaki yöntemlerden birini kullanın:
Bilgisayarınızda hizmetin kullandığı simgeler ve kaynak dosyalarını içeren klasör için Everyone (Herkes) grubuna en azından okuma erişim izinleri verin.
Hizmetin kullandığı bu simgeleri ve kaynak dosyalarını, hizmetin çalıştırılacağı bilgisayara kopyalayın.
 
Üst