gpt4 book ai didi

xcode - 如何在 Mac OS X 上获取内存泄漏的行号堆栈跟踪?

转载 作者:行者123 更新时间:2023-12-01 08:26:51 24 4
gpt4 key购买 nike

我设法获得了 Xcode leaks在我的命令行 GCC Ada 程序中报告泄漏的工具(通过在末尾添加 delay 11.0;leaks 进行检查)然后

$ export MallocStackLogging=1
$ (./foobar &) && leaks foobar

这导致(摘录)
Process 52027: 18 nodes malloced for 2053 KB
Process 52027: 2 leaks for 32 total leaked bytes.
Leak: 0x1002000c0 size=16 zone: DefaultMallocZone_0x100175000 string '*'
Call stack: [thread 0x7fff70bbcca0]: | start | main | _ada_foobar | __gnat_malloc | malloc | malloc_zone_malloc
Leak: 0x1002000d0 size=16 zone: DefaultMallocZone_0x100175000 string 'T'
Call stack: [thread 0x7fff70bbcca0]: | start | main | _ada_foobar | __gnat_malloc | malloc | malloc_zone_malloc

这比没有好很多,但会随着行号得到显着改善。

我应该使用任何构建选项吗?如果 Ada 编译器(FSF GCC 4.6.0,不是来自 Apple)与 Xcode 集成会更好吗?

这是基于 10.6.7、Xcode 3.2.6 的 x86_64 构建。使用 -g 没有区别。

在调用堆栈中, mainmain()gnatmake 生成, _ada_foobar是实际发生泄漏的 Ada 程序。其他帧来自运行时系统。

最佳答案

好吧,这里的主要问题正是您拥有哪种编译器。您从 ACT 获得的 Gnat 版本带有链接库 addr2line.lib,可用于在运行时生成符号回溯。

您从 FSF 发行版获得的 Gnat 版本没有该库。但是,仍然有 Gnu 的“binutils”附带的 addr2line 程序。您确实可以在 Mac 设置中使用它,对吗?

如果您将十六进制地址输入该程序,它应该报告您想要的符号信息。您可能需要重新格式化您的 leaks输出一点让 addr2line 接受它。

关于xcode - 如何在 Mac OS X 上获取内存泄漏的行号堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6075703/

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