我有一个进程,其中多个线程打开多个套接字连接。我想查看此信息并映射哪个线程已打开哪个套接字端口。
lsof -i
和netstat
命令提供进程ID,但无法显示线程ID。是否有打印此信息的命令?
答案 0 :(得分:12)
除非你在这个过程中做过(),否则。
一旦文件描述符打开,它就“同时”属于进程中的所有线程(就内核而言),你无法看到哪个线程打开它。
答案 1 :(得分:1)
正如MarkR建议的那样,您需要在启动时使用 strace :
strace -fp <pid>
上面的命令将显示每个线程系统调用,如open(),read(),recv()等,以及使用的描述符:
[pid 428] close(36)
隔离线程后,您可以附加到进程并使用
找出确切的线程gdb attach <pid>
或者,如果您在流程中设置了线程名称,请使用
ps -eL
找出该帖子的友好名称。