- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试运行我的程序,这需要一个库位于LD_PRELOAD
环境变量,带 valgrind。当我这样做时,我得到以下错误:
ERROR: ld.so: object '/path/to/lib/libLIBRARY.so' from LD_PRELOAD cannot
be preloaded: ignored.
但是,如果我要运行程序WITHOUT valgrind,它很乐意使用LD_PRELOAD
ed 库。
为什么会这样?有办法解决吗?
(P.S.系统是64位科学linux 5,我相信)
最佳答案
如果 valgrind 是 64 位的,而共享库和应用程序都是 32 位的,就会发生这种情况。 valgrind 本身无法加载库,但它应该为应用程序本身加载。
编辑:哦,还有...您真的不应该将 LD_PRELOAD 用于您自己的程序所需的库,仅用于调试或覆盖库。相反,在可执行文件中嵌入一个 rpath/runpath。
关于linux - Valgrind 和 LD_PRELOAD - 无法预加载对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7046622/
我的代码如下:preload.c,内容如下: #include #include int __attribute__((constructor)) main_init(void) {
我尝试使用 LD_PRELOAD 来 Hook sprintf function ,所以我将打印到缓冲区的结果: #define _GNU_SOURCE #include #include int
实际问题 我有一个默认情况下使用 EGL 和 SDL 1.2 分别处理图形和用户输入的可执行文件。使用 LD_PRELOAD ,我已经用 GLFW 替换了两者。 这正常工作,除非用户安装了 GLFW
我用 C 代码编写二进制文件。如何防止其他用户在我的二进制文件上使用 LD_PRELOAD? 使用LD_PRELOAD时,是否有任何信号可以让我处理并中断程序? 如果我静态编译二进制文件,我听说 LD
我用 C 代码编写二进制文件。如何防止其他用户在我的二进制文件上使用 LD_PRELOAD? 使用LD_PRELOAD时,是否有任何信号可以让我处理并中断程序? 如果我静态编译二进制文件,我听说 LD
这可能会很尴尬: 我在其他项目中使用库预加载,但我无法让这个最小的示例工作: weakref.h: void f_weak() __attribute__((weak)); weakref.c: #i
目前,我有一个应用程序可以: execlp(java_exec、java_args等); 启动 jar 文件。 有没有办法将其前置 LD_PRELOAD="mylib.so" ? 我找不到告诉 exe
我有一个 LD_PRELOAD 文件。在什么操作系统和条件下,我应该编译这个预加载以在大多数系统 (Unix/Linux) 上工作。最想要的是 FreeBSD、Ubuntu、CenstOS、Solar
我有一个用 C 编写的客户端和一个服务器。为了保护我实现的连接: 我自己连接并接受 Diffie-Hellman key 。 我自己发送和接收,以便使用 AES 加密流量。基本上,我用数据加密缓冲区并
我在 Google 的 tcmalloc 上看到了这条建议文档页面。 You can use TCMalloc in applications you didn't compile yourself,
在 Ubuntu 16.04 系统上,一直在尝试将 ld_preload 与自定义编译的 libpcap.so 一起使用并运行 tcpdump。 编译 libpcap (1.8.0) ./config
我正在尝试 LD_PRELOAD 一个声明如下的函数 // header1.h typedef enum { ... } enum1; // header2.h typedef enum { ...
我们有一个在嵌入式 powerpc 上运行的用 g++ 编译的多线程 c++ 应用程序。为了在持续集成测试中对此进行内存泄漏测试,我们创建了一个使用 ld_preload 加载的堆分析器。 我们想保证
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
是否可以使用 LD_PRELOAD 覆盖其中一个 linux 内核函数? 例如,我想在 Linux/net/ipv4/syncookie.c 中为我的程序 fooserver。我可以使用 LD_PRE
我编写了 LD_PRELOAD 模块,我的所有源代码都在 source.cpp 中,但现在我需要添加 crypt.cpp 文件以及我需要的一些类,如何使用多个 .cpp 文件通过 g++ 编译 LD_
我有这个小测试代码atfork_demo.c: #include #include void hello_from_fork_prepare() { printf("Hello from
我有我的 .so 库,我将它注入(inject)到我的 Ubuntu 服务器上的各种进程中。但是我找到了我用常规命令启动的二进制文件: LD_PRELOAD=/home/glinkd/preload3
我需要在 Linux 中记录所有终端命令。我在 C 中找到了正确工作的库,但它仅在我运行 LD_PRELOAD=/usr/local/bin/bashpreload.so/bin/bash 时有效:
操作系统: Ubuntu 16.04 64 位 python : 2.7.12 我有一个非常简单的 Python 程序,它只加载了两个库 libhidapi-hidraw 和 libpcProxAPI
我是一名优秀的程序员,十分优秀!