当前位置: 首页 > 面试题库 >

如何检查给定进程在运行时加载了哪些共享库?

祁绪
2023-03-14
问题内容

有没有办法检查正在运行的进程在使用哪些库?

更具体地说,如果程序使用dlopen加载某些共享库,则readelf或ldd不会显示它。是否有可能从正在运行的进程中获取该信息?如果是,怎么办?


问题答案:

其他人在正确的道路上。这有几种方法。

cat /proc/NNNN/maps | awk '{print $6}' | grep '\.so' | sort | uniq

或者,使用strace:

strace CMD.... 2>&1 | grep -E '^open(at)?(.*\.so'

这两个都假定共享库的路径中的某个位置带有“
.so”,但是您可以对其进行修改。第一个给出了相当漂亮的输出,只是一个库列表,每行一个。第二个库将在打开库时继续列出库,这很好。

当然lsof

lsof -p NNNN | awk '{print $9}' | grep '\.so'


 类似资料:
  • 本文向大家介绍如何检查在Ubuntu 16.04中启用/加载了哪些Apache模块,包括了如何检查在Ubuntu 16.04中启用/加载了哪些Apache模块的使用技巧和注意事项,需要的朋友参考一下 Apache是一个免费的开放式供应程序。它在所有Web服务器上运行67%。它快速,无风险且舒适。它可能是极端定制的,可以通过利用扩展和模块来满足许多同类环境的需求。 要安装apache,请使用以下命令

  • 问题内容: 谁能告诉我如何对共享库进行运行时调试? 我需要在运行时调试共享库中的一个函数,但另一个程序会调用它。如何使用共享库执行类似dbx的操作? 我在AIX上使用dbx。我想做的是gdb比dbx好吗? 问题答案: 您只需要使用可执行文件调用gdb(无论是您的文件还是第三方文件都没有关系)。这是一个示例,其中我调试 ls 命令并在(共享) c库中 设置断点。此示例使用了gdb 6.8,它支持延迟

  • 问题内容: 作为构建穷人看门狗并确保应用程序崩溃的一种方法(直到我弄清原因),我需要编写一个PHP CLI脚本,该脚本将由cron每5百万次运行一次,以检查该进程仍在运行。 基于此页面,我尝试了以下代码,但是即使我使用虚假数据对其进行调用,它也始终返回True: 接下来,我尝试了这段代码 … …但是没有达到我的期望: FWIW,此脚本与PHP 5.2.5的CLI版本一起运行,并且操作系统为uCli

  • 单击显示Hello消息应加载主页上显示“Hello”消息的Hello组件。 单击“显示产品1”应加载对其进行自定义,使其显示“产品1工作!”消息 单击“显示产品2”应再次加载,但这次对其进行自定义,以显示“产品2工作!”。 如何实现此功能?以下是Stackblitz项目的链接: https://stackblitz.com/edit/angular-ivy-qkparn?file=src/app/

  • 我有一个CMACE项目,它的下一个结构是: 输出树为: 如果我在linux下编译程序,所有的工作都很完美,但是当我在Windows下做的时候,编译很好,但是app.exe不执行;我得到下一个错误: 我怀疑不要链接internal.cpp,因为当我将它的过程移到internal.h中时,就可以很好地工作。 有什么需要帮忙的吗? 以下是文件:root::cmakelists.txt app::cmak

  • 问题内容: [Updated1]我有一个外壳,它将在某些功能中更改TCP内核参数,但是现在我需要使该外壳在Docker容器中运行,这意味着,该外壳需要知道它在容器内运行并停止配置内核。 现在我不确定如何实现,这是容器内部的内容: 我可以使用上面的任何标志来确定此过程是否在容器内运行吗? [Updated2]:我还注意到确定进程是否在lxc/Docker中运行,但在这种情况下似乎不起作用,我容器中的