Aracılığıyla paylaş


WinDbg Classic Kullanarak User-Mode İşlemde Hata Ayıklama

Çalışan bir işleme eklemek veya yeni bir işlem oluşturup eklemek için WinDbg'yi kullanabilirsiniz.

Çalışmakta Olan Bir İşleme Bağlanma

Çalışan bir işleme eklemek için WinDbg'yi kullanmanın birkaç yolu vardır. Seçtiğiniz yöntemden bağımsız olarak, işlem kimliğine veya işlem adına ihtiyacınız olacaktır. İşlem kimliği, işletim sistemi tarafından atanan bir sayıdır. İşlem kimliğini ve işlem adını belirleme hakkında daha fazla bilgi için bkz. İşlem Kimliğini Bulma.

WinDbg Menüsü

WinDbg uyku modundayken, Dosya menüsünden bir İşleme Ekle'yi seçerek veya F6 tuşuna basarak çalışan bir işleme ekleyebilirsiniz.

İşleme Ekle iletişim kutusunda, hata ayıklamak istediğiniz işlemi seçin ve Tamam'ı seçin.

Komut İstemi

Komut İstemi penceresinde, WinDbg'yi başlattığınızda çalışan bir işleme ekleyebilirsiniz. Aşağıdaki komutlardan birini kullanın:

  • windbg -pProcessID
  • windbg -pnProcessName

burada ProcessID çalışan bir işlemin İşlem Kimliği veya ProcessName, çalışan bir işlemin adıdır.

Komut satırı söz dizimi hakkında daha fazla bilgi için bkz. WinDbg Command-Line Seçenekleri.

Hata Ayıklayıcısı Komut Penceresi

WinDbg zaten bir veya daha fazla işlemde hata ayıklarsa, Hata Ayıklayıcı Komut penceresindeki.attach (İşleme Ekle) komutunu kullanarak çalışan bir işleme ekleyebilirsiniz.

Hata ayıklayıcı, iş parçacıklarının bazıları dondurulmuş veya askıya alınmış değilse, her zaman aynı anda birden çok hedef işlemi başlatır.

.attach komutu başarılı olursa, hata ayıklayıcısı bir sonraki yürütme komutunda belirtilen işleme eklenir. Bu komutu art arda birkaç kez kullanıyorsanız, hata ayıklayıcı tarafından yürütme, bu komutu kullandığınız kadar talep edilmelidir.

Çalışan bir işleme girişim yapmadan bağlanma

Çalışan bir işlemin hatalarını ayıklamak ve yürütülmesine mümkün olan en az müdahaleyle karışmak istiyorsanız, işlemenoninvaziv bir şekilde hata ayıklamanız gerekir.

WinDbg Menüsü

WinDbg uyku modundayken, Dosya menüsünden bir İşleme Ekle'yi seçerek veya F6 tuşuna basarak çalışan bir işlemin hatalarını ayıklayabilirsiniz.

İşleme Ekleme iletişim kutusu görüntülendiğinde, Girişimci Olmayan onay kutusunu seçin. Ardından, istediğiniz işlem kimliğini ve adını içeren satırı seçin. (İşlem Kimliği kutusuna işlem kimliğini de girebilirsiniz.) Son olarak Tamam'ı seçin.

Komut İstemi

Komut İstemi penceresinde, WinDbg'yi başlattığınızda çalışan bir işleme müdahale etmeden bağlanabilirsiniz. Aşağıdaki komutlardan birini kullanın:

  • windbg -pv -pProcessID
  • windbg -pv -pnProcessName

Diğer birçok yararlı komut satırı seçeneği vardır. Komut satırı söz dizimi hakkında daha fazla bilgi için bkz. WinDbg Command-Line Seçenekleri.

Hata Ayıklayıcısı Komut Penceresi

Hata ayıklayıcı zaten etkinse, Hata Ayıklayıcı Komut penceresindeki.attach -v (İşleme Ekle) komutunu kullanarak çalışan bir işlemde müdahale etmeden hata ayıklama yapabilirsiniz.

Hata ayıklayıcı zaten bir veya daha fazla işlemde invaziv olarak hata ayıklarsa .attach komutunu kullanabilirsiniz. WinDbg uykudaysa bu komutu kullanamazsınız.

.attach -v komutu başarılı olursa, hata ayıklayıcısı bir sonraki yürütme komutu yayınlandığında belirtilen işlemde hata ayıklar. Girişimsiz hata ayıklama sırasında çalıştırmaya izin verilmediğinden, hata ayıklayıcı aynı anda birden fazla süreç üzerinde girişimsiz hata ayıklama yapamaz. Bu kısıtlama ayrıca .attach -v komutunun kullanılması, mevcut bir invaziv hata ayıklama oturumunu daha az kullanışlı hale getirebileceği anlamına gelir.

Yeni İşlem Oluşturma

WinDbg, kullanıcı modu uygulamasını başlatabilir ve uygulamada hata ayıklayabilir. Uygulama adına göre belirtilir. Hata ayıklayıcı, alt işlemlere (özgün hedef işlemin başlattığı ek işlemler) otomatik olarak bağlanabilir.

Hata ayıklayıcının oluşturduğu işlemler (oluşturulan işlemler olarak da bilinir) hata ayıklayıcının oluşturmadığı işlemlerden biraz farklı davranır.

Standart yığın API'sini kullanmak yerine, hata ayıklayıcının oluşturduğu işlemler özel bir hata ayıklama yığını kullanır. _NO_DEBUG_HEAP ortam değişkenini veya -hd komut satırı seçeneğini kullanarak, oluşturulan bir işlemi hata ayıklama yığını yerine standart yığını kullanmaya zorlayabilirsiniz.

Ayrıca, hedef uygulama hata ayıklayıcının alt işlemi olduğundan, hata ayıklayıcının izinlerini devralır. Bu izin, hedef uygulamanın aksi takdirde gerçekleştiremediği belirli eylemleri gerçekleştirmesini sağlayabilir. Örneğin, hedef uygulama korumalı işlemleri etkileyebilir.

WinDbg Menüsü

WinDbg uyku modundayken, Dosya menüsünden Yürütülebilir Dosyayı Aç'ı seçerek veya CTRL+E tuşlarına basarak yeni bir işlem oluşturabilirsiniz.

Yürütülebilir Dosyayı Aç iletişim kutusu görüntülendiğinde, Dosya adı kutusuna yürütülebilir dosyanın tam yolunu girin veya istediğiniz yolu ve dosya adını seçmek için Konum listesini kullanın.

Kullanıcı modu uygulamasıyla herhangi bir komut satırı parametresi kullanmak isterseniz, bunları Bağımsız Değişkenler kutusuna girin. Başlangıç dizinini varsayılan dizinden değiştirmek istiyorsanız, Başlangıç dizini kutusuna dizin yolunu girin. WinDbg'nin alt işlemlere bağlanmasını istiyorsanız Alt işlemleri de hata ayıkla onay kutusunu seçin.

Seçimlerinizi yaptıktan sonra Aç'ı seçin.

Komut İstemi

Komut İstemi penceresinde WinDbg'yi başlattığınızda yeni bir işlem oluşturabilirsiniz. Aşağıdaki komutu kullanın:

windbg [-o]ProgramName[Arguments]

-o seçeneği, hata ayıklayıcının alt işlemlere bağlanmasına neden olur. Diğer birçok yararlı komut satırı seçeneği vardır. Komut satırı söz dizimi hakkında daha fazla bilgi için bkz. WinDbg Command-Line Seçenekleri.

Hata Ayıklama Komut Penceresi

WinDbg zaten bir veya daha fazla işlemde hata ayıklarsa, Hata Ayıklayıcı Komut penceresindeki.create (İşlem Oluştur) komutunu kullanarak yeni bir işlem oluşturabilirsiniz.

Hata ayıklayıcı, iş parçacıklarının bazıları dondurulmuş veya askıya alınmış olmadıkça her zaman eşzamanlı olarak birden çok hedef işlemi başlatır.

.create komutu başarılı olursa, hata ayıklayıcısı bir sonraki yürütme komutu yayınlandığında belirtilen işlemi oluşturur. Bu komutu art arda birkaç kez kullanıyorsanız, hata ayıklayıcı tarafından yürütme, bu komutu kullandığınız kadar talep edilmelidir.

.createönce .createdir (Oluşturulan İşlem Dizinini Ayarla) komutunu kullanarak uygulamanın başlangıç dizinini denetleyebilirsiniz. Hedef uygulamanın hata ayıklayıcının tanıtıcılarını devralıp devralmadığını denetlemek için .createdir -I komutunu veya -noinh komut satırı seçeneğini kullanabilirsiniz.

.childdbg (Alt İşlemlerde Hata Ayıkla) komutunu kullanarak alt işlemlerin hata ayıklamasını etkinleştirebilir veya devre dışı bırakabilirsiniz.

Bir İşleme Yeniden Bağlanma

Hata ayıklayıcısı yanıt vermeyi durdurursa veya donarsa, hedef işleme yeni bir hata ayıklayıcı ekleyebilirsiniz. Bu durumda hata ayıklayıcı ekleme hakkında daha fazla bilgi için bkz. Hedef Uygulamaya Yeniden Bağlanma.