我有一个程序,它启动一个libmicrohttpd网络服务器(管理自己的线程),然后调用"暂停"在主线程中,以便整个程序不会退出。
我正试图对这个程序进行分析,但是一旦我进入"暂停"打电话,我不能从strace获得任何进一步的输出。 (尽管事实上很多IO,因此系统调用正在后台进行。)
有任何建议如何解决这个问题? (我已经尝试过-e trace=\!pause
- 但这似乎只是抑制了输出。我仍然可以解决问题。
(如果重要的话,我正在运行内核版本为3.14.51的debian衍生版。)
strace命令:strace -ttT -p 28948
答案 0 :(得分:0)
问题实际上是strace只跟踪主线程中的调用。 (它与pause
无关 - 这只是主线程中的最后一个系统调用。)
修复方法是:
strace -ttffT -p 28948
(文档根本不清楚-ff
适用于多线程
以及多进程应用程序。)