gpt4 book ai didi

linux - 在 Mozilla Firefox Web 浏览器中拦截动态内存分配调用

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:23 26 4
gpt4 key购买 nike

有没有办法在 Mozilla Firefox 执行期间拦截“malloc、realloc、calloc 和 free”请求的操作?我想做一些类似使用 LD_PRELOAD 方法的事情,例如,可以在某些使用 glibc 的应用程序中拦截内存分配操作。我想对这些操作进行跟踪。

如果可能的话,我想在现代版本的 Mozilla Firefox 中这样做。例如:

Latest version: FIREFOX_AURORA_54

最佳答案

据我所知,如果您只需要trace 库调用而不是以某种重要的方式拦截它们,您可以使用ltrace。 .不过,我不熟悉此实用程序,因此我的示例可能并不完全正确。

您可以像 ltrace -e malloc+free gcc 那样运行它,它会跟踪 gcc 对这两个函数的调用。但至少在我的系统上,这种简单的方法不适用于 Firefox:

$ ltrace -e malloc+free firefox
"/usr/bin/firefox" is not an ELF file

发生这种情况是因为 /usr/bin/firefox 只是一个启动真正二进制文件的 shell 脚本。所以我们需要这样使用命令(当然要指定你需要跟踪的函数):

$ ltrace -f -e malloc+free sh /usr/bin/firefox

首先,您以 sh/usr/bin/firefox 运行脚本,然后您需要指定 -f 选项,因为您对调用不感兴趣外壳,但由其子进程。不过,您将需要按 PID 过滤输出,因为这里我们有整个进程树完成的调用。

请注意,此输出可能不完全准确:

  • 我希望自从 2013 年最新的 ltrace 发布以来,ltrace 不知道的动态链接器没有发生任何重大变化,但我不确定
  • 以防某些 libc 函数调用 f.e. malloc,这个调用可能是静态执行的。在那种情况下,您可能不会在输出中看到它
  • 对于像 alloca 这样的函数,我想根本没有执行任何库调用
  • 等等

关于linux - 在 Mozilla Firefox Web 浏览器中拦截动态内存分配调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43958263/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com