| 15 | } |
| 16 | |
| 17 | void breakpoint_init(void) |
| 18 | { |
| 19 | struct sigaction old, new; |
| 20 | |
| 21 | new.sa_handler = trap; |
| 22 | new.sa_flags = 0; |
| 23 | sigemptyset(&new.sa_mask); |
| 24 | sigaction(SIGTRAP, &new, &old); |
| 25 | kill(getpid(), SIGTRAP); |
| 26 | sigaction(SIGTRAP, &old, NULL); |
| 27 | |
| 28 | if (!breakpoint_initialized) { |
| 29 | breakpoint_initialized = true; |
| 30 | breakpoint_under_debug = true; |
| 31 | } |
| 32 | } |