Debug POSIX 多线程

Debug 多线程问题通常会遇到,死锁,资源释放出错,进程不能正常退出等。

1. 死锁的问题可以通过加debug message 来解决。

2. 后面两个问题可能会用到一些下面到方式。

启动每一个线程时输出线程ID, 在结束时根据线程ID判断哪个线程没有退出。

#gettid

[cpp]

  1. pid_t gettid(void)  
  2. {  
  3.     return syscall(SYS_gettid);  
  4. }  



#running task

[objc]
  1. void running_task(void)  
  2. {  
  3.     char cmd[32];  
  4.     memset(cmd, 0sizeof cmd);  
  5.     printf(“main pid: %d\n”, getpid());  
  6.     sprintf(cmd, “ls /proc/%d/task”, getpid());  
  7.     system(cmd);  
  8.  }  

标签