通过shell脚本

时间:2016-03-01 06:15:21

标签: linux shell heap valgrind 7zip

我正在使用valgrind来检查Linux上的归档/压缩工具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的可执行文件。

现在,如果我使用此命令运行valgrind来测试7za(基本上运行shell脚本)的内存使用情况,那么我只获得2KB的堆使用量。

valgrind 7za x file.7z

然而,如果我直接使用7za二进制文件,那么我的内存使用量大约为1MB,这看起来也是真实的:

valgrind /usr/local/lib/p7zip/7za x /home/z/Desktop/file.7z

类似地,当我构建代码时,在那里创建包含7za可执行文件的bin目录。如果我从那里运行它,那么我再次获得高和正确的内存使用。

我试图了解这两种方法的区别。为什么使用已安装的应用程序(通过剪切脚本运行)无法正确使用内存。

1 个答案:

答案 0 :(得分:1)

valgrind应调试ELF 64位或ELF 32位exectuable的内存相关问题。它不能与shell脚本一起使用。因此,您将无法使用shell脚本调试应用程序。