В документации kprobes говорится:

#include <linux/kprobes.h>
int register_kprobe(struct kprobe *kp);

Устанавливает точку останова по адресу kp->addr. Когда точка останова хит, Kprobes вызывает kp->pre_handler. После прощупываемой инструкции является одноэтапным, Kprobe вызывает kp->post_handler.

В приведенном выше контексте, что означает одношаговый?

0
Stephen Kitt 2 Мар 2020 в 12:45

1 ответ

В этом контексте в виду выполнено, возможно, с некоторым контролем.

Не совсем правильно говорить «один шаг — одна инструкция». Это как при ходьбе, вы бы сказали один шаг один шаг. Это просто лишнее. Мы можем сказать, что проходим 100 миль шаг за шагом. Или сделать один шаг (to single step).

Пошаговое выполнение — это то, что вы делаете с набором инструкций (программой). Вы запускаете одну инструкцию за раз, а затем можете посмотреть на состояние машины между шагами/инструкциями.

В этом контексте это, вероятно, означает, что он делает то же самое, что и при одиночном шаге, но только для этой одной инструкции.

0
ctrl-alt-delor 2 Мар 2020 в 01:26
1
«Неправильно говорить «один шаг — одна инструкция». Я не понимаю, почему бы и нет — когда вы выполняете пошаговое выполнение, вы выполняете пошаговое выполнение одной инструкции. Если вы хотите выполнить серию инструкций, вы либо устанавливаете точку останова (чтобы вы больше не выполняли пошаговые действия), либо обрабатываете каждый шаг в отдельности. Продолжать работать в один шаг — это решение, которое вы принимаете каждый раз; следующий одиночный шаг должен быть настроен снова.
 – 
Stephen Kitt
2 Мар 2020 в 01:15