如何查找有关无法运行的已编译 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] = D0FA19146049B8F8B977701A7FC91284F157403EF,未剥离

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

有一个Aarch64端口的Valgrind。如果您在此下运行程序,它可能会准确地告诉您错误发生了什么。

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

info symbol 0x0000000000406dc8

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

最新更新