Google Performance Tool上的CPU分析器(gperftools) - 使用NO OUTPUT ISSUE进行共享库处理

时间:2016-10-05 03:41:32

标签: google-perftools

我在服务器上有一个进程。我的进程使用一个共享库,在linux后台运行。我在gperftool中使用CPU profiler来检查函数。步骤如下:

我的应用中

1。

main ()
{
  ProfilerStart("dump.txt");
    ...code..
  ProfilerFlush();
  ProfilerStop();
return 0;
}

2. :CPUPROFILE_FREQUENCY = 1000000 LD_LIBRARY_PATH = / usr / local / lib / libprofiler.so CPUPROFILE = dump.txt ./a.out

3。 pprof --text a.out dump.txt

我检查了其他进程的步骤(不使用共享库),没关系。

问题: dump.txt文件只是保持不变的文件大小(8kb或9kb),尽管在2或3小时内长时间运行但无法显示输出(应用程序接收消息)来自客户)。我认为因为我的应用程序使用共享库,这里有些不对劲,完全不清楚这一点。

你能解释一下发生了什么吗?任何解决方案?

非常感谢,

1 个答案:

答案 0 :(得分:0)

部分LD_LIBRARY_PATH=/usr/local/lib/libprofiler.so在您的投放中不正确。

根据文件http://goog-perftools.sourceforge.net/doc/cpu_profiler.html

  

要将CPU探查器安装到可执行文件中,请将-lprofiler添加到可执行文件的链接时步骤。 (它也可能在运行时使用LD_PRELOAD添加到分析器中,但不一定要推荐。)

您可以将libprofiler添加到您的应用程序的-lprofiler链接步骤,如

gcc -c myapp.c -o myapp.o
gcc myapp.o mystaticlib.a -Lmypath -lmydynamiclib -lprofiler -o myapp

或将其添加到环境变量LD_PRELOAD(而不是LD_LIBARY_PATH):

LD_PRELOAD=/usr/lib/libprofiler.so ./myapp

当正确使用gperftools的cpu profiler时,它会在应用程序终止时打印有关事件计数和输出文件大小的信息。