Есть некоторый адрес в памяти, к примеру, DS:10 с 4х байтовой информацией. Эту ячейку можно адресовать по разному: MOV DWORD PTR DS:7,... MOV DWORD PTR DS:8,... MOV DWORD PTR DS:9,... MOV DWORD PTR DS:10,... MOV DWORD PTR DS:11,... MOV DWORD PTR DS:12,... MOV DWORD PTR DS:13,... MOV WORD PTR DS:9,... MOV WORD PTR DS:10,... MOV WORD PTR DS:11,... MOV WORD PTR DS:12,... MOV WORD PTR DS:13,... MOV BYTE PTR DS:10,... MOV BYTE PTR DS:11,... MOV BYTE PTR DS:12,... MOV BYTE PTR DS:13,... Мою область памяти могут адресовать разными путями, обращаясь по разным смещениям и запрашивая разное кол-во байт (1,2,4 или больше по MOVS). Вопрос - как поставить брейкпонт памяти так, чтобы в при любой из исполнившихся в коде команд брейк сработал? Параметры установки брейка памяти: 1) на адрес 10, 11, 12, 13 2) на размер BYTE, WORD, DWORD Пример. Я ставлю брейк на память "адрес 10, размер BYTE". А в коде программы кто-то выполнит код MOV DWORD PTR DS:9,11223344. Брейк сработает? В каких случаях брейк сработает, а какие обращения к той же ячейке пролетят без внимания?
что Breakpoint memory on access? Я спрашиваю по-русски: 1) по какому адресу это сделать и 2) что из размера выбрать?
Я по-русски и написал, выдели мышкой кусок на который нужно поставить бряк и выбери Breakpoint memory on access, и не парь мозги насчет размера.
Int19H ... Ну, тогда уж сразу DWORD, а не BYTE. Должен, но зачастую этого не происходит по многим причинам: антиотладка, глюк Debug API, глюк отладчика (тут про это статья очень хорошая есть, между прочим). Так что 100% гарантии на срабатывание бряка нет даже при соблюдении всех формальностей
В продолжение такой вопросец - в меню View->Memory можно ставить бряк на доступ к диапазону байт (F2 на адресе с длиной). Однако после срабатывания бряка брейкпоинт становиться disabled. Я понимаю почему это происходит (бряк срабатывает ДО обращения к адресу), но нельзя ли как то сделать так, чтобы он автоматом возвращался в enabled?