需要剖析用C++编写的守护进程,gprof说它需要终止进程来获取gmon.out。我想知道任何人有想法用ctrl-c来获取gmon.out?我想找出CPU周期的热点如何使用gprof来分析守护进程而不会正常终止它?
4
A
回答
2
需要剖析用C++编写的守护进程,gprof说它需要终止进程来获取gmon.out。
这符合调试守护程序进程的正常实践:提供一个开关(例如使用命令行选项),这会强制守护进程在前台运行。
我想知道任何人有想法得到与ctrl-c的gmon.out?
我不知道这样的选项。
虽然在gmon的情况下,call to exit()
should suffice:如果您例如打算测试说处理100K消息,您可以在代码中添加一个计数器递增每个处理的消息。当计数器超出限制时,只需致电exit()
即可。
您也可以尝试为一些未使用的信号(如SIGUSR1或SIGUSR2)添加处理程序,并从那里调用exit()
。我认为我没有亲身经历,也不能确定gmon能否在案件中正常工作。
我想找出CPU周期热点
我通常的做法是创建一个测试应用程序,使用相同的源代码的程序,但是不同main()
,我模拟精确的情况下(通常用命令行切换很多场景)我需要调试或测试。为此,我通常会创建一个包含整个模块的静态库 - 除了文件main()
- 并将测试应用程序与静态库链接起来。 (这有助于保持Makefiles的整洁。)
我更喜欢单独的测试应用程序来攻击代码,因为特别是在性能测试的情况下,我有时可以绕过或减少对昂贵的I/O(或数据库访问)的调用歪曲剖析器的采样并使输出无效。
0
0
如果要使守护进程尽可能快,可以使用lsstack和this technique。它会告诉你什么是需要时间,你可以删除。如果你正在寻找热点,你可能正在寻找错误的东西。通常情况下,函数调用并不是绝对需要的,那些函数调用不会显示为热点,但它们会显示在堆栈中。
另一个不错的选择是RotateRight/Zoom。
相关问题
- 1. 守护进程自动终止
- 2. 多进程守护进程不会终止在父进程退出
- 3. Linux守护进程停止启动 - 停止守护进程
- 4. 临时停止守护进程的持久进程而不会将其杀死
- 5. 停止Erlang守护进程
- 6. 如何正常终止进程?
- 7. Memcached守护进程是否可以释放()未使用的内存,而不终止进程?
- 8. Golang守护进程够程不会停止执行
- 9. 自定义的Linux守护进程将不会停止使用“服务停止”
- 10. 使用python,守护进程
- 11. Ruby守护进程不会启动
- 12. 停止主管进程而不会终止其他子进程
- 13. 用C停止守护进程
- 14. Linux守护进程不分叉?
- 15. 如何在Spring-Boot中启动(并最终停止)守护进程线程?
- 16. 从同一个脚本中终止其他bash守护进程
- 17. 使用GNU屏幕而不是守护进程
- 18. 启动 - 停止守护进程和Python
- 19. Nginx守护进程停止失败
- 20. 如何使emacsclient找到它执行的emacs守护进程
- 21. 扭曲挂起,而守护进程
- 22. Linux守护进程
- 23. Python守护进程
- 24. iphone守护进程
- 25. Php守护进程经常崩溃
- 26. mongrel_rails集群::开始不起作用,找守护进程/守护进程
- 27. 用Clojure/JVM守护进程
- 28. 如何防止守护进程线程挂起到断点?
- 29. Python多重处理:父进程终止时终止守护进程的更好实现是什么?
- 30. 守护程序线程不止一个?
感谢您的意见,并且我也使用了类似的想法: http://www.linuxquestions。org/questions/linux-software-2/gprof-profile-an-application-782385/ 但是对我而言,守护进程无法优雅地退出,所以当退出核心转储时,没有gmon.out生成 我会尽力提取可疑的暗示来独立测试 – Jingle 2010-08-13 03:21:36
我建议先优先考虑在关机期间修复崩溃。这个问题会阻止许多运行时分析工具正常工作。应该很容易销售给管理层。 – Dummy00001 2010-08-13 09:41:52