如何只对目标程序应用LD_PRELOAD?

How to apply LD_PRELOAD only to target program?

我正在尝试调试堆损坏(使用 QIRA 调试器);仅适用于 Doug Lea 的 Malloc。

我已尝试执行以下操作:

LD_PRELOAD=./malloc.so qira ./program $(cat shfree5)

我收到以下错误:

ERROR: ld.so: object './malloc.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.

这是因为加载程序尝试将 x86 malloc.so 链接到 x64 qira

我只想将 LD_PRELOAD 应用到 ./program,而不是 qira;我已尝试使用 env 命令,但无法正常工作。

提前致谢!

看来你可以在环境中设置QEMU_SET_ENV=LD_PRELOAD=./malloc.so来影响进程。

我会注意到,您可以通过设置 QEMU_UNSET_ENV=FOO,BAR.

类似地为目标取消设置环境变量