如何判断Linux二进制文件在没有源代码的情况下创建了多少个线程?

mer*_*011 5 c linux multithreading

假设我有一个没有源的通用二进制文件,我想确定它是串行运行还是生成多个线程.

有没有办法可以从linux命令行执行此操作?

Jon*_*art 4

首先安装strace.

$ yum install strace
Run Code Online (Sandbox Code Playgroud)

使用 strace 运行程序,并查找clonefork系统调用。这是一个我编写的程序的简单示例,该程序仅调用fork并返回。

$ strace ./a.out 

execve("./a.out", ["./a.out"], [/* 43 vars */]) = 0
brk(0)                                  = 0x74f000
...
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fb22b16da10) = 6567
exit_group(1)                           = ?
+++ exited with 1 +++
Run Code Online (Sandbox Code Playgroud)