Главная arrow Программирование arrow PC arrow Использование отладчика Microsoft Visual Studio Debugger Wednesday, November 22 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Поделиться:

Использование отладчика Microsoft Visual Studio Debugger Версия для печати
Написал microsin   
13.01.2006

(по статье Криса Касперски "Практические советы по восстановлению системы в боевых условиях")

1. Окно "Call Stack" (Debug\Windiws\Call Stack, или Ctrl+Alt+C) позволяет просматривать историю вызовов функций. Выглядит это окно так:
TestCEDIT.exe!00401362()
TestCEDIT.exe!004012ff()
mfc42.dll!6c3739e5()
USER32.DLL!77e1652a()
mfc42.dll!6c3723d8()
mfc42.dll!6c3722ae()
mfc42.dll!6c378fc5()
mfc42.dll!6c372976()
mfc42.dll!6c3739e5()
USER32.DLL!77e21bc7()
USER32.DLL!77e1544f()
mfc42.dll!6c371dcc()
USER32.DLL!77e24e1d()
USER32.DLL!77e24be8()
mfc42.dll!6c371cea()
mfc42.dll!6c371c73()
mfc42.dll!6c371018()

Каждая строка указывает на модуль и помещённое в стек значение адреса в этом модуле (точка возврата из вызова call). Если щёлкать мышкой на каждую строку, то попадаем в окне Disassembly на адрес в указанном модуле, причём перед указанной точкой возврата ВСЕГДА стоит команда call ... (то есть, это и есть история вызовов call, хранящаяся в стеке). Исключение составляет первая строка (TestCEDIT.exe!00401362()), в которой адрес 00401362 всего лишь равен текущему значению регистра указателя стека EIP.

2. Чтобы посмотреть дамп самого стека, с котором лежат все адреса списка Call Stack вперемежку с передаваемыми через стек параметрами, нужно ввести в поле Address дампа слово ESP (для удобства просмотра параметров в стеке лучше дамп переключить в режим 4-byte Integer, это делается в контекстном меню окна дампа) и нажать на Enter. В поле Address автоматически подставляется значение регистра ESP и окно дампа начинает показ памяти с этого адреса. При внимательном просмотре дампа обнаруживается, что там действительно есть все адреса из окна истории вызовов Call Stack.

3. 0049434A  mov         al,byte ptr [outKEYSpnt (5E60B9h)]
означает - инструкция находится по адресу 0x0049434A, и задает загрузить в al (четвертинка от EAX, половинка от AX, разрядность 1 байт) значение переменной outKEYSpnt, которая находится по адресу 5E60B9h.

Последнее обновление ( 17.12.2009 )
 

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

Защитный код
Обновить

< Пред.   След. >

Top of Page
 
microsin © 2017