Windows

Dependency Walker - Cum se utilizează - Tutorial

Analyzing Dependencies with Dependency Walker

Analyzing Dependencies with Dependency Walker

Cuprins:

Anonim

Uneori, pașii normali de depanare nu o vor tăia. S-ar putea să trebuiască să mergem dincolo și mai departe - mai mult ca și depistarea problemelor medico-legale. Astăzi voi scrie despre un instrument care ne va ajuta să facem asta. Dependency Walker este un instrument de analiză a dependențelor unei aplicații Windows, cum ar fi funcții, module etc. Construiește un arbore ierarhic al tuturor modulelor dependente de exe, dll, sys etc.

Dependența Walker

Dependency Walker vă poate ajuta în depanarea erorilor de aplicație, erorile de înregistrare a fișierelor, încălcările accesului la memorie și defectele de pagină nevalabile.

Dependency Walker devine utilă în special dacă un anumit program al dvs. nu se încarcă sau un serviciu eșuează pentru a începe cu o eroare care indică o anumită dll. În astfel de cazuri, puteți încărca acel program sau dll în Dependency Walker, pentru a vedea ce fișier nu se încarcă sau ce modul cauzează problema - și apoi reparați-l.

Programul nu doar încărcarea modulelor, dar și scanează pentru erori potențiale. În conformitate cu fișierul Ajutor, acesta efectuează următoarele activități:

  • Detectează fișierele lipsă. Acestea sunt fișiere care sunt necesare ca dependență de un alt modul. Un simptom al acestei probleme este "eroarea BAR.DLL din banda de legătură dinamică nu a putut fi găsită în calea specificată …"
  • Detectează fișiere nevalabile. Aceasta include fișiere care nu sunt compatibile Win32 sau Win64 și fișiere care sunt corupte. Un simptom al acestei probleme este "eroarea de aplicație sau DLL BAR.EXE nu este o imagine Windows validă".
  • Detectează incompatibilitățile import / export. Verifică faptul că toate funcțiile importate de un modul sunt de fapt exportate din modulele dependente. Toate funcțiile de import nerezolvate sunt marcate cu o eroare. Un simptom al acestei probleme este "Punctul de intrare al procedurii FOO nu a putut fi localizat în biblioteca dinamică BAR.DLL".
  • Detectează erorile de dependență circulară. Aceasta este o eroare foarte rară, dar poate apărea cu funcții redirecționate.
  • Detectează tipurile de module de procesor necorespunzătoare. Acest lucru se întâmplă dacă un modul construit pentru un procesor încearcă să încarce un modul construit pentru un CPU diferit.
  • Detectează neconcordanțele sumelor de control prin verificarea sumelor de control ale modulelor pentru a vedea dacă modulele au fost modificate după ce au fost construite
  • Detectează coliziunile modulelor evidențiind toate modulele care nu reușesc să se încarce la adresa lor de bază preferată
  • Detectează erorile de inițializare a modulelor prin urmărirea apelurilor către punctele de intrare în modul și căutarea erorilor.
  • Dependency Walker poate efectua, de asemenea, un profil de execuție al aplicației dvs. module încărcate dinamic și defecțiuni de inițializare a modulelor. Aceeași verificare a erorilor de mai sus se aplică și în cazul modulelor încărcate dinamic.

Spre exemplu, ajutam un client a doua zi - încărca Internet Explorer, dar IE continua să se prăbușească, fără erori specifice. Am efectuat majoritatea depanării de bază cum ar fi dezactivarea suplimentelor și a barelor de instrumente, resetarea IE la setarea implicită etc.Dar totuși a continuat să se prăbușească. Acest lucru însemna că unul sau mai multe fișiere necesare pentru ca Internet Explorer să ruleze corect a fost o problemă. Este întotdeauna greu să depanezi astfel de cazuri, dar cu Dependency Walker, putem vedea dacă ceva nu este în regulă cu unul din fișierele dependente.

Așa că am încărcat Internet Explorer în Dependency Walker.

În continuare am extins lista unul câte unul

Apoi am trecut prin fiecare dintre module, pentru a vedea dacă găsesc ceva suspect acolo. Am trecut prin modul și am avut norocul să găsesc problema.

Am constatat că fișierul IEFRAME.dll lipsea. Așa că m-am dus și am înlocuit fișierul de pe DVD-ul de instalare Windows. A rezolvat problema. Acum, Internet Explorer nu se mai prăbușește.

Sper că acest lucru vă va spune cât de ușor este să utilizați instrumentul pentru a afla eventualele erori de dependență.

Cum se utilizează Dependency Walker

Pentru a utiliza Dependency Walker pentru a investiga erorile, puteți urma acești pași:

  1. Start Walker Dependency
  2. Faceți clic pe Open din meniul File pentru a încărca fișierul problemă
  3. faceți clic pe Începerea profilării. Caseta de dialog Modul de profil apare
  4. Tastați orice întreruperi, argumente de program, alte opțiuni pe care le doriți și apoi faceți clic pe OK.

Dependency Walker va injecta dwinject.dll înainte de eroare și va înregistra evenimentele care au loc în momentul

Dependency Walker descărcați

Puteți descărca Dependency Walker de la aici