pointers - 我如何找出有关无法运行的已编译 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 * 中止(核心转储)
解决方案
valgrind有一个 aarch64 端口。如果你在这个条件下运行你的程序,它可能会准确地告诉你哪里出了问题以及错误发生在哪里。
我的猜测是,基于地址,您正在传递一个地址(数组或字符串?)realloc
,分配在.data
(or .rodata
) 部分,而不是在堆中。如果你在 GDB 下运行程序并输入这个命令
info symbol 0x0000000000406dc8
它可能会打印地址的符号信息。可能需要调用malloc
并将数据复制到堆以修复此错误。
推荐阅读
- html - 为什么边框底部样式在 Outlook html 电子邮件中不起作用?
- sql-server-2000 - 和。(并后跟点)在 sql server 中是什么意思?
- android - deviceNotReady 错误:“注册失败”react-native-twilio-programmable-voice
- javascript - cors 启用 axios 获取请求失败
- r - 如何根据小标题中的标准过滤数据框?
- .net-core - 如何停止从一页到另一页的剃刀部分持久状态消息
- html - 具有跨度的响应式 CSS 网格
- python - 将数据从一个数据帧复制到另一个数据帧并根据值替换数据
- python - AWS:无法导入模块“处理程序”:没有名为“numpy”的模块
- jquery - 限制 jQuery 仅附加到一个元素