Debug 多线程问题通常会遇到,死锁,资源释放出错,进程不能正常退出等。
1. 死锁的问题可以通过加debug message 来解决。
2. 后面两个问题可能会用到一些下面到方式。
启动每一个线程时输出线程ID, 在结束时根据线程ID判断哪个线程没有退出。
#gettid
pid_t gettid(void) { return syscall(SYS_gettid); }
#running task
void running_task(void) { char cmd[32]; memset(cmd, 0, sizeof cmd); printf("main pid: %d\n", getpid()); sprintf(cmd, "ls /proc/%d/task", getpid()); system(cmd); }