Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


«агрузка отлаживаемой программы




  • «апустить SL.
  • ¬ыбрать опцию Open module в меню File.
  • ќткрыть Gdidemo.exe.
  • ¬ыбрать опцию Load в меню Module.

SL оттранслирует отладочную информацию в.NMS файл, загрузит исходные файлы, запустит отлаживаемую программу (в данном случае Gdidemo) и всплывет в SoftIce, где вы увидите исходный текст программы.

ѕодсвеченна€ строка с номером 35 - это точка входа (entry point) в вашу программу. ≈сли SL вывел сообщение типа "An error occured during symbol translation/load", значит в отлаживаемом файле отсутствует отладочна€ информаци€, жмите OK и наслаждайтесь [диз]ассемблером.

2. ”правление SoftIce'ом

≈сли все сделано правильно, то вы должны увидеть SoftIce разбитый на несколько окон. ¬ерхнее окно - Register Window (окно регистров) - показывает состо€ние рабочих регистров процессора. ѕод ним находитс€ окно данных Data Window, в нем вы можете посмотреть или отредактировать дамп пам€ти. Ќиже находитс€ Code Window (окно кода) - в нем находитс€ исходный текст программы (если вы загрузили отладочную информацию), или дизассемблированный код программы. ¬ самом низу находитс€ окно команд - Command Window, в нем вы можете вводить команду и видеть результат их выполнени€. —ама€ нижн€€ строчка - строка помощи, в ней при вводе подсвечиваютс€ возможные варианты команд и их синтаксис. ”добнее всего управл€ть SoftIce с помощью мышки.

»зменение размера окна - подведите курсор к нижней границе того окна, которому хотите изменить размер или закрыть его, нажмите левую кнопку мыши и ведите ее вниз (увеличение размера) или вниз (уменьшение размера), если хотите закрыть окно, подведите нижнюю границу к верхней, в окне по€витс€ фраза Close current window и окно исчезнет.
ѕримечание: нельз€ изменить размер окна регистров и FPU.

—кроллинг на одну строку - подведите курсор к маленьким стрелочкам, расположенным у границ того окна, которое хотите скроллировать и жмите левую кнопку мыши (стрелочки по€вл€ютс€, если размер окна больше или равен двум строчкам).

—кроллинг на экран - подведите курсор к большим стрелочкам расположенным внутри того окна, которое хотите скроллировать и жмите левую кнопку мыши (стрелочки по€вл€ютс€, если размер окна больше или равен четырем строчкам).

»зменение значений регистров - подведите курсор к тому регистру, значение которого хотите изменить, нажмите левую кнопку мыши и введите число, если нужно изменить одну цифру, то подводите курсор к этой цифре и мен€йте.

»зменение значений флагов - подведите курсор к тому флагу, который хотите изменить, нажмите левую кнопку мыши, после чего клавишей Ins можно изменить значение флага на противоположное (маленька€ буква означает, что флаг не установлен, больша€ установлен).

»зменение значений €чеек пам€ти - подведите курсор к тому байту (слову, двойному слову и т.д.), которое хотите изменить, нажмите левую кнопку мыши и вводите ваше значение, если хотите изменить одну или несколько цифр в числе, то подведите курсор с помощью клавиатуры к нужным числам и мен€йте.
ѕримечание: во всех случа€х изменени€ значений они вступают в силу после того, как вы переключитесь в любое другое окно, до этого можно отменить последнее изменение, нажав Esc.

”становка точек останова на исполнение - подведите курсор к той строке в Code Window, в которой хотите остановитьс€, и двойным щелчком по левой кнопке мыши поставьте точку останова, строка подсветитс€.

”даление из Watch Window переменных - установите курсор на переменную, которую хотите удалить, нажмите левую кнопку мыши, переменна€ подсветитьс€, нажмите кнопку Del - переменна€ исчезнет.

 онтекстное меню - по правой кнопке мыши вы попадаете в контекстное меню, в котором вам доступны команды:

  • Copy - копировать в буфер обмена адрес или данные, наход€щиес€ под курсором.
  • Paste - вставить в окно команд, адрес или данные, наход€щиес€ в буфере обмена.
  • Copy&Paste - копировать в буфер обмена адрес или данные, наход€щиес€ под курсором, и вставить их в окно команд.
  • Display - вывести в окно данных дамп пам€ти, расположенный по адресу, над которым в данный момент находитьс€ курсор (јналог команды D).
  • Un-Assemble - вывести в Code Window исходный (если есть отладочна€ информаци€) или дизассемблированный текст программы, наход€щийс€ по адресу, над которым в данный момент находитьс€ курсор (јналог команды U).
  • What - идентифицирует значение, наход€щеес€ под курсором с заранее определенными (јналог команды Wath).
  • Previous - отмен€ет предыдущую команду, введенную из контекстного меню (работает с командами Display и Un-Assemble).

“рассировка программы

¬оспользуйтесь командой T (trace) дл€ того чтобы оттрассировать одну команду, или клавишей F8, котора€ закреплена по умолчанию за командой T. ѕроизойдет выполнение команды наход€щейс€ в текущей строке и курсор перейдет на следующую строку и подсветит ее. Ёто строка:

LpszLine=LpszLine;

≈ще раз нажмите F8, курсор передвинетс€ на следующую строку:

if(!hPrevInst).

¬ Code Window вы видите исходный текст программы (source mode). ≈сли вы хотите посмотреть дизассемблированный (code mode) текст программы или исходный и дизассемблированный (mixed mode) текст вместе, воспользуйтесь командой SRC или клавишей F3 закрепленной за этой командой. ѕри первом нажатии вы увидите смешанный (исходный текст программы и ассемблерные инструкции, из которых состоит эта строка) текст, при втором нажатии дизассемблированный, третье нажатие вернет вас в режим просмотра исходного текста программы.

Ќажмите еще раз F8 и вы перейдете к строке

if(!RegisterAppClass(hInst));

ƒл€ того, что бы отлаживать программу вы пользуетесь командой “, котора€ исполн€ет один оператор исходной программы или одну машинную команду.

≈ще существует команда P или клавиша F10, котора€ выполн€ет один шаг в программе т.е. при трассировке какой-либо функции или прерывани€, вы не получите управление до тех пор пока выполнение функции не завершитс€ и вы не вернетесь из функции обратно.  оманду P удобно примен€ть в том случае, когда вы отлаживаете основной алгоритм и отвлекатьс€ на трассировку каждой процедуры нерационально.
ѕримечание: командой T нельз€ оттрассировать системные вызовы (WIN32 API calls) наход€сь в source mode, дл€ их трассировки нужно перейти в mixed или code mode.





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2016-12-05; ћы поможем в написании ваших работ!; просмотров: 329 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

Ќеосмысленна€ жизнь не стоит того, чтобы жить. © —ократ
==> читать все изречени€...

514 - | 450 -


© 2015-2023 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.007 с.