【发布时间】:2021-02-08 16:00:08
【问题描述】:
我正在尝试调试堆损坏(使用 QIRA 调试器);仅适用于 Doug Lea 的 Malloc。
我已尝试执行以下操作:
LD_PRELOAD=./malloc.so qira ./program $(cat shfree5)
我收到以下错误:
错误:ld.so:无法预加载来自 LD_PRELOAD 的对象“./malloc.so”(错误的 ELF 类:ELFCLASS32):已忽略。
这是因为加载程序尝试将 x86 malloc.so 链接到 x64 qira。
我只想将LD_PRELOAD 应用于./program,而不是qira;我已尝试使用env 命令,但无法使其正常工作。
提前致谢!
【问题讨论】:
-
我找不到详细的 qira 文档,但是你需要启动 qira,在里面设置环境变量,然后启动你的程序。
-
不幸的是,在 Linux 上处理所有
LD_*环境变量在混合 32/64 位环境中都失败了。请参阅 stackoverflow.com/questions/36849507/… 了解一些可能有帮助的信息。 -
env LD_PRELOAD=./malloc.so ./program ...应该可以工作如果你有一个在qira下工作的env的实现。 -
“我正在尝试调试堆损坏”——使用 Address Sanitizer 而不是
LD_PRELOADing debugmalloc,您可能会得到更多。跨度>
标签: c x86 heap-memory elf ld-preload