C++ 用于在massif工具中跟踪子进程的命令

C++ 用于在massif工具中跟踪子进程的命令,c++,valgrind,massif,C++,Valgrind,Massif,我正在Valgrind中使用massif工具。我需要跟踪子进程的堆内存。我找不到任何命令来获取子进程的堆内存。我的应用程序是一个demon服务器 在memcheck工具中,我可以使用 --track-children=yes 是否有任何方法可以使用massif跟踪子进程堆内存 该工具为所有子进程创建日志文件,但仅为主进程生成体量文件 valgrind \ --tool=massif \ --heap=yes \ --time-stamp=yes \ --time-unit=ms \ --max

我正在Valgrind中使用massif工具。我需要跟踪子进程的堆内存。我找不到任何命令来获取子进程的堆内存。我的应用程序是一个demon服务器

在memcheck工具中,我可以使用

--track-children=yes
是否有任何方法可以使用massif跟踪子进程堆内存

该工具为所有子进程创建日志文件,但仅为主进程生成体量文件

valgrind \
--tool=massif \
--heap=yes \
--time-stamp=yes \
--time-unit=ms \
--max-snapshots=1000 \
--detailed-freq=5 \
--log-file=../Valgrind_%p_massif.log \
--massif-out-file=../masssif_%p_output \
--xtree-memory=full \
<binary_name>
valgrind\
--工具=地块\
--堆=是\
--时间戳=是\
--时间单位=毫秒\
--最大快照数=1000\
--详细频率=5\
--日志文件=../Valgrind\uu%p\u massif.log\
--massif out file=../masssif\u%p\u输出\
--xtree内存=已满\
我希望将为所有子进程生成massif文件。但它只为主进程创建一个文件

valgrind \
--tool=massif \
--heap=yes \
--time-stamp=yes \
--time-unit=ms \
--max-snapshots=1000 \
--detailed-freq=5 \
--log-file=../Valgrind_%p_massif.log \
--massif-out-file=../masssif_%p_output \
--xtree-memory=full \
<binary_name>

上次访问时我检查了文件。这是主进程执行到等待请求的时间。

您缺少选项--trace children=yes


--跟踪子进程不是memcheck特定的选项,它是必须与任何valgrind工具一起使用的常规valgrind选项,如果您希望子进程在执行后也在valgrind下运行。

您缺少该选项--trace children=yes


--跟踪子进程不是memcheck特定的选项,它是必须与任何valgrind工具一起使用的常规valgrind选项,如果您希望子进程在执行后也在valgrind下运行。

谢谢。我添加了命令。它起作用了。为子进程生成的文件。但是massif会捕获内存占用,直到deamon服务器启动并侦听端口。在此之后,未捕获任何memry Usage详细信息。守护进程服务器是否正常终止?另外,我假设这个守护进程服务器作为一个普通用户运行(而不是作为root和/ot setuid运行)?守护进程服务器不会被终止。它以普通用户的身份运行。如果守护进程服务器没有终止,那么您无法保证massif何时会进行一些内存转储。您可以触发自己的massif输出文件,例如使用shell“vgdb快照”。请执行“vgdb帮助”以获取允许操作的列表。谢谢。将尝试使用vgdb。。当我使用pkill终止进程时,它也起了作用。但它不是一直在工作。谢谢。我添加了命令。它起作用了。为子进程生成的文件。但是massif会捕获内存占用,直到deamon服务器启动并侦听端口。在此之后,未捕获任何memry Usage详细信息。守护进程服务器是否正常终止?另外,我假设这个守护进程服务器作为一个普通用户运行(而不是作为root和/ot setuid运行)?守护进程服务器不会被终止。它以普通用户的身份运行。如果守护进程服务器没有终止,那么您无法保证massif何时会进行一些内存转储。您可以触发自己的massif输出文件,例如使用shell“vgdb快照”。请执行“vgdb帮助”以获取允许操作的列表。谢谢。将尝试使用vgdb。。当我使用pkill终止进程时,它也起了作用。但它不是一直在工作。