Bu adım adım makalede, WinDbg hata ayıklayıcısı (windbg.exe)
kullanılarak bir Windows hizmetinde nasıl hata ayıklanacağı açıklanır. Bir
Windows hizmetinde hata ayıklamak için, hizmet başlatıldıktan sonra WinDbg hata
ayıklayıcısını, hizmeti barındıran işleme ekleyebilir veya hizmeti başlatma ile
ilgili sorunları gidermek amacıyla hizmeti WinDbg hata ayıklayıcısı ekli olarak
başlatılacak şekilde yapılandırabilirsiniz. Bu makalede her iki yöntem de
açıklanır.
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.
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:
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:
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:
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:
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.
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.
Bu makaleyi kullanmak için ne kadar kişisel çaba harcadınız?
Çok az
Az
Orta
Fazla
Çok fazla
Bu bilgiyi geliştirmemiz için nedenleri ve bu konuda neler yapabileceğimizi paylaşın
Teşekkürler! Görüşleriniz, destek içeriğimizi geliştirmemize yardımcı olmak için kullanılmaktadır. Diğer yardım seçenekleri için, lütfen Yardım ve Destek Giriş Sayfasını ziyaret edin.