gpt4 book ai didi

c++ - 如何使用 gprof 分析守护进程而不优雅地终止它?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:13:30 25 4
gpt4 key购买 nike

需要分析一个用 C++ 编写的守护进程,gprof 说它需要终止进程以获取 gmon.out。我想知道是否有人有想法通过 ctrl-c 获取 gmon.out?我想找出cpu周期的热点

最佳答案

Need to profile a daemon written in C++, gprof says it need to terminate the process to get the gmon.out.

这符合调试守护进程的常规做法:提供一个开关(例如,使用命令行选项)强制守护进程在前台运行。

I'm wondering anyone has ideas to get the gmon.out with ctrl-c?

我不知道有这样的选项。

虽然在 gmon 的情况下,call to exit() should suffice :例如,如果您打算测试说处理 100K 条消息,您可以在代码中添加一个计数器,该计数器在每条处理过的消息上递增。当计数器超过限制时,只需调用 exit()

您还可以尝试为一些未使用的信号(如 SIGUSR1 或 SIGUSR2)添加一个处理程序,并从那里调用 exit()。以为我没有个人经验,不能确定 gmon 在这种情况下是否能正常工作。

I want to find out the hot spot for cpu cycle

我通常的做法是创建一个测试应用程序,使用与守护程序相同的源代码但不同的 main() 我在其中模拟精确的场景(通常使用命令行切换许多场景)我需要调试或测试。为此,我通常会创建一个包含整个模块的静态库 - 除了带有 main() 的文件 - 并将测试应用程序与静态库链接起来。 (这有助于保持 Makefile 整洁。)

我更喜欢单独的测试应用程序来破解代码内部,因为特别是在性能测试的情况下,我有时可以绕过或减少对昂贵的 I/O(或数据库访问)的调用,这通常会扭曲分析器的采样并使输出无用.

关于c++ - 如何使用 gprof 分析守护进程而不优雅地终止它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3465648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com