установить точку останова при вызове: вернуться и продолжить - PullRequest
0 голосов
/ 10 апреля 2011

Я знаю, как это сделать в GDB.Я присоединяюсь и следую:

break myfunction

commands

return
cont
end

cont

Мне интересно, есть ли способ сделать это в c?У меня уже есть мой код, работающий для чтения адресов памяти и записи в адреса памяти.И он автоматически находит pid и делает связанные вещи.Я застрял в реализации этого использования точек останова.

Ответы [ 2 ]

0 голосов
/ 10 апреля 2011

Не совсем понятно, чего вы пытаетесь достичь.

Показанная вами последовательность GDB просто заставит myfunction немедленно вернуться.

Если вы хотите, чтобы ваш mini-debugger имел такой же эффект, просто напишите код операции для ret (0xC3 на x86) по адресу myfunction; нет необходимости делать точку останова вообще.

0 голосов
/ 10 апреля 2011

Если вы говорите о каком-то рукописном отладчике, вы можете использовать значение IP для установки точки останова;Буквально, когда IP достигает определенного значения, вы останавливаете отлаживаемую программу и выполняете некоторую процедуру (например, переходите к процессу отладчика).Чтобы использовать имена функций, вы должны использовать таблицы символов, как это сделано в GDB.

...