kum*_*mar 8 sockets linux multithreading
我有一个进程,其中多个线程打开多个套接字连接.我想查看此信息并映射哪个线程已打开哪个套接字端口.
lsof -i和netstatcommand给出进程ID,但无法显示线程ID.是否有打印此信息的命令?
正如 MarkR 所建议的,您需要从启动时使用strace:
strace -fp <pid>
Run Code Online (Sandbox Code Playgroud)
上面的命令将显示每个线程的系统调用,如 open()、read()、recv() 等,以及使用的描述符:
[pid 428] close(36)
Run Code Online (Sandbox Code Playgroud)
隔离线程后,您可以附加到进程并使用以下命令找出确切的线程
gdb attach <pid>
Run Code Online (Sandbox Code Playgroud)
或者,如果您在进程中设置了线程名称,请使用
ps -eL
Run Code Online (Sandbox Code Playgroud)
找出线程的友好名称。