gpt4 book ai didi

c - 跟踪精度

转载 作者:太空宇宙 更新时间:2023-11-04 11:31:36 24 4
gpt4 key购买 nike

我正在尝试为守护进程编写一个插件,现在我正处于最后阶段。所以我想到了 mtrace 来寻找内存泄漏,因为我没有看到启动 valgrind 实例的任何可能方式(我没有运行实际的守护进程,我运行一个启动进程来检查一些配置文件,然后启动守护进程)。

因此,当我查看来自 mtrace 的日志时,我看到了很多非常不准确的信息。例如,它说 index += UNIT 是一个永远不会释放的内存分配,还有很多类似的东西。

我正在为 mtrace 运行以下命令:

mtrace ./a.out 内存 > raw.log;猫原始日志 | tr -s """"| cut -d""-f4 > err.log;猫错误日志 | addr2line -e a.out > fin.log

关于为什么我得到完全无用的输出有什么想法吗?

P.S.: a.out 编译时带有所有调试标志

最佳答案

我认为问题出在 addr2line 上。
您应该尝试阅读原始的 raw.log,看看它是否有意义。
采取一个可疑的分配,在原始日志中找到它,运行 objdump -lrd a.out 并找到装配线。它应该是对 malloc 的调用。如果是 addr2line 的问题,如果不是,则问题是 mtrace 的问题。

一些可能的陷阱:
1. 不使用-g编译a.out
2. 运行一个a.out 并将另一个a.outaddr2line
3. 在错误版本的源代码中搜索你得到的行号。

附言你没有像 #define UNIT (malloc(1000),7) 这样的东西吧?

关于c - 跟踪精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10987930/

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