1

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

在 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>

我希望将为所有子进程生成地块文件。但它只为主进程创建一个文件。

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

4

1 回答 1

1

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

--trace-children 不是 memcheck 特定的选项,它是一个通用的 valgrind 选项,必须与任何 valgrind 工具一起使用,如果您希望子进程也在 exec 之后在 valgrind 下运行。

于 2019-08-09T22:15:02.420 回答