Программный брейкпоинт

Discussion in 'WASM.BEGINNERS' started by inviZ, Feb 20, 2009.

  1. inviZ

    inviZ Сергей

    Blog Posts:
    0
    Бгг, вот ведь никогда не задумывался над одним вопросом. Допустим, отладчик ставит брейкпойнт - затертый байт сохраняет, вставляет 0xCC вместо него.
    Потом, когда отлавливаем соответствующее исключение - старый байт восстанавливаем, поправляем контекст, запускаем поток заново - но ведь брейкпоинт-то надо вернуть обратно ).
    Первое, что приходит в голову - поставить флаг трассировки, поймать уже это трассировочное исключение, и при его обработке вернуть бряк обратно). Или это как-то по-другому делается?
     
  2. Clerk

    Clerk Забанен

    Blog Posts:
    0
    inviZ
    Да, точно так и делаетсо, вот именно поэтому бряк на подобный код:
    Code (Text):
    1.     Int 0x2A
    2.     pushfd
    Будет обнаружен по сохранённому флажку TF, аналогично как и трассировка.
    Альтернатива - любая однобайтная привилегированная инструкция(если в юзермоде).