2004-gre-cs-practice-book.pdf/Q56
Материал из DISCOPAL
Вопрос: Q56-4c9f66
- Предположим, что отладчик устанавливает точку останова на инструкции загрузки по виртуальному адресу 0x77E81234 в отлаживаемом процессе P.
- Если текстовый сегмент P начинается по адресу с 0x77E80000 в виртуальном адресном пространстве P и если отладчик сопоставил этот же текстовый сегмент на 0x010000000 в своем виртуальном адресном пространстве
Какой из следующих виртуальных адресов используется отладчиком в операции ЗАПИСИ, а также описание того, как отладчик сопоставил страницу виртуальной памяти, содержащую этот адрес?
Ответы
- Правильный ответ: 0x01001234; страница памяти мапится с доступом READ/WRITE
- 0x01001234; страница памяти мапится с доступом COPY-ON-WRITE
- 0x76E81234; страница памяти мапится с доступом READ/WRITE
- 0x76E81234; страница памяти мапится с доступом COPY-ON-WRITE
- 0x77E81234; страница памяти мапится с доступом READ/WRITE
Объяснение
Исходники — вопрос 56 на 38 странице книги «2004-gre-cs-practice-book.pdf»
Step 1: Calculate the Offset of the Breakpoint Address
- Так, оффсет бряки 0x77E81234−0x77E80000=0x1234
- в пространстве отладчика оно в 0x01000000+0x1234=0x01001234
- Вот дальше, по моему опыту отладчиков (gdb, ddd, SoftICE, Ghidra…) нормальный READ/WRITE доступ есть (хоть код на ходу правь).
Но! Очевидно в каких-то случаях дебаггер маппит COPY-ON-WRITE, и если вы разбираетесь в теме и напишите обьяснение, когда и как оно мапиится — велком!
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.