我如何找到有关无法运行的编译的ELF 64位LSB可执行文件(无效指针)的信息(其作用和方式)?

时间:2019-03-08 16:32:21

标签: pointers malloc glibc elf

当我运行file(my-file)命令时,我得到了

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

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

1 个答案:

答案 0 :(得分:0)

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

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

info symbol 0x0000000000406dc8

它可能会打印该地址的符号信息。可能有必要调用malloc并将数据复制到堆中以解决此错误。