2017-02-18 95 views
0

我有一个父进程,其中分叉和execve子进程。我只想跟踪孩子的堆栈和堆栈使用情况。有人能告诉我如何?只跟踪子进程的堆和堆栈使用情况

我想用

valgrind --tool=massif --track-child=yes prog 

的,而是由地块生成的报告中包含的母公司的内存信息也。我只对孩子感兴趣,并且这也是高峰使用(堆和堆栈分开)

我想在Linux上这样做。

+0

你应该避开文字墙。代码应该格式化。阅读帮助,它很短。 –

回答

0

这可能是一种有点手动的做事方式。我可能会在孩子调用exec()之前用预定的测试值填充堆栈。这样,您可以回看堆栈和堆以检查更改的值。这是你正在寻找的,还是你想监视堆栈和堆,因为它们动态变化?

+0

当孩子调用execve()时,内存映射将被替换。所以我需要在子调用execve()之后做到这一点。另外,我希望有一个工具可以让它更快更可靠。我可以尝试这个解决方案,作为我想的最后一招。另外,我不确定malloc如何使用堆。它保留比使用更多的堆。我希望找到malloc所占用的全部堆,而不仅仅是应用程序实际使用的堆。 –