首页 > 解决方案 > 我如何找出有关无法运行的已编译 ELF 64 位 LSB 可执行文件(无效指针)的信息(它的作用和方式)?

问题描述

当我运行文件(我的文件)命令时,我得到

my-file:ELF 64 位 LSB 可执行文件,ARM aarch64,版本 1 (SYSV),动态链接,解释器 /lib/ld-linux-aarch64.so.1,适用于 GNU/Linux 3.7.0,BuildID[sha1]= d0fa19146049b8f8b97701a7fc91284f157403ef,未剥离

当我尝试运行 ./my-file 时: * `./lano-campipe' 中的错误:realloc():无效指针:0x0000000000406dc8 * 中止(核心转储)

标签: pointersmallocglibcelf

解决方案


valgrind有一个 aarch64 端口。如果你在这个条件下运行你的程序,它可能会准确地告诉你哪里出了问题以及错误发生在哪里。

我的猜测是,基于地址,您正在传递一个地址(数组或字符串?)realloc,分配在.data(or .rodata) 部分,而不是在堆中。如果你在 GDB 下运行程序并输入这个命令

info symbol 0x0000000000406dc8

它可能会打印地址的符号信息。可能需要调用malloc并将数据复制到堆以修复此错误。


推荐阅读