Библиотека knigago >> Литература по изданиям >> Современные российские издания >> Отладка приложений для Microsoft .NET и Microsoft Windows


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 1322, книга: Опустошители
автор: Тимур Шакиржанович Касымов

Тимур Касымов, мастер боевой фантастики, возвращается с захватывающим романом "Опустошители". Этот напряженный и динамичный рассказ перенесет вас в мир, где технологии и выживание пересекаются захватывающим образом. История разворачивается на фоне постапокалиптического мира, где группа элитных солдат, известных как Опустошители, борется за сохранение последних остатков человечества. Во главе с опытным командиром Дэймоном Блэйдом, Опустошители сталкиваются с ордами свирепых мутантов,...

Джон Роббинс - Отладка приложений для Microsoft .NET и Microsoft Windows

Отладка приложений для Microsoft .NET и Microsoft Windows
Книга - Отладка приложений для Microsoft .NET и Microsoft Windows.  Джон Роббинс  - прочитать полностью в библиотеке КнигаГо
Название:
Отладка приложений для Microsoft .NET и Microsoft Windows
Джон Роббинс

Жанр:

Современные российские издания, Литература ХXI века (эпоха Глобализации экономики), Windows, Отладка, тестирование и оптимизация ПО, .NET Framework, Windows API

Изадано в серии:

неизвестно

Издательство:

Русская Редакция

Год издания:

ISBN:

978–5–7502–0243—0

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Отладка приложений для Microsoft .NET и Microsoft Windows"

Аннотация к этой книге отсутствует.

Читаем онлайн "Отладка приложений для Microsoft .NET и Microsoft Windows". [Страница - 259]

EBX — то, которое имело место в момент ошибки. Поэтому эффективный
адрес, показанный в дизассемблированном коде, может быть неверным. Итак,
прежде чем поверить в значения эффективных адресов, убедитесь, что нужные
регистры не были изменены никакой командой.
Благодаря недавно приобретенным навыкам работы с ассемблером, вы долж
ны легко узнать, почему этот поток потерпел крах. Читая ассемблерный листинг
Dr. Watson (или отладчика), большинство программистов допускает серьезную
ошибку: они изучают его сверху вниз. Настоящая хитрость в том, чтобы начать
исследование с места ошибки и постепенно подниматься вверх в поисках коман
ды, присвоившей значения регистрам, использованным в команде, вызвавшей
ошибку.
В нашем случае поток потерпел крах на команде 00410144 MOV ECX, [EAX+0x4], при
которой регистр EAX имел значение 0. В Microsoft Windows все адреса, располо
женные ниже 64 кб, отмечены как не имеющие доступа, поэтому попытка чтения
памяти по адресу 0x00000004 — не лучшая идея. Итак, мы должны найти коман
ду, заносящую 0 в EAX. Поднявшись на одну строку, вы увидите команду MOV EAX,
[EBP+0xC]. Помните, что второй операнд, источник, помещается в первый операнд,
приемник (иначе говоря, помните про правило «от источника к приемнику»). Это
значит, что в EAX было скопировано значение, находившееся по адресу [EBP+0xC].
Следовательно, по адресу [EBP+0xC] располагался 0.
В этот момент вы должны вспомнить еще одну хитрость, которую я описал в
главе 7: «параметры располагаются по положительным смещениям»! Параметры
располагаются по положительным смещениям от регистра EBP, причем первый
находится по адресу [EBP+0x8], а каждый следующий отстоит от предыдущего на
4 байта. Так как 0xC на 4 байта больше, чем 0x8, я могу предположить, что ошиб
ка была вызвана тем, что второй параметр этой функции был равен NULL (наде
юсь, прочитав эти два абзаца, вы поняли, как важно знать ассемблер в достаточ
ном объеме для чтения журналов Dr. Watson!).

692

ЧАСТЬ V

Приложения

Ниже вы можете увидеть вторую часть состояния потока: раздел Stack Back Trace
(обратная трассировка стека) Заметьте: я вывожу имена функций на двух строках,
чтобы они помещались на странице. При помощи двух символов подчеркивания
(__) Dr. Watson отображает операцию разрешения области видимости (::).

*——> Stack Back Trace (Обратная трассировка стека) Обратная трассировка стека Копия необработанного стека --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.