Aracılığıyla paylaş


JavaScript Uzantılarında Yerel Hata Ayıklayıcı Nesneleri - Tasarım ve Test Konuları

Bu konuda, JavaScript uzantılarında yerel hata ayıklayıcı nesnelerini kullanmaya yönelik tasarım ve test konuları açıklanmaktadır.

Yerel hata ayıklayıcı nesneleri, hata ayıklayıcı ortamının çeşitli yapılarını ve davranışlarını temsil eder. Nesneler, hata ayıklayıcının durumunu değiştirmek için JavaScript uzantılarına geçirilebilir (veya içinde edinilebilir).

Hata Ayıklayıcı nesnesi JavaScript uzantıları hakkında bilgi için bkz. JavaScript Uzantılarında Yerel Hata Ayıklayıcı Nesneleri.

JavaScript ile çalışma hakkında genel bilgi için bkz. JavaScript Hata Ayıklayıcısı Betiği Oluşturma.

Hata Ayıklayıcı Veri Modeli Tasarımında Dikkat Edilmesi Gerekenler

Tasarım İlkeleri

Hata ayıklayıcı uzantılarınızın bulunabilir, sorgulanabilir ve betiklenebilir bilgiler sununu sağlamak için aşağıdaki ilkeleri göz önünde bulundurun.

  • Bilgiler, gerekli olan yere yakındır. Örneğin, kayıt defteri anahtarıyla ilgili bilgiler, kayıt defteri anahtarı tutamacını içeren yerel bir değişkenin parçası olarak görüntülenmelidir.
  • Bilgiler yapılandırılmıştır. Örneğin, bir kayıt defteri anahtarı hakkındaki bilgiler anahtar türü, anahtar ACL'si, anahtar adı ve değer gibi ayrı alanlarda sunulur. Bu, tek tek alanlara metin ayrıştırmadan erişilebileceği anlamına gelir.
  • Bilgiler tutarlıdır. Kayıt defteri anahtarı tanıtıcıları hakkındaki bilgiler, dosya tanıtıcıları hakkındaki bilgilere mümkün olduğunca benzer bir şekilde sunulur.

Bu ilkeleri desteklemeyen bu yaklaşımlardan kaçının.

  • Öğelerinizi tek bir düz "Mutfak lavabosuna" göre yapılandırmayın. Düzenli hiyerarşi, kullanıcıların ne aradıklarını önceden bilmeden aradıkları bilgilere göz atmasını sağlar ve bulunabilirliği destekler.
  • Klasik bir dbgeng uzantısını, ham metin çıktıları üretmeye devam ederken yalnızca modele taşıyarak dönüştürmeyin. Bu, diğer uzantılarla birleştirilebilir değildir ve LINQ ifadeleriyle sorgulanamaz. Bunun yerine verileri ayrı, sorgulanabilir alanlara bölün.

Adlandırma Yönergeleri

  • Alanların büyük harfle yazılması PascalCase olmalıdır. JQuery gibi başka bir büyük/küçük harfle yaygın olarak bilinen adlar için özel durum düşünülebilir.
  • Normalde bir C++ tanımlayıcısında kullanılamayan özel karakterler kullanmaktan kaçının. Örneğin, "Toplam Uzunluk" (boşluk içeren) veya "[boyut]" (köşeli ayraç içeren) gibi adları kullanmaktan kaçının. Bu kural, tanımlayıcıların bir parçası olarak bu karakterlere izin verilmeyen betik dillerinden daha kolay tüketim sağlar ve ayrıca komut penceresinden daha kolay tüketime olanak tanır.

Kuruluş ve Hiyerarşi Yönergeleri

  • Hata ayıklayıcı ad alanının en üst düzeyini genişletmeyin. Bunun yerine, bilgilerin en uygun olduğu yerde görüntülenmesi için hata ayıklayıcıda var olan bir düğümü genişletmeniz gerekir.
  • Kavramları yinelemeyin. Hata ayıklayıcıda zaten var olan bir kavram hakkında ek bilgiler listeleyen bir veri modeli uzantısı oluşturuyorsanız, varolan bilgileri yeni bilgilerle değiştirmeyi denemek yerine genişletin. Başka bir deyişle, modülle ilgili ayrıntıları görüntüleyen bir uzantı, yeni bir modül listesi oluşturmak yerine mevcut Module nesnesini genişletmelidir.
  • Serbest kayan yardımcı program komutları Debugger.Utility ad alanının bir parçası olmalıdır. Ayrıca uygun şekilde alt ad alanı olmalıdır (örn. Debugger.Utility.Collections.FromListEntry)

Geriye Dönük Uyumluluk ve Uyumsuzluk Yaratan Değişiklikler

Yayımlanan bir betik, buna bağlı olan diğer betiklerle uyumluluğu kesmemelidir. Örneğin, bir işlev modelde yayımlanırsa, mümkün olduğunca aynı konumda ve aynı parametrelerle kalmalıdır.

Dış Kaynakların Kullanımı Yok

  • Uzantılar dış işlemler oluşturmamalıdır. Dış işlemler hata ayıklayıcının davranışını etkileyebilir ve çeşitli uzak hata ayıklayıcı senaryolarında (örn. dbgsrv uzakları, ntsd uzakları ve "ntsd -d uzaklar") yanlış davranır.
  • Uzantılar hiçbir kullanıcı arabirimini görüntülememelidir. Kullanıcı arabirimi öğelerinin görüntülenmesi, uzaktan hata ayıklama senaryolarında yanlış davranır ve konsol hata ayıklama senaryolarını bozabilir.
  • Uzantılar, belgelenmemiş yöntemler aracılığıyla hata ayıklayıcı altyapısını veya hata ayıklayıcısı kullanıcı arabirimini işlememelidir. Bu, uyumluluk sorunlarına neden olur ve farklı kullanıcı arabirimine sahip hata ayıklayıcı istemcilerinde yanlış davranır.
  • Uzantıların hedef bilgilere yalnızca belgelenmiş hata ayıklayıcı API'leri aracılığıyla erişmesi gerekir. Win32 API'leri aracılığıyla bir hedef hakkındaki bilgilere erişmeye çalışmak, birçok uzak senaryo ve hatta güvenlik sınırları boyunca bazı yerel hata ayıklama senaryoları için başarısız olur.

Dbgeng'e Özgü Özelliklerin Kullanımı Yok

Uzantı olarak kullanılması amaçlanan betikler mümkün olduğunda dbgeng'e özgü özelliklere (örneğin, "klasik" hata ayıklayıcı uzantılarını yürütme) güvenmemelidir. Betikler, veri modelini barındıran tüm hata ayıklayıcıların üzerinde kullanılabilir olmalıdır.

Hata Ayıklayıcı Uzantılarını Test Etme

Uzantıların çok çeşitli senaryolarda çalışması beklenir. Bazı uzantılar bir senaryoya özgü olsa da (çekirdek hata ayıklama senaryosu gibi), çoğu uzantının tüm senaryolarda çalışması veya desteklenen senaryoları gösteren meta verilere sahip olması beklenmelidir.

Çekirdek Modu

  • Canlı çekirdek hata ayıklama
  • Çekirdek dökümü hata ayıklama

Kullanıcı Modu

  • Canlı kullanıcı modunda hata ayıklama
  • Kullanıcı modu dökümünün hata ayıklanması

Buna ek olarak, bu hata ayıklayıcısı kullanım senaryolarını göz önünde bulundurun

  • Çok işlemli hata ayıklama
  • Çok oturumlu hata ayıklama (örneğin, tek bir oturumda döküm + canlı kullanıcı)

Uzaktan Hata Ayıklayıcı Kullanımı

Uzak hata ayıklayıcısı kullanım senaryolarıyla düzgün işlem için test edin.

  • dbgsrv remotes
  • ntsd uzaktan bağlantılar
  • ntsd -d uzakları

Daha fazla bilgi için bkz. CDB ve NTSD Kullanarak Hata Ayıklama ve İşlem Sunucusunu Etkinleştirme.

Regresyon testi

Hata ayıklayıcının yeni sürümleri yayımlandıkçe uzantılarınızın işlevselliğini doğrulayabilen test otomasyonu kullanımını araştırın.

Ayrıca bakınız

JavaScript Uzantılarında Yerel Debugger Nesneleri

JavaScript Uzantılarında Yerel Hata Ayıklayıcı Nesneleri - Hata Ayıklayıcı Nesne Ayrıntıları.

JavaScript Hata Ayıklama Betiği

JavaScript Hata Ayıklayıcısı Örnek Betikleri