【发布时间】:2017-04-16 04:49:48
【问题描述】:
我目前正在运行一个文件管理器程序,该程序突然因分段错误而崩溃并转储了一个核心文件。所以我用gdb调试核心文件为:
gdb /path/to/executable /path/to/core
我正在运行的程序是用 C++ 编写的。当我运行 GDB 并尝试使用“列表”打印源代码行时,出现以下错误:
(gdb) bt
#0 0x0000000000554286 in
MyFSEventManager::AddEvent(wxFileSystemWatcherEvent&) ()
#1 0x00000000005ab2e8 in
MyGenericDirCtrl::OnFileWatcherEvent(wxFileSystemWatcherEvent&) ()
(gdb) f 0
#0 0x0000000000554286 in
MyFSEventManager::AddEvent(wxFileSystemWatcherEvent&) ()
(gdb) l
1 /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gmain.c: No such file or directory.
为什么 gdb 会这样说 "/build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gmain.c: 没有这样的文件或目录。" 我知道我使用 gdb 调试过的其他一些程序没有遇到这个问题。
使用的操作系统是运行在 Oracle 虚拟机上的 Ubuntu 16.04。我想可能是gdb符号没有加载。我不知道为什么,因为我使用“-g”选项编译了程序。我真的需要知道代码通过 gdb 崩溃的源代码行。
有什么建议吗?
编辑:根据受雇俄罗斯人的建议进行更改
我正在使用“-g”选项编译我的主文件并将其链接到“现有”目标文件,这些文件显然不是使用“-g”编译的,因此当核心转储时,我看不到这些文件的源代码。所以我继续使用“-g”选项重新编译这些文件并复制核心转储。它现在可以显示源代码行了。
【问题讨论】: