复制核心转储 - yshui --日志级别=跟踪

主要观点:介绍了调试核心转储的方法,从最初认为需手动处理共享库文件到最终发现可通过解析核心转储找到加载的库信息并修改路径来调试,还介绍了相关的调试工具和过程。
关键信息:

  • 遇到代码在 CI 中崩溃并生成核心转储,调试时出现问题。
  • 起初需手动找出加载的库文件并复制,通过info proc mappings等命令,但每次崩溃都手动操作太麻烦。
  • 核心转储是普通 ELF 文件,readelf可查看相关信息,找到共享库在内存中的映射。
  • 编写程序解析核心转储并修改路径但未成功,发现调试器仍尝试在原路径查找库文件。
  • 调试器通过“动态链接器集合点”结构获取加载的库信息,该结构中有r_brkr_map字段。
  • 利用核心转储中包含的集合点结构,将其路径修改后指向新路径,从而实现在另一台机器上调试核心转储。
    重要细节:
  • 给出了gdb调试时出现的堆栈信息示例。
  • 描述了用hex editor查看核心转储文件时的情况。
  • 提到lldb日志详细且通过调试器最终找到问题所在。
  • 介绍了自己制作的自动复制共享库并更新核心转储路径的小工具
阅读 9
0 条评论