| 1234567891011121314151617181920212223242526272829303132 |
- /* CC0 (Public domain) - see LICENSE file for details
- *
- * Idea for implementation thanks to stackoverflow.com:
- * http://stackoverflow.com/questions/3596781/detect-if-gdb-is-running
- */
- #include <ccan/breakpoint/breakpoint.h>
- bool breakpoint_initialized;
- bool breakpoint_under_debug;
- /* This doesn't get called if we're under GDB. */
- static void trap(int signum)
- {
- breakpoint_initialized = true;
- }
- void breakpoint_init(void)
- {
- struct sigaction old, new;
- new.sa_handler = trap;
- new.sa_flags = 0;
- sigemptyset(&new.sa_mask);
- sigaction(SIGTRAP, &new, &old);
- kill(getpid(), SIGTRAP);
- sigaction(SIGTRAP, &old, NULL);
- if (!breakpoint_initialized) {
- breakpoint_initialized = true;
- breakpoint_under_debug = true;
- }
- }
|