Aracılığıyla paylaş


Bu Yöntemi Uzaktan Hata Ayıklama ile Birleştirme

Çekirdek hata ayıklayıcısından kullanıcı modu hata ayıklayıcısını denetlemek ve kullanıcı modu hata ayıklayıcısını aynı anda bir hata ayıklama sunucusu olarak kullanmak bazen yararlı olabilir.

Önemli

Uzaktan hata ayıklamayı kullanırken, güvenli modu etkinleştirme hakkında bilgiler de dahil olmak üzere ek önemli güvenlik konuları vardır. Bkz. uzaktan hata ayıklama sırasında güvenlik ve windows hata ayıklama araçları için güvenlik konuları.

Örneğin, kullanıcı modu simgeleriniz bir sembol sunucusunda bulunduğunda bu yapılandırma kullanışlıdır. Çekirdek hata ayıklayıcısından kullanıcı modu hata ayıklayıcısını denetlemeye yönelik standart yapılandırmada, iki hata ayıklayıcının etkileşimi eşitlemede küçük atlamalara yol açabilir ve bu atlamalar sembol sunucusu kimlik doğrulamasını engelleyebilir. Burada açıklanan daha karmaşık yapılandırma bu sorunu önleyebilir.

Not Bu senaryoyu açıklarken, hedef uygulama hata ayıklanan kullanıcı modu uygulamasını, hedef bilgisayar hedef uygulamayı ve CDB veya NTSD işlemini içeren bilgisayarı, ana bilgisayar ise çekirdek hata ayıklayıcısını içeren bilgisayarı ifade eder.

Bu tekniği kullanmak için aşağıdakileri yapmanız gerekir:

  1. İstenen aktarım seçeneklerini belirterek -ddefer ve -server komut satırı seçenekleriyle ntsd veya CDB'yi hedef bilgisayarda başlatın. -server seçeneği, komut satırındaki ilk parametre olmalıdır.

    Örneğin, aşağıdaki söz dizimini kullanarak çalışan bir işleme ekleyebilirsiniz.

    ntsd -server ServerTransport -ddefer [-y UserSymbolPath] -p PID 
    

    Alternatif olarak, aşağıdaki söz dizimini kullanarak hedef olarak yeni bir işlem başlatabilirsiniz.

    ntsd -server ServerTransport -ddefer [-y UserSymbolPath] ApplicationName 
    

    Bunu bir otopsi hata ayıklayıcısı olarak yüklüyorsanız aşağıdaki söz dizimini kullanırsınız. -server parametresini içeren bir postmortem hata ayıklayıcı yüklemek için kayıt defterini el ile düzenlemeniz gerektiğini unutmayın; Ayrıntılar için bkz. Postmortem Debugging'i etkinleştirme.

    ntsd -server ServerTransport -ddefer [-y UserSymbolPath] 
    

    Kullanılabilir aktarım seçenekleri hakkında bilgi için bkz. Hata Ayıklama Sunucusunu Etkinleştirme.

  2. Hedef bilgisayarda hata ayıklayacakmış gibi WinDbg veya KD'yi ev sahibi bilgisayarda başlatın, ancak gerçekten hedef bilgisayara bağlanmayın. WinDbg'yi kullanmak için aşağıdaki söz dizimini kullanın.

    windbg [-y KernelSymbolPath] [-k ConnectionOptions] 
    

    Bu adım hakkında daha fazla bilgi için bkz. WinDbg Kullanarak Canlı Kernel-Mode Hata Ayıklama (Klasik)

    .

  3. WinDbg veya CDB'yi, sunucuyu başlatmak için kullanılan aktarım seçenekleriyle bir hata ayıklama istemcisi olarak başlatın. Bu hata ayıklama istemcisi konak bilgisayarda veya üçüncü bir bilgisayarda çalıştırılabilir.

    cdb -remote ClientTransport 
    

    Bu adım hakkında daha fazla bilgi için bkz. Hata Ayıklama İstemcisini Etkinleştirme.

  4. Hata ayıklayıcıları çalıştırdıktan ve çekirdek hata ayıklayıcısında Input> istemi görüntülendiğinde, hata ayıklayıcıları duraklatmak ve hedef bilgisayarın birkaç saniye boyunca çalışmasına izin vermek için .sleep (Hata Ayıklayıcıyı Duraklat) komutunu kullanın. Bu, hedef bilgisayara, kullanıcı modu uzak sunucusu ile uzak istemci arasındaki bağlantıyı kurarak uzak aktarım protokollerini işleme süresi verir.

Kullanıcı modu hata ayıklayıcısı olarak CDB kullanıyorsanız, hata ayıklama devam ederken CDB ile ilişkili Komut İstemi penceresi kilitli ve kullanılamaz durumda kalır. NTSD kullanıyorsanız, NTSD'nin hedef bilgisayarda kendisiyle ilişkilendirilmiş bir işlem kimliği olmasına rağmen ek pencere oluşturulmaz.

Bu birleşim senaryosunda Mod değiştirme konusunda açıklanan dört mod ve bunlar arasında geçiş yapma yöntemleri aşağıdaki farklarla birlikte geçerlidir:

  • İki farklı kullanıcı modu hata ayıklama modu vardır. Hedef bilgisayar çalışırken, hata ayıklama sunucusu diğer herhangi bir uzaktan hata ayıklama oturumunda olduğu gibi hata ayıklama istemcisi tarafından denetleniyor; bu, uzaktan denetimli kullanıcı modu hata ayıklamaolarak adlandırılır. Çekirdek modu hata ayıklayıcısına hedef bilgisayarda erişim sağlandığında ve Input> istemi gösterildiğinde, kullanıcı modu hata ayıklayıcısı çekirdek hata ayıklayıcısı tarafından denetlenirse bu, çekirdek denetimli kullanıcı modu hata ayıklama olarak adlandırılır.

  • Bu iki mod hiçbir zaman aynı anda kullanılamaz. Çekirdek hata ayıklayıcısı hedef bilgisayarda kırıldığında, kullanıcı modu hata ayıklayıcısı etkin olsa bile, hedef bilgisayar uzaktan aktarım protokollerini işleyemez ve bu nedenle kullanıcı modu hata ayıklayıcısı bu bağlantı üzerinden uzak giriş alamaz.

  • Kullanıcı modu simgeleriniz bir sembol sunucusunda bulunuyorsa, uzaktan denetimli kullanıcı modu hata ayıklama modundayken sembol erişimi gerektiren tüm hata ayıklayıcı komutları verilmelidir.

  • Çekirdek denetimli kullanıcı modu hata ayıklamasından uzaktan denetimli kullanıcı modu hata ayıklamasına geçmek için .sleep (Hata Ayıklayıcıyı Duraklat) komutunu kullanın. Kullanıcı modu hata ayıklayıcısı uyku komutundan uyandığında, uzaktan denetimli kullanıcı modu hata ayıklama modunda olur.

  • Uzaktan denetimli kullanıcı modu hata ayıklamasından çekirdek modu hata ayıklamasına geçmek için Input> isteminden herhangi bir komut girin. Bu istem görünmüyorsa, çekirdek modu hata ayıklamasına geçin ve ardından isteminde kd> komutunu kullanın.

dahili olarak, -ddefer ile başlayan kullanıcı modu hata ayıklayıcısı, hata ayıklama istemcisinden girişe ilk önceliği ve çekirdek hata ayıklayıcısından girişe ikinci önceliği verir. Ancak, çekirdek hata ayıklayıcısı hedef bilgisayara müdahale ettiğinde uzak bağlantı kullanılamadığından, eşzamanlı girişler arasında hiçbir zaman çakışma olamaz.