Понякога нормалните стъпки за отстраняване на неизправности просто няма да я отрежат. Може да се наложи да отидем отвъд и отвъд - по-скоро като отстраняване на проблеми с криминалисти. Днес ще пиша за инструмент, който ще ни помогне в това. Dependency Walker е инструмент за анализиране на зависимостите на приложения на Windows, като функции, модули и т.н. Тя изгражда йерархично дърво на всички зависими модули на exe, dll, sys и т.н.
Dependency Walker
Dependency Walker може да ви помогне при отстраняване на грешки при прилагането, грешки при регистрацията на файлове, нарушения на достъпа до паметта и невалидни странични грешки.
Програмата не само зарежда модулите, но и сканира за потенциални грешки. Според файла "Помощ" той изпълнява следните задания:
- Открива липсващи файлове. Това са файлове, които се изискват като зависимост от друг модул. Симптом на този проблем е "Грешка в библиотеката за динамична връзка BAR.DLL не може да бъде намерена в посочения път …".
- Открива невалидни файлове. Това включва файлове, които не са съвместими с Win32 или Win64 и файлове, които са корумпирани. Симптом на този проблем е грешката "Приложението или DLL BAR.EXE не е валидно изображение на Windows".
- Открива несъответствията между внос и износ. Проверява дали всички функции, импортирани от даден модул, всъщност се експортират от зависимите модули. Всички нерешени функции за импортиране се маркират с грешка. Симптом на този проблем е "Грешката за влизане в процедурата не може да бъде намерена в библиотеката за динамична връзка BAR.DLL".
- Открива грешки в кръговата зависимост. Това е много рядка грешка, но може да възникне при изпратени функции.
- Открива несъответстващи типове модули на процесора. Това се случва, ако модул, изграден за един процесор, се опитва да зареди модул, изграден за друг процесор.
- Открива несъответствия в контролната сума, като проверява контролните суми на модула, за да види дали някои модули са променени след като са били построени.
- Открива сблъсъци на модули, като подчертава всички модули, които не се зареждат на предпочитания от тях базов адрес.
- Открива неизправности на инициализацията на модули чрез проследяване на повиквания към точки за въвеждане на модули и търсене на грешки.
- Dependency Walker може да изпълнява и профил на изпълнение на вашето приложение, за да открие динамично заредени модули и модули за инициализиране на модули. Същата проверката на грешките от горе се отнася и за динамично заредените модули.
Например, помагах на клиент на другия ден - тя зареждаше Internet Explorer, но IE продължи да се разбива, без никакви конкретни грешки. Бяхме извършили повечето от основните отстраняване на неизправности като деактивиране на добавките и лентите с инструменти, възстановяването на IE на настройката по подразбиране и т.н.Но все още продължаваше да се срива. Това означава, че един или повече файлове, необходими за правилното функциониране на Internet Explorer, създава проблем. Винаги е трудно да се отстраняват такива случаи, но с Dependency Walker, можем да видим дали нещо не е наред с един от зависимите файлове.
Затова натоварих Internet Explorer в Зависимост Walker.
Надявам се, че това ще ви покаже колко лесно е да използвате инструмента, за да откриете възможните грешки в зависимостта.
Как да използвате Walker на зависимостта
За да използвате Зависимостта Walker, за да разберете грешките, можете да изпълните следните стъпки:
- Започнете Зависимостта Walker
- Кликнете върху Отвори в менюто "Файл", за да заредите проблема
- В менюто Изглед щракнете върху Стартиране на профилирането. Появява се диалоговият прозорец на модула на профила
- Въведете всички превключватели, програмни аргументи, други опции, които искате, и след това кликнете върху OK.
Dependency Walker ще инжектира dwinject.dll преди да настъпи грешката и ще регистрира събитията, които се случват по време на грешката.
Зависимостта Walker изтеглите
Можете да изтеглите Dependency Walker от тук.