在Solaris 10上,我有一个多线程应用程序,我同时运行Posix线程。所有子线程都是使用pthread_create创建的,并且使用pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_JOINABLE);
可以连接。
当主线程终止时,系统似乎挂起,因为子线程中的控件想要恢复但线程可能不在那里。
在运行gdb
时,在主线程出来后显示:
procfs: fetch_registers, get_gregs line 3497, /proc/16304/lwp/2: No such file or directory.
如果我发出list
的{{1}}命令,它会显示子线程中的一些行,
并且gdb
命令显示某些线程仍然存在,即使主线程似乎已退出。
正如https://groups.google.com/forum/#!topic/comp.programming.threads/RKHLvBINYkE中所报道的,这可能是gdb中的一个错误还是一切都很好?
或者可能是因为可加入的线程与此有关,可能是它可以使用info threads
创建为分离线程?
当我在pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
之外尝试pstack -F PID
看看谁在做什么时,我会看到以下内容:
gdb