在我的 Ubuntu LTS 系统上,我有一个手册页用于记忆:
$ man memusage
MEMUSAGE(1) Linux user manual MEMUSAGE(1)
NAME
memusage - profile memory usage of a program
...
然而,当我尝试运行 memusage 时,却找不到它。
在我的系统上搜索出现的次数得到如下结果:
$ dpkg -S memusage
libc6-i386: /lib32/libmemusage.so
manpages: /usr/share/man/man1/memusage.1.gz
libc6-dbg:amd64: /usr/lib/debug/lib/x86_64-linux-gnu/libmemusage.so
libc6:i386: /lib/i386-linux-gnu/libmemusage.so
libreoffice-script-provider-bsh: /usr/lib/libreoffice/share/Scripts/beanshell/MemoryUsage/memusage.bsh
libc6:amd64: /lib/x86_64-linux-gnu/libmemusage.so
manpages: /usr/share/man/man1/memusagestat.1.gz
为什么有 memusage 的手册页,但没有命令本身?
它是不是只适用于 32 位 Ubuntu,而不适用于 64 位 Ubuntu?
注意:gmemusage(Ubuntu 建议的)是完全不同的东西。
PS:有没有其他方法可以让我找到程序中的分配热点?我想看看代码中所有内存都去了哪里。
操作系统:Ubuntu 18.04.4 LTS
答案1
memusage
包含在libc-devtools
套餐内自版本 2.31-8 起。此功能在 Ubuntu 21.04 及更高版本、Debian 11 及更高版本以及衍生版本中可用。
答案2
该脚本不包含在二进制包中,但存在于源代码形式。
要从源代码编译它,请使用:
sudo apt-get install git
sudi apt-get build-dep libc6
cd ~/Downloads
apt-get source libc6
cd glibc-2.27/
dpkg-buildpackage -uc -us
然后转到malloc目录并尝试在此处找到脚本:
cd malloc
ls memusage*
可选择将其移动到/usr/local/bin
。