调试不同发行版上生成的核心文件
跨发行版的核心文件意义
调试在开发环境以外的 Linux 发行版上生成的核心文件时,堆栈跟踪可能不可靠。动态链接的可执行文件使用共享库,根据发行版的不同,共享库可能有不同的实现。 GDB 将尝试使用开发环境中可用的库版本,该版本可能与客户系统上的版本不同。因此,堆栈地址可能映射到不同的例程或位于指令内,这表明堆栈跟踪不准确。
解决意义问题
要获取有意义的堆栈跟踪,请从以下位置获取所有共享库客户的系统并在 GDB 中设置 solib-absolute-prefix 路径。这将重定向 GDB 以使用客户的库进行符号解析。
调试方法
建议客户:
使用 -g -O2 编译以创建调试二进制文件 (myexe.dbg)。- 删除调试信息 (strip -g myexe.dbg) 以创建生产二进制文件 (myexe)。
- 将 myexe 分发给客户。
- 在调试客户生成的核心文件时使用 myexe.dbg。
-
此方法提供完整的符号信息,无需向客户发送调试二进制文件或暴露敏感源代码代码。
调试资源
有关进一步的调试见解,请考虑参考以下资源:
-
Linux:
Leonid 的“Linux 调试工具” Evdokimov- 《掌握 Linux 中的系统调试》作者:Paul Turner
-
-
Solaris:
" Solaris 系统和性能调优》,作者:Mike Wilson- Mark Burgess 着的《实用 Solaris 性能故障排除和调优》
-
这些书提供了在 Linux 和 Solaris 上进行调试的真实示例和高级技术,包括装配分析。
以上是如何可靠地调试不同 Linux 发行版上生成的核心文件?的详细内容。更多信息请关注PHP中文网其他相关文章!