Вот код: int main(void) { int wait_val; int pid; struct user_regs_struct regs = {0}; switch (pid = fork()) { case -1: perror("fork"); break; case 0: /* запуск дочернего процесса */ ptrace(PTRACE_TRACEME, 0, 0, 0); execl("/home/merloc/test", "test", "aaaaaaaaaaaa", NULL); break; default: if(wait(&wait_val) == -1) printf("wait error: %s\n", strerror(errno)); if(ptrace(PTRACE_CONT, pid, 0, 0) != 0) printf("ptrace error: %s\n", strerror(errno)); if(wait(&wait_val) == -1) printf("wait error: %s\n", strerror(errno)); if(WIFSIGNALED(wait_val)) { if(ptrace(PTRACE_GETREGS, pid, NULL, ®s) != 0) printf("ptrace error: %s\n", strerror(errno)); else printregs(®s); } break; } return 0; }А вообще мне нужно если программа завершилась сохранить значения ее регистров и последний фрейм стека. если кто знает как это сделать, то пожалуйста подскажите.
|