Я пытаюсь реализовать в отладчике следующую функцию: я хочу использовать отладчик для управления потоком в отлаживаемом процессе.
Отладчик является родительским процессом и использует функцию ptrace()
для отладки дочернего процесса, но я не знаю, как управлять потоком (кроме основного) дочернего процесса из родительского процесса. Я хочу остановить или продолжить целевой поток. Есть какой-либо способ сделать это? так же, как код ниже
#include<pthread.h>
#include<stdio.h>
void *runner(void *param);
int main(int argc,char *argv[])
{
int pid;
pthread_t tid;
pthread_attr_t attr;
pid=fork();
if(pid==0){
pthread_attr_init(&attr);
pthread_create(&tid,&attr,runner,NULL);
pthread_join(tid,NULL);
printf("CHILD VALUE=%d",value);
}
else if(pid>0){
wait(NULL);
printf("PARENT VALUE=%d",value);
}
}
void *runner(void *param){
int count = 0;
while(1)
{
printf("%d\n",count);
count++;
sleep(1);
}
pthread_exit(0);
}
В коде дочерний процесс создает поток для печати чисел в цикле. Могу ли я использовать некоторую функцию, например ptrace()
, в родительском процессе для управления потоком? Приостановить или продолжить?