【发布时间】:2016-01-22 02:15:22
【问题描述】:
我有一个在 linux 中运行的游戏应用程序。我们是一家游戏公司。我遇到了这种随机崩溃,大约在 24-48 小时内发生一次。上次它发生时,我试图查看它崩溃的线程的回溯,但是 gdb 显示堆栈已损坏,没有符号。 现在,当我运行游戏并中断 gdb 时,有时我能够看到该线程的函数调用堆栈,但大多数时候我看不到任何符号。线程是渲染器线程。 我们使用的一些游戏库是第三方专有的,没有调试符号。所以我想知道渲染器线程调用堆栈是否很深(库中的各种调用)到这些库中没有符号,所以我看不到调用堆栈?如果这是真的,我该如何解决这个问题? 如果不是,请知道可能是什么原因。
【问题讨论】:
-
如果没有更多详细信息,就不可能提供有用的答案:您在哪个 CPU 上运行?什么版本的 GDB?
bt和info proc maps的 实际 输出是什么?等等。 -
GNU gdb (GDB) 7.6 , Intel(R) Core(TM) i3-4100E CPU @ 2.40GHz (gdb) bt #0 0x9ea8a702 in ?? () 无法访问地址 0x3f340004 处的内存
-
早上游戏刚崩溃。我做了一个 bt 并得到了
(gdb) bt #0 0x9f488882 in ?? ()另外,做了一个info proc mappings和上面的地址bt我发现了以下内容:0x9f488000 0x9f48a000 0x2000 0x0 /tmp/glyFI8DP (deleted)