Проверить, чтобы переменные были без кавычек. Т.е. debug_continueFromBreakpoint(co_stepover), а не debug_continueFromBreakpoint('co_stepover').
Функция debug_continueFromBreakpoint(co_stepover) делает шаг на следующую инструкцию не заходя в call. Далее прочитать регистры и далее вызывать debug_continueFromBreakpoint(co_run) чтобы отпустить отладку. Если этого не сделать, то ничего и не произойдёт — висит в отладке.
Учитывать нахождение на EIP при брейкпоинте на адресе брейкпоинта или на адресе следующем за адресом брейкпоинта. Например, это позволит прочитать eax из mov eax, [eax] двумя способами. 1 способ до перезаписи eax (EIP на инструкции брейкпоинта). Это software-брейкпоинт. Способ2 после перезаписи (EIP на инструкции следующей за инструкцией, на которой сработал брейкпоинт). Это hardware-брейкпоинт(он же по умолчанию).
Оба режима, можно ставить вручную или программно.
debug_setBreakpoint(address, size OPTIONAL, trigger OPTIONAL, breakpointmethod OPTIONAL, functiontocall() OPTIONAL)
-- Где на EIP повлияет
--Breakpoint methods:
bpmInt3=0 --- software breakpoint
bpmDebugRegister=1 -- hardwarebreakpoint
bpmException=2 -- ну, это не нужно(медленный), на регион памяти (где здесь EIP будет, уже не помню)