在Linux上,我使用val差制检查存档/压缩工具p7zip (在Windows上为7zip)的堆分配。我从这里下载了代码(https://sourceforge.net/projects/p7zip/files/p7zip/)并构建了它(make all_test),然后安装了它(./install.sh)。
安装后,在/usr/local/bin创建一个名为'7Za‘的shell脚本,其内容如下:
#! /bin/sh
"/usr/local/lib/p7zip/7za" "$@"另外,在指定的路径/usr/local/lib/p7zip/7za上,放置7za的可执行文件。
现在,如果我使用这个命令运行val差使来测试7za的内存使用情况(这基本上是运行shell脚本),那么我只能得到2KB的堆使用量。
valgrind 7za x file.7z然而,如果我直接使用7za二进制文件,那么大约1MB的内存使用量就会很高,这看起来也是真实的:
valgrind /usr/local/lib/p7zip/7za x /home/z/Desktop/file.7z类似地,当我构建代码时,会创建一个bin目录,其中包含7za可执行文件。如果我从那里运行它,那么我再次得到高和正确的内存使用。
我试图理解这两种方法的不同之处。为什么使用安装的应用程序(通过sheel脚本运行)没有给出正确的内存使用。
发布于 2016-03-01 10:22:37
对于ELF 64位或ELF 32位可执行项,val研应该调试与内存相关的问题.它不能与shell脚本一起使用。因此,您将无法使用shell脚本调试应用程序。
https://stackoverflow.com/questions/35715924
复制相似问题