首页 > 解决方案 > 在 glibc 的 ld.so 中禁用 xsave

问题描述

我想使用 gdb 的记录,但由于 glibc 的 ld.so 使用 xsave 指令,我收到错误“进程记录不支持地址 0x7ffff7fe883c 的指令 0xfae64”。

多亏了stackoverflow 答案,我能够通过二进制补丁修复类似的错误。运行半小时后使用调试符号编译 glibc 失败,所以如果有更快的解决方案,我会很高兴。我从这里得到了一个编译版本,但似乎没有提供更早的版本(即我现在使用 glibc 2.28.r502.g065957a3704-1 和 gdb 8.2.1)。如何使 gdb 记录工作?

标签: assemblylinkergdbx86-64glibc

解决方案


问题是 gdb 内置的 x86 仿真器不理解许多新指令。唯一的解决办法是等待一个带有相关说明的新版本。同时,这个线程提出了一些解决方法:

  • 加载LD_BIND_NOW设置了环境变量的二进制文件1以避免xsave在动态链接器中触发
  • 或者,链接要静态调试的二进制文件
  • 或者,通过传递给 C 编译器与-z now例如链接-Wl,-z,now

推荐阅读