【发布时间】:2017-08-15 22:44:40
【问题描述】:
作为参考,这是在 macOS Sierra (10.12.6) 上。
例如,在终端中,我们可以执行以下命令列出当前shell加载的库:
$ lsof -p $$
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 57772 kevin cwd DIR 1,4 10370 89692838 /usr/lib
bash 57772 kevin txt REG 1,4 969276 101782360 /usr/local/Cellar/bash/4.4.12/bin/bash
bash 57772 kevin txt REG 1,4 698896 119314050 /usr/lib/dyld
bash 57772 kevin txt REG 1,4 662274048 120217216 /private/var/db/dyld/dyld_shared_cache_x86_64h
bash 57772 kevin 0u CHR 16,4 0t566809 1083 /dev/ttys004
bash 57772 kevin 1u CHR 16,4 0t566809 1083 /dev/ttys004
bash 57772 kevin 2u CHR 16,4 0t566809 1083 /dev/ttys004
bash 57772 kevin 255u CHR 16,4 0t566809 1083 /dev/ttys004
请注意,此处未显示系统库。但是,vmmap 确实确认我的 shell 确实在使用(例如)系统的 C++ 标准库:
$ vmmap $$ | grep libc++
__TEXT 00007fffb9a64000-00007fffb9abb000 [ 348K 204K 0K 0K] r-x/r-x SM=COW /usr/lib/libc++.1.dylib
__TEXT 00007fffb9abb000-00007fffb9ae5000 [ 168K 148K 0K 0K] r-x/r-x SM=COW /usr/lib/libc++abi.dylib
__DATA 00007fffc3b78000-00007fffc3b80000 [ 32K 24K 16K 4K] rw-/rwx SM=COW /usr/lib/libc++.1.dylib
__DATA 00007fffc3b80000-00007fffc3b82000 [ 8K 4K 0K 4K] rw-/rwx SM=COW /usr/lib/libc++abi.dylib
但是,在我的 Ubuntu 16.04 VM 上,我确实看到了lsof 输出中显示的系统库的使用情况——例如libc 在这里报告:
$ lsof -p $$ | grep libc
bash 2740 kevin mem REG 8,1 1868984 2883654 /lib/x86_64-linux-gnu/libc-2.23.so
我可以在 macOS 上做些什么来确保lsof 报告系统库吗? (是否有一些额外的标志我应该传递给lsof,或者还有其他原因导致这里没有报告系统库?)
【问题讨论】:
标签: macos