我目前正在运行一个文件管理器程序,突然崩溃与分段错误和转储核心文件。所以我用gdb调试核心文件为: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”选项重新编译这些文件,并重现了核心转储。它现在能够显示源代码行。
bt输出中有68条曲线。在这里粘贴它们会很麻烦,并且让所有人都感到困惑。所以我没有发布它们。让我检查我的make文件,看看是否有意外使用-s或-Wl,-s选项。 – paratrooper
@paratrooper“有68 ...” - 这实际上可能非常相关(你可能有堆栈溢出)。我的观点是:通过忽略信息,你会更难以帮助你。 –
基于你上面提到的,我刚刚交叉检查了我的make文件和Boom。你是绝对正确的。我正在使用“-g”选项编译我的主目录,并将它链接到显然不是使用“-g”编译的“现有”目标文件,所以当核心转储时,我看不到这些文件的来源。所以我继续使用“-g”选项重新编译这些文件,并重现了核心转储。它现在能够显示源代码行。我接受你的答案 – paratrooper