有没有办法通过API从C/C++使用valgrind?

问题描述 投票:0回答:1

我想编写工具,收集有关可执行文件的不同运行时信息,包括堆信息。 Valgrind 是获取此类信息的完美工具。我想要获取的关键信息是

total heap usage: X allocs, X frees, X bytes allocated
。但是,除了使用
popen
执行
"valgrind --trace-children ./executable"
并解析 stdout 的输出之外,我还没有找到其他使用它的方法。理想情况下,我想要这样的东西:

#include "valgrind.h"

int main() {
    valgrind::valgrind_results res = valgrind::valgrind_memcheck(
        "path/to/executable", 
        std::vector<std::string>{"--trace-children", "--other-options"}
    );
    std::cout << res.allocs << res.frees << res.bytes_allocated << std::endl;
    return 0;
}

这样的事情存在吗?

c++ valgrind
1个回答
0
投票

考虑

--xml
选项(这将使解析更容易,尽管对于 C++ 来说可能不太有利)和
--xml-socket
--log-socket
选项,这可以更方便地提供数据。

© www.soinside.com 2019 - 2024. All rights reserved.