Linux 找出由短时间运行的程序创建的线程数

Linux 找出由短时间运行的程序创建的线程数,linux,profiling,multithreading,pthreads,Linux,Profiling,Multithreading,Pthreads,我有一个运行速度足够快的程序。我想查看程序创建的线程数 ldd test 显示库pthread的使用。但是如何找出程序创建的线程数。我只能通过命令行访问运行程序的PC。 平台是linux。可能使用strace并捕获克隆调用 strace-f-e trace=克隆测试 它应该给出由测试创建的进程的指示。可能使用strace和catch调用克隆 strace-f-e trace=克隆测试 它应该给出由测试创建的进程的指示。使用LD_PRELOAD,您应该能够充分包装pthread_create,以

我有一个运行速度足够快的程序。我想查看程序创建的线程数

ldd test
显示库pthread的使用。但是如何找出程序创建的线程数。我只能通过命令行访问运行程序的PC。
平台是linux。

可能使用strace并捕获克隆调用

strace-f-e trace=克隆测试


它应该给出由测试创建的进程的指示。

可能使用strace和catch调用克隆

strace-f-e trace=克隆测试

它应该给出由测试创建的进程的指示。

使用LD_PRELOAD,您应该能够充分包装pthread_create,以便在每次输入它时记录到某个地方。然而,这种方法是有缺陷的,因为它可能在程序中引入或公开本来不会发生的竞争,可能导致创建更多或更少的线程

是否只是在程序中跟踪这一点,即如果调试生成不是一个选项?

使用LD\u PRELOAD,您应该能够充分包装pthread\u create,以便在每次输入时记录到某个位置。然而,这种方法是有缺陷的,因为它可能在程序中引入或公开本来不会发生的竞争,可能导致创建更多或更少的线程


只是在程序中跟踪这一点,即如果调试生成不是一个选项?

strace在系统上不存在。可能我可以复制64位版本的strace以及所需的共享库来尝试此功能。strace是一个非常有用的实用工具,可以跟踪应用程序进行的系统调用。应该很容易安装。我对答案进行了编辑,以反映一种更具体的方式来接听Clonets的电话。这是最好的解决方案。由于这是一台非生产机器,您可以安装strace。Strace随发行版一起提供。系统中不存在Strace。可能我可以复制64位版本的strace以及所需的共享库来尝试此功能。strace是一个非常有用的实用工具,可以跟踪应用程序进行的系统调用。应该很容易安装。我对答案进行了编辑,以反映一种更具体的方式来接听Clonets的电话。这是最好的解决方案。由于这是一台非生产机器,您可以安装strace。Strace随您的发行版一起提供。如果可执行文件是封闭源代码,或者像mpi这样的库正在为其实现创建线程,那该怎么办?这正是我试图使用的。当然,可以研究mpi源代码,但我想了解一般情况。如果可执行文件是封闭源代码呢?或者像mpi这样的库正在为其实现创建线程,这正是我试图使用的。当然,可以研究mpi源代码,但我想了解一般情况。