Nogle gange vil normale fejlfindingstrin ikke skære det. Vi må måske gå ud over - mere som retsmedicinsk fejlfinding. I dag skriver jeg om et værktøj, som kan hjælpe os med at gøre det. Dependency Walker er et værktøj til at analysere afhængigheden af ​​en Windows-applikation - som funktioner, moduler osv. Det bygger et hierarkisk træ på alle de afhængige moduler af en exe, dll, sys osv.

Dependency Walker

Dependency Walker kan hjælpe dig med fejlfinding af applikationsfejl, filregistreringsfejl, brud på hukommelsesadgang og ugyldige sidefejl.

Dependency Walker bliver særligt nyttigt, hvis et specifikt program af din ikke er i gang, eller en tjeneste undlader at starte med en fejl, der peger på en bestemt dll. I sådanne tilfælde kan du indlæse dette program eller dll i Dependency Walker, for at se, hvilken fil der mangler at indlæse eller hvilket modul der forårsager problemet - og derefter rette det.

Programmet lægger ikke bare modulerne, men det scanner også efter mulige fejl. Ifølge Hjælp-filen udføres følgende job:

  • Registrerer manglende filer. Dette er filer, der kræves som afhængighed af et andet modul. Et symptom på dette problem er "Den dynamiske link bibliotek BAR.DLL kunne ikke findes i den angivne vej ..." fejl.
  • Registrerer ugyldige filer. Dette omfatter filer, der ikke er Win32 eller Win64-kompatible og filer, der er korrupte. Et symptom på dette problem er, at "Programmet eller DLL BAR.EXE ikke er et gyldigt Windows-billede" -fejl.
  • Registrerer import / eksport fejltilpasninger. Verificerer, at alle funktioner, der importeres af et modul, faktisk eksporteres fra de afhængige moduler. Alle uløste importfunktioner markeres med en fejl. Et symptom på dette problem er "procedurens indtastningspunkt FOO kunne ikke findes i den dynamiske linkbibliotek BAR.DLL" -fejl.
  • Registrerer cirkulære afhængighedsfejl. Dette er en meget sjælden fejl, men kan forekomme med videresendte funktioner.
  • Registrerer mismatchede CPU typer af moduler. Dette sker, hvis et modul bygget til en CPU forsøger at indlæse et modul bygget til en anden CPU.
  • Registrerer checksum uoverensstemmelser ved at verificere modulchecksummere for at se om moduler er blevet ændret, efter at de blev bygget.
  • Registrerer modulkollisioner ved at fremhæve eventuelle moduler, der ikke indlæser deres foretrukne baseadresse.
  • Registrerer fejl ved modulinitialisering ved at spore opkald til modulindgangspunkter og lede efter fejl.
  • Dependency Walker kan også udføre en run-time-profil for din applikation for at registrere dynamisk indlæste moduler og modulinitialiseringsfejl. Den samme fejlkontrol ovenfra gælder også dynamisk indlæste moduler.

For eksempel hjælper jeg en klient den anden dag - hun lastede Internet Explorer, men IE holdt sammen med at kollapse uden nogen specifikke fejl. Vi havde gjort det meste af den grundlæggende fejlfinding som deaktivering af add-ons og værktøjslinjer, nulstilling af IE til standardindstilling osv. Men det blev stadig ved at gå ned. Dette betød, at en eller flere filer, der kræves for at Internet Explorer skal køre korrekt, skabte et problem. Det er altid svært at fejlfinding sådanne tilfælde, men med Dependency Walker kan vi se, om der er noget galt med en af ​​de afhængige filer.

Så jeg læste Internet Explorer i Dependency Walker.

Jeg udvidede derefter listen en efter en

Så gik jeg gennem hver af modulerne for at se, om jeg kunne finde noget mistænkeligt der. Jeg rullede gennem modulet og var heldig nok til at finde problemet.

Jeg fandt ud af, at filen IEFRAME.dll manglede. Så jeg gik og erstattede filen fra Windows Installation DVD. Det løste problemet. Nu styrtede Internet Explorer ikke længere.

Jeg håber det vil fortælle dig, hvor nemt det er at bruge værktøjet til at finde ud af mulige afhængighedsfejl.

Sådan bruger du Dependency Walker

For at bruge Dependency Walker til at undersøge fejl, kan du følge disse trin:

  1. Start afhængighed Walker
  2. Klik på Åbn i menuen Filer for at indlæse problemfilen
  3. Klik på Start profilering i menuen Vis. Dialogboksen Profilmodul vises
  4. Indtast eventuelle afbrydere, programargumenter, andre muligheder, du ønsker, og klik derefter på OK.

Dependency Walker vil injicere dwinject.dll før fejlen opstår, og logger på begivenhederne, der finder sted på tidspunktet for fejlen.

Dependency Walker download

Du kan downloade Dependency Walker fra her.

Top Tips:
Kommentarer: