-2

我在 UNIX 服务器上观察到核心转储,必须分析其背后的原因。以下是使用 mdb 的 coredump 的输出

Loading modules: [ libc.so.1 libuutil.so.1 ld.so.1 ]
> ::status
debugging core file of pmr_colld_aos (32-bit) from atrcxb2532
file: /opt/ericsson/aos/PDM/bin/pmr_colld_aos
initial argv: /opt/ericsson/aos/PDM/bin/pmr_colld_aos -ORBInitRef NameService=corbaloc::maste
threading model: multi-threaded
status: process terminated by SIGABRT (Abort)

> ::stack
libc.so.1`_lwp_kill+0x15(1, 6)
libc.so.1`raise+0x1f(6)
libc.so.1`abort+0xcd(8026ad0, 8eb2d88, 0, fe2cb9d0, 8ea9f50, 80275b0)
libstdc++.so.6.0.3`_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0xdf(fe2eb0c0, fe2cb9d0, 8026a78, fe2b53cc, fe2b7298, 8ea9f50)
libstdc++.so.6.0.3`_ZN10__cxxabiv111__terminateEPFvvE+0x14(fe2b7298, 8ea9f50, 8026a88, fe2b467a, feffd888, fe2cb9d0)
libstdc++.so.6.0.3`_ZN10__cxxabiv112__unexpectedEPFvvE(1, fe2cb9d0, 8026af8, fe2b52d6, fe2b53ac, fe217a44)
libstdc++.so.6.0.3`_ZN10__cxxabiv112__unexpectedEPFvvE+0x14(fe2b53ac, fe217a44, feffa320, 0, 8026ad8, fe2b7298)
libstdc++.so.6.0.3`__cxa_call_unexpected+0x42(8ea9f80, 8026b40, 8c70120, 82aa448, 8e382a8, 8026b20)
_ZN21PDRFileTimeoutHandler5checkEv+0xa10(fe17f000, fdfa2a00, 8026c90, fe0a5bf6, fe180680, 0)
main+0x1309(2, 8026e10, 8026e24)
_start+0x80(4, 8027618, 8027682, 802764c, 8027640, 0)
> $C
080269c4 libc.so.1`_lwp_kill+0x15(1, 6)
080269dc libc.so.1`raise+0x1f(6)
08026a28 libc.so.1`abort+0xcd(8026ad0, 8eb2d88, 0, fe2cb9d0, 8ea9f50, 80275b0)
08026a48 libstdc++.so.6.0.3`_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0xdf(fe2eb0c0, fe2cb9d0, 8026a78, fe2b53cc, fe2b7298, 8ea9f50)
08026a58 libstdc++.so.6.0.3`_ZN10__cxxabiv111__terminateEPFvvE+0x14(fe2b7298, 8ea9f50, 8026a88, fe2b467a, feffd888, fe2cb9d0)
08026a78 libstdc++.so.6.0.3`_ZN10__cxxabiv112__unexpectedEPFvvE(1, fe2cb9d0, 8026af8, fe2b52d6, fe2b53ac, fe217a44)
08026a88 libstdc++.so.6.0.3`_ZN10__cxxabiv112__unexpectedEPFvvE+0x14(fe2b53ac, fe217a44, feffa320, 0, 8026ad8, fe2b7298)
08026af8 libstdc++.so.6.0.3`__cxa_call_unexpected+0x42(8ea9f80, 8026b40, 8c70120, 82aa448, 8e382a8, 8026b20)
08026c68 _ZN21PDRFileTimeoutHandler5checkEv+0xa10(fe17f000, fdfa2a00, 8026c90, fe0a5bf6, fe180680, 0)
08026dec main+0x1309(2, 8026e10, 8026e24)
08026e04 _start+0x80(4, 8027618, 8027682, 802764c, 8027640, 0)
> $G
C++ symbol demangling enabled
> ::quit

谁能帮我理解这个输出?

请注意,代码已写入目录 - /opt/ericsson/aos/PDM/bin/pmr_colld_aos 中的 pmr_colld_aos。另外,我只想知道如何理解这些输出,这将有助于我回溯代码。

4

1 回答 1

2

你在那里得到的是崩溃的回溯。作为程序一部分的最后一个例程是 FileTimeoutHandler5checkEv() 所以很可能错误就在那里。此后的所有内容都是 C++ 库的一部分。

但是如果你真的想检查它,那么你应该将核心文件连同导致它的程序一起加载到 GDB 中。这比使用 mdb 检查核心文件要容易得多。

于 2013-09-07T10:07:34.643 回答