Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Анализ сообщения "Access Violation" [D5, D6, Win2k, WinXP]


Th ©   (2004-07-09 16:35:00) 

Нечто подобное часто можно увидеть при работе с Делфи:

"Exception EAccessViolation in module XXXXXX.exe at 00003A30.
Access violation at address 00403A30 in module 'XXXXXX.exe'.
Read of address 00000001"

Подскажите, кто знате, что обозначают цифры 00003А30 и 00403А30. С цифрой 00000001 вроде понятно..
И еще связанный с этим вопрос: в окне asm-debugger есть два окна, не считая стека, регистров и флагов: Верхнее окно с мнемо-кодом и нижнее с машинным кодом. Вопрос - что означают адреса слева в этих окнах.
В нижнем возможно смещение от начала ехе файла?
В верхнем адрес инструкции в памяти после загрузки ехе файла?


Тимохов   (2004-07-09 18:07:00) [1]


> Th   (09.07.04 17:12) [6]
> Однако моя программа строго всегда оказывается
> загруженной по этому адресу. Почему?


Меня могут упрекнуть за излишнюю любовь к этому автору, но все же

Книга
http://www.books.ru/shop/books/8283
имхо обязательна для прочтения.


han_malign   (2004-07-09 17:39:00) [2]

$00400000 - ImageBase - если укажешь линковщику другой({$M reservedbytes}или{$RESOURCERESERVE reservedbytes}или в опциях) - будет другой...
Для того чтобы найти модуль/сроку в map-файле, для Delphi-приложений нужно еще отнять $00001000 - стандартное смещение линковщика Borland.


Th   (2004-07-09 17:19:00) [3]

Ага.. Понял ;)


Anatoly Podgoretsky   (2004-07-09 17:15:00) [4]

Не логично, у каждого приложение свое АП


Th   (2004-07-09 17:12:00) [5]

Спасибо за ответы ;)
Но странно вот что:
Если 400000 - это стандартный адрес для Win32 по которому система грузит приложения, то логично предположить, что вероятнее всего этот адрес будет занят ранее запущенным приложением. Однако моя программа строго всегда оказывается загруженной по этому адресу. Почему?


Тимохов   (2004-07-09 17:06:00) [6]


>  Image Base? и какой смысл она имеет, если это так?

ну типа твое приложение загружено про указанному адресу.


Anatoly Podgoretsky   (2004-07-09 17:05:00) [7]

Th   (09.07.04 16:53) [2]
Это что бы ты не отнимал 400000 самостоятельно


Тимохов   (2004-07-09 17:00:00) [8]

403А30 - это абсолютный адрес в витруальной памяти процесса, где произошло исключение (т.к. адрес инструкции).

имхо


Th   (2004-07-09 16:53:00) [9]

Спасибо..
Тогда возникает вопрос - почему сначала пишется просто 3А30, а
во вотором предложении 403А30? 400000 - это что? Image Base? и какой смысл она имеет, если это так?


Digitman   (2004-07-09 16:41:00) [10]


> что обозначают цифры 00003А30 и 00403А30


адреса в АП текущего процесса


>  что означают адреса слева в этих окнах


то же самое и означают


> В нижнем возможно смещение от начала ехе файла ?


адрес в АП текущего процесса


> В верхнем адрес инструкции в памяти после загрузки ехе файла?


адрес инструкции в АП текущего процесса !


Наверх

Титульная страница Поиск, карта сайта Написать письмо