Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 通过shell脚本运行应用程序时,Valgrind未显示正确的堆使用情况_Linux_Shell_Heap_Valgrind_7zip - Fatal编程技术网

Linux 通过shell脚本运行应用程序时,Valgrind未显示正确的堆使用情况

Linux 通过shell脚本运行应用程序时,Valgrind未显示正确的堆使用情况,linux,shell,heap,valgrind,7zip,Linux,Shell,Heap,Valgrind,7zip,我正在使用valgrind检查Linux上存档/压缩工具p7zip(Windows上为7zip)的堆分配。我从这里下载代码()并构建它(进行所有测试),然后安装它(./install.sh) 安装后,将在/usr/local/bin处创建一个名为“7Za”的shell脚本,其内容如下: #! /bin/sh "/usr/local/lib/p7zip/7za" "$@" 另外,在指定的路径/usr/local/lib/p7zip/7za上放置7za的可执行文件 现在,如果我使用这个命令运行va

我正在使用valgrind检查Linux上存档/压缩工具p7zip(Windows上为7zip)的堆分配。我从这里下载代码()并构建它(进行所有测试),然后安装它(./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
类似地,当我构建代码时,会在那里创建一个bin目录,其中包含7za可执行文件。如果我从那里运行它,那么我会再次获得高且正确的内存使用率


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

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