parent
0502e537d7
commit
db677018d0
|
@ -47,65 +47,6 @@ int GC_pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*sta
|
||||||
int GC_pthread_detach(pthread_t thread);
|
int GC_pthread_detach(pthread_t thread);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void mzrt_set_user_break_handler(void (*user_break_handler)(int))
|
|
||||||
{
|
|
||||||
#ifdef WIN32
|
|
||||||
#else
|
|
||||||
signal(SIGINT, user_break_handler);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
static void rungdb() {
|
|
||||||
#ifdef WIN32
|
|
||||||
#else
|
|
||||||
pid_t pid = getpid();
|
|
||||||
char outbuffer[100];
|
|
||||||
char inbuffer[10];
|
|
||||||
|
|
||||||
fprintf(stderr, "pid # %i resume(r)/gdb(d)/exit(e)?\n", pid);
|
|
||||||
fflush(stderr);
|
|
||||||
|
|
||||||
while(1) {
|
|
||||||
while(read(fileno(stdin), inbuffer, 10) <= 0){
|
|
||||||
if(errno != EINTR){
|
|
||||||
fprintf(stderr, "Error detected %i\n", errno);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
switch(inbuffer[0]) {
|
|
||||||
case 'r':
|
|
||||||
return;
|
|
||||||
break;
|
|
||||||
case 'd':
|
|
||||||
snprintf(outbuffer, 100, "xterm -e gdb ./racket3m %d &", pid);
|
|
||||||
fprintf(stderr, "%s\n", outbuffer);
|
|
||||||
if(system(outbuffer))
|
|
||||||
fprintf(stderr, "system failed\n");
|
|
||||||
break;
|
|
||||||
case 'e':
|
|
||||||
default:
|
|
||||||
exit(1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef WIN32
|
|
||||||
static void segfault_handler(int signal_num) {
|
|
||||||
pid_t pid = getpid();
|
|
||||||
fprintf(stderr, "sig# %i pid# %i\n", signal_num, pid);
|
|
||||||
rungdb();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void mzrt_set_segfault_debug_handler()
|
|
||||||
{
|
|
||||||
#ifdef WIN32
|
|
||||||
#else
|
|
||||||
signal(SIGSEGV, segfault_handler);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void mzrt_sleep(int seconds)
|
void mzrt_sleep(int seconds)
|
||||||
{
|
{
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
|
Loading…
Reference in New Issue
Block a user