İki laboratuvar PC'si arasında uzaktan Windows hata ayıklayıcı kurulumu
03
Laboratuvar kurulumu
İki laboratuvar makinesini hazırlayın
Uzaktan bir Windows hata ayıklayıcı oturumu, bir makinedeki hata ayıklayıcıyı ağ üzerinden başka bir makinedeki programa bağlar ve bu yalnızca kendi laboratuvar makineleriniz arasında gerçekleşmelidir. Semboller önceliklidir. Bir makineyi ana makine (host), diğerini hedef (target) olarak adlandırın. Programı hata ayıklama sembolleriyle derleyin ve bu kesin derleme için eşleşen PDB dosyasını saklayın; çünkü hatalı bir PDB yanlış işlev adları verir ve sembol içermeyen yığın yalnızca adresler gösterir. StatusRivet'i çalıştığınız ana makineye kurun ve hedef makineyi yalnızca test edilecek programa ayırın. Herhangi bir ayarı değiştirdiğinizde bunu not edin, böylece sonra geri yükleyebilirsiniz. Bulabileceğiniz en küçük girdiyle çökme durumunu yeniden üretin; çünkü kısa bir durum, kısa bir yığın ve daha kolay bir fark analizi üretir. Agent'ten bir şey yapmasını istemeden önce ana makine ile hedef makinenin birbirine erişebildiğinden emin olun; çünkü başarısız bir bağlantı, başarısız bir hata ayıklayıcı gibi görünür.
01
Proje klasörünü açın
Kaynak ve derleme dosyalarınızı içeren klasörü sohbetin çalışma klasörü olarak seçin; çünkü dosya araçları yalnızca bu klasör içinde okuma ve düzenleme yapar. Kaydedilmiş yığımları ve notları da buraya koyun, böylece tüm durum tek bir yerde olur ve agent tümünü okuyabilir.
02
Ask first moduna geçin
Ask first, bir şeyleri değiştiren işlemlerden önce duraklar, böylece her adımı çalıştırmadan önce okuyabilirsiniz. Plan only modu, adımları önce görmek ve hiçbir şey çalıştırmamak istediğinizde kullanılır. Bir plan yeniden başlatmadan sonra da korunur, böylece daha sonra geri dönebilirsiniz.
03
Çökme durumunu tanımlayın
Programı, ana makineyi ve hedef makineyi belirtin ve semptomu açıklayın; makinelerin size ait olduğunu söyleyin. Kendi laboratuvar notlarınızdan bağlantı detaylarını verin ve hiçbir şeyi tahmin etmeyin. Hedefte hangi derlemenin çalıştığını ve hangisinin PDB dosyasına ait olduğunu belirtin.
04
Sonucu kontrol edin
Farkı okuyun, derleme komutunuzla yeniden derleyin ve hedef makinede test komutunuzu tekrar çalıştırın. Ne değiştiğini içeren notları kontrol listesiyle birlikte saklayın; yeni test hala başarısız olursa eski dökümü de saklayın, böylece bir sonraki deneme hafızaya değil kanıtlara dayanarak başlar.
Oturum kontrol listesi
StatusRivet · Bağlan ve kaydet● Ask first
Hedefteki programa bağlan, bir döküm ve yığın izlemesi kaydet, ardından yığımayı oku.
Shellattach your debugger to the targetbağlandı
Shellsave the dump on the targetkaydedildi
Shellwrite the call stack to stack.txtkaydedildi
read_filestack.txtokundu
grep0xC0000005 stack.txt1 eşleşme
bir sonraki adımdan önce onayınızı bekliyorReddetKabul et
debug-session.txt
# Debug session checklist
1. Build the app with debug symbols and keep the PDB
2. Note the build the crash happened on
3. Start the debugger on the host machine
4. Attach to the app running on the target
5. Reproduce the crash with the smallest input
6. Save a crash dump on the target
7. Save the faulting thread's call stack to stack.txt
8. Read the exception code and the top frames
9. Match the first frame to a source line
10. Propose a minimal fix and rebuild
11. Run the test again and note what changed
İki laboratuvar makinesi arasında tek bir hata ayıklama oturumu için düz metin bir kontrol listesi. Sembollerle derleme, bağlanma, en küçük girdiyle çökme durumunu yeniden üretme, bir döküm ve yığın izlemesi kaydetme, üst kareleri okuma ve düzeltmeden sonra bir test çalıştırma adımlarını kapsar; ne değiştiğine dair notlarla biter. Bunu proje klasörünüze kopyalayın ve kendi laboratuvarınıza uygun şekilde düzenleyin. Kopyala ve düzenle.
Uzaktan Windows hata ayıklayıcı ile çökme durumunu analiz et
Ana makine üzerinden bağlan
Görev: laboratuvar hedefinde çalışan kendi programınıza ana makine üzerinden bağlan. Önce bağlan. StatusRivet'te proje klasörünü aç, Ask first moduna geç ve kurulumu tanımla. Shell, ona verdiğin bağlantı detaylarıyla hata ayıklayıcının komut satırı modunu çalıştırır ve kart, gerçek çıkış kodu üzerinden bağlanıp bağlanmadığını gösterir. Agent bağlantı ayarlarını uydurmaz; bu yüzden ana makineyi, hedefi ve portu kendi laboratuvar notlarından al. Uzaktan hata ayıklama yalnızca kendi laboratuvar makinelerin içindir, sahip olmadığın bir bilgisayar için değil. Sonraki adımdan önce kartı oku. Bağlanma başarısız olursa, başka hiçbir şey çalışmamalıdır; önce bağlantıyı düzelt, sonra tekrar sor. Kart ayrıca tam komutu da saklar, böylece daha sonra tekrarlayabilirsin.
Bir döküm ve yığın izlemesi kaydet
Görev: hedefte en küçük girdiyle çökme durumunu yeniden ürettikten sonra kanıtları kaydet. Her iki dosyayı da kaydet. Shell, hata ayıklayıcıdan bir çökme dökümü yazması ve hata yapan işlemin yığın izlemesini bir metin dosyasına kaydetmesini ister; kartlar her iki sonucu da gösterir. Hedefteki bir Windows JIT hata ayıklayıcı girişi, bir uygulama çöktüğünde otomatik olarak bir hata ayıklayıcı başlatır. Bu bir sistem ayarıdır, bu yüzden yalnızca bir test makinesinde değiştir, önceki değeri not et ve sonra geri yükle. Bir minidump'tan bir sistem çökmesinin nedenini bulmak için kaydedilmiş yığın izlemesinden başla. Ask first modunda her adımı onaylarsın ve durumu okuyan bir sonraki kişi için her iki dosyayı da kontrol listesiyle birlikte saklarsın. Dosyaları derleme adına göre adlandır ki biri diğerleriyle karıştırmasın.
Bir kareyi bir kaynak satırına eşle
Görev: üst kareyi koduna bağla. Sembollerle başla. read_file stack.txt dosyasını açar, grep proje içinde işlev adını ve özel durum kodunu (örneğin erişim ihlali için 0xC0000005) arar ve read_file o satırda kaynak dosyasını açar. Eşleşen PDB ile yığın işlev adlarını, kaynak dosyaları ve satır numaralarını gösterir; PDB olmadan yalnızca adresler görürsün. Kernel güvenlik kontrolü başarısızlığıyla BSOD ile sonlanan donan bir makine, tam olarak bu rutin için bir durumdur: döküm, yığın, kaynak. Agent herhangi bir şeyi düzenlemeden önce kanıtları kendin oku; çünkü agent metinlerden çalışır ve programı adım adım çalıştıramaz. Adım adım ilerlemek için kendi hata ayıklayıcını kullan ve agent'e ne gördüğünü söyle.
Düzeltmeyi öner ve testi yeniden çalıştır
Görev: bulguyu bir değişikliğe dönüştür. edit_file minimal bir fark önerir, örneğin eksik bir null kontrolü veya hatalı bir dizin, ve Ask first modunda agent okuman için duraklar. Shell ardından sembollerle derleme komutunu ve test komutunu çalıştırır; kartlar gerçek çıkış kodlarını bildirir. Yazdığın bir sürücülerde kernel modu yığın bozulması BSOD'u, kötü yazmadan uzun süre sonra ortaya çıkabilir; bu yüzden yalnızca son kareyi değil, yığımda daha önce yazılan arabellekleri kontrol et. Laboratuvar hedefinde beklenmedik bir store özel durumu BSOD'u aynı şekilde yönetilir. Test geçtikten sonra farkı kabul et ve ne değiştiğini yaz. Kabul etmeden önce test et. Test hala başarısız olursa, yeni yığımla birlikte kal ve döngüyü ikinci adımdan tekrar başlat.