【问题标题】:gdb list error "No such file or directory"gdb 列表错误“没有这样的文件或目录”
【发布时间】: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”选项重新编译这些文件并复制核心转储。它现在可以显示源代码行了。

【问题讨论】:

    标签: c++ linux debugging gdb


    【解决方案1】:

    gdb 为什么会这样说“/build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gmain.c: No such file or directory.”

    因为你真的在你的系统上没有那个文件。

    我想可能是 gdb 符号没有加载

    GDB did 为 glib 加载调试符号,但不为您的主可执行文件加载。

    我不知道为什么,因为我使用“-g”选项编译了程序。

    由于我们没有您的编译和链接行,我们无法准确判断出了什么问题,但一些常见问题是:

    1. 您的链接行上有一个“流浪”-s-Wl,-s(这会从生成的二进制文件中删除调试信息)。
    2. 在编译 main.c 时有 -g,但在编译定义了 MyFSEventManager::AddEvent() 的源时没有

    附言

    (gdb) bt

    这似乎不是bt 命令的完整输出。始终尝试粘贴完整的输出,因为它使帮助更容易:)

    【讨论】:

    • bt 输出中有 68 条迹线。将它们全部粘贴在这里会很麻烦,并且会让所有人感到困惑。所以我没有发布它们。让我检查一下我的 make 文件,看看我是否意外使用了 -s 或 -Wl,-s 选项。
    • @paratrooper "There are 68 ..." -- 这实际上可能非常相关(您可能有堆栈溢出)。我的观点是:省略信息会让您更难为您提供帮助。
    • 根据您上面提到的内容,我刚刚交叉检查了我的 make 文件和 Boom。你是绝对正确的。我正在使用“-g”选项编译我的主文件,并将其链接到“现有”目标文件,这些文件显然不是使用“-g”编译的,所以当核心转储时,我看不到这些文件的源代码。所以我继续使用“-g”选项重新编译这些文件并复制核心转储。它现在可以向我显示源代码行。我接受你的回答
    猜你喜欢
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 2017-08-29
    • 2013-08-08
    • 2013-11-04
    • 2012-02-18
    相关资源
    最近更新 更多