在命令行上使用OSX泄漏C程序?

时间:2013-04-01 16:16:36

标签: c xcode macos

有人能给我任何简单的语法来运行OSX的leaks工具来检测已编译的C程序中的内存泄漏吗?我在10.8,所以我遇到了valgrind的严重兼容性问题。

我读到的关于XCode Leaks / Instruments的大部分内容都涉及到XCode环境 - 而不是我想为我的C程序做的事情。

有没有办法可以从命令行对已编译的C程序运行泄漏?如果没有,在等待valgrind的更新版本时是否还有其他可靠的替代方案,或者我是否必须使用Linux发行版设置VM?

2 个答案:

答案 0 :(得分:5)

使用iprofiler工具(manpage)将其添加到命令行的开头:

iprofiler -leaks -d $HOME/tmp

(其中$HOME/tmp是您希望编写结果的地方)。

然后,您可以使用 Instruments 打开生成的.dtps捆绑包,以检查是否存在泄漏(或iprofiler执行的其他4项检查。

如果您使用 clang ,则使用-O3-g进行编译(因为 clang 不支持-pg

答案 1 :(得分:0)

这似乎可行(macOS Catlina 10.15.6):

cd /usr/local/lib
ln -s $(xcode-select -p)/usr/lib/libLeaksAtExit.dylib
leaks --atExit -- ./a.out

完成后最好删除符号链接。

参考: