Debug POSIX 多线程
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);
- }