需要分析用 C++ 编写的守护进程,gprof 说它需要终止进程以获取 gmon.out。我想知道有人有使用 ctrl-c 获取 gmon.out 的想法吗?我想找出cpu周期的热点
需要分析一个用C++编写的守护进程,gprof说它需要终止进程才能获取gmon.out。
这符合调试守护进程进程的正常做法:提供一个开关(例如使用命令行选项),该开关将强制守护进程在前台运行。
我想知道有人有想法用 ctrl-c 获取 gmon.out 吗?
我不知道有这样的选择。
尽管在 gmon 的情况下,调用 toexit()就足够了:例如,如果您打算测试说处理 100K 消息,您可以在代码中添加一个计数器,在每个处理的消息上递增。当计数器超过限制时,只需调用exit()。
您还可以尝试为某些未使用的信号(例如 SIGUSR1 或 SIGUSR2)添加处理程序并exit()从那里调用。我认为我没有个人经验,无法确定 gmon 在这种情况下能否正常工作。
我想找出cpu周期的热点
我通常的做法是创建一个测试应用程序,使用与守护程序相同的源代码,但main()在模拟需要调试或测试的精确场景(通常使用命令行切换许多场景)时有所不同。为此,我通常创建一个包含整个模块(除了文件)的静态库main(),并将测试应用程序与静态库链接。(这有助于保持 Makefile 整洁。)
我更喜欢单独的测试应用程序而不是侵入代码内部,因为特别是在性能测试的情况下,我有时可以绕过或减少对昂贵的 I/O(或数据库访问)的调用,这通常会扭曲探查器的采样并使输出变得无用。
| 归档时间: |
|
| 查看次数: |
5676 次 |
| 最近记录: |