测试:
[1] 在可执行文件中创建0除以使用优化(O2)和调试符号进行编译,从而生成核心。
[2] 在共享对象帽子中创建0除以使用优化(O2)和调试符号进行编译,从而生成核心。
结果:
[首先] 分析[1]生成的核心成功,可以在GDB / Totalview中看到粉碎的确切位置。
[Second] 分析由[2]生成的核心没有成功,十六进制数字位置是粉碎的输出。
有人能告诉我如何才能成功[2]?
答案 0 :(得分:1)
使用ldd检查是否可以找到您的共享对象。
如果没有,请尝试使用shell变量LD_LIBRARY_PATH
设置其路径,然后重试gdb <executable> core
。
另一种选择是编辑config /etc/ld.so.conf
并运行ldconfig。
答案 1 :(得分:1)
解决了, 我正在打开这样的核心文件:
然后加载了二进制符号,但不是任何共享对象!!!!!
走这条路:这导致二进制符号被加载但是也要加载共享对象符号!
感谢您的帮助。