Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.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上,我有一个C++应用程序,它使用DLOpene()来加载一些共享库,但是我怀疑,加载的共享库的版本不是我期望的,因为我的调试跟踪代码没有执行。_C++_Linux_Runtime_Dlopen_Ldd - Fatal编程技术网

如何检查正在运行的进程以查看它正在使用哪些共享库? Linux上,我有一个C++应用程序,它使用DLOpene()来加载一些共享库,但是我怀疑,加载的共享库的版本不是我期望的,因为我的调试跟踪代码没有执行。

如何检查正在运行的进程以查看它正在使用哪些共享库? Linux上,我有一个C++应用程序,它使用DLOpene()来加载一些共享库,但是我怀疑,加载的共享库的版本不是我期望的,因为我的调试跟踪代码没有执行。,c++,linux,runtime,dlopen,ldd,C++,Linux,Runtime,Dlopen,Ldd,是否有方法检查正在运行的进程以查询它当前打开的所有共享库以及每个库的路径?换句话说,类似于ldd的东西,但可以在运行的可执行文件上工作,并列出运行时加载的库。如果您想知道程序已打开的库文件,可以尝试pmap。 例如,如果我们想知道bash process 3860已打开的库,结果可能是: 3860: bash 08048000 880K r-x-- /bin/bash 08124000 4K r---- /bin/bash 08125000 20K rw---

是否有方法检查正在运行的进程以查询它当前打开的所有共享库以及每个库的路径?换句话说,类似于ldd的东西,但可以在运行的可执行文件上工作,并列出运行时加载的库。

如果您想知道程序已打开的库文件,可以尝试pmap。 例如,如果我们想知道bash process 3860已打开的库,结果可能是:

3860:   bash
08048000    880K r-x--  /bin/bash
08124000      4K r----  /bin/bash
08125000     20K rw---  /bin/bash
0812a000     20K rw---    [ anon ]
099ae000    348K rw---    [ anon ]
b715c000     44K r-x--  /lib/i386-linux-gnu/libnss_files-2.15.so
b7167000      4K r----  /lib/i386-linux-gnu/libnss_files-2.15.so
b7168000      4K rw---  /lib/i386-linux-gnu/libnss_files-2.15.so
b7169000     88K r-x--  /lib/i386-linux-gnu/libnsl-2.15.so
b717f000      4K r----  /lib/i386-linux-gnu/libnsl-2.15.so
b7180000      4K rw---  /lib/i386-linux-gnu/libnsl-2.15.so
b7181000      8K rw---    [ anon ]
b7183000     28K r-x--  /lib/i386-linux-gnu/libnss_compat-2.15.so
b718a000      4K r----  /lib/i386-linux-gnu/libnss_compat-2.15.so
b718b000      4K rw---  /lib/i386-linux-gnu/libnss_compat-2.15.so
b71a1000      4K r----  /usr/lib/locale/locale-archive
b71a2000   1428K r----  /usr/lib/locale/locale-archive
b7307000   2048K r----  /usr/lib/locale/locale-archive
b7507000      4K rw---    [ anon ]
b7508000   1676K r-x--  /lib/i386-linux-gnu/libc-2.15.so
b76ab000      8K r----  /lib/i386-linux-gnu/libc-2.15.so
b76ad000      4K rw---  /lib/i386-linux-gnu/libc-2.15.so
b76ae000     16K rw---    [ anon ]
b76b2000     12K r-x--  /lib/i386-linux-gnu/libdl-2.15.so
b76b5000      4K r----  /lib/i386-linux-gnu/libdl-2.15.so
b76b6000      4K rw---  /lib/i386-linux-gnu/libdl-2.15.so
b76b7000    112K r-x--  /lib/i386-linux-gnu/libtinfo.so.5.9
b76d3000      8K r----  /lib/i386-linux-gnu/libtinfo.so.5.9
b76d5000      4K rw---  /lib/i386-linux-gnu/libtinfo.so.5.9
b76d8000     28K r--s-  /usr/lib/i386-linux-gnu/gconv/gconv-modules.cache
b76df000     40K r-x--  /lib/i386-linux-gnu/libnss_nis-2.15.so
b76e9000      4K r----  /lib/i386-linux-gnu/libnss_nis-2.15.so
b76ea000      4K rw---  /lib/i386-linux-gnu/libnss_nis-2.15.so
b76eb000      8K rw---    [ anon ]
b76ed000      4K r-x--    [ anon ]
b76ee000    128K r-x--  /lib/i386-linux-gnu/ld-2.15.so
b770e000      4K r----  /lib/i386-linux-gnu/ld-2.15.so
b770f000      4K rw---  /lib/i386-linux-gnu/ld-2.15.so
bfbbf000    132K rw---    [ stack ]
 total     7152K

希望它能对你有所帮助。

试试
lsof-p\u进程\u id\u
K以下是完整的答案。必须通过GDB运行一个程序才能让它保持足够长的生存时间,但pmap完成了这项工作。谢谢