리눅스 커널을 위한 디버깅 메커니즘이며 실운영 시스템 안에서 이벤트 모니터링을 위해 사용되어지기도 한다.

include/linux/kprobes.h
struct kprobe {
struct hlist_node hlist;
struct list_head list;
unsigned long nmissed;
kprobe_opcode_t *addr;
const char *symbol_name;
unsigned int offset;
kprobe_pre_handler_t pre_handler;
kprobe_post_handler_t post_handler;
kprobe_fault_handler_t fault_handler;
kprobe_break_handler_t break_handler;
kprobe_opcode_t opcode;
struct arch_specific_insn ainsn;
u32 flags;
};
typedef int (*kprobe_pre_handler_t)(struct kprobe*, struct pt_regs*);
typedef void (*kprobe_post_handler_t)(struct kprobe*, struct pt_regs*,
unsigned long flags);
typedef int (*kprobe_fault_handler_t)(struct kprobe*, struct pt_regs*,
int trapnr);
int register_kprobe(struct kprobe *p);
int unregister_kprobe(struct kprobe *p);
참고
–kprobes 동작 방식(1)
–kprobes 동작 방식(2)
–An introduction to KProbes
–arm에서 kprobes 사용하기(1)
–arm에서 kprobes 사용하기(2)
