39 #include <sys/types.h>
40 #include <sys/prctl.h>
51 static char trace[1024*10];
57 if (pipe(pipefd) == -1) {
58 fprintf(stderr,
"get_trace: Error pipe\n");
64 sprintf(pid_buf,
"%d", getpid());
66 ssize_t readed = readlink(
"/proc/self/exe", name_buf, 511);
72 fprintf(stderr,
"get_trace: Error fork\n");
87 printf(
"GDB %s - %s\n",name_buf,pid_buf);
88 execlp(
"gdb",
"gdb",
"--batch",
"-n",
"-ex",
"thread",
"-ex",
"bt", name_buf, pid_buf, NULL);
89 printf(
"Error calling gdb\n");
105 while (read(pipefd[0], &buf, 1) > 0){
111 waitpid(cpid,NULL,0);