如何增加Linux核心转储匹配符号的概率?
我有一个非常复杂的跨平台应用程序.最近我和我的团队一直在进行压力测试,并遇到了几次崩溃(以及随之而来的核心转储).其中一些核心转储非常精确,并向我展示了大约10个或更多堆栈帧发生崩溃的确切位置.其他人有时只有一个堆叠框架?? ??是唯一的象征! 我想知道的是: >有没有办法增加核心转储指向正确方向的可能性? 这是我编译二进制文件的方式(在发布模式下): >编译器和平台:g在CentOS 3.6 x86_64上使用glibc-2.3.2-95.50 – 这有助于我保持与旧版Linux的兼容性. 然而,我有时会得到没有符号的核心转储!可以理解的是,我正在链接libstdc和libgcc的非调试版本,但如果至少堆栈跟踪显示我的代码中错误的指令调用源自哪里(尽管最终可能以??结尾),这将是很好的. . 最佳答案
这可能有很多原因,其中包括: >堆栈帧被删除(覆盖) 注意,第二点可以简单地通过例如以这种方式编译的glibc来进行.安装此类系统库的调试信息可以缓解这种情况(类似于openSUSE上的glibc-debug {info,source}软件包). gdb比glibc更能控制程序,因此如果gdb也不能这样做,glibc的回溯调用自然会无法打印回溯. 但是运输来源会容易得多:-) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |