【问题标题】:Debugging an Ada application compiled with MinGW32 in GDB在 GDB 中调试使用 MinGW32 编译的 Ada 应用程序
【发布时间】:2016-06-29 15:34:53
【问题描述】:

我有一个用 MinGW32 (gcc-ada) 编译的 Ada 应用程序 (GHDL)。我想在gdb中调试,但是gdb报告说Ada运行时没有调试信息,所以抓不到异常:

(gdb) catch exception
Your Ada runtime appears to be missing some debugging information.
Cannot insert Ada exception catchpoint in this configuration.
(gdb) 

有没有办法用调试信息扩展 Ada 运行时?

【问题讨论】:

    标签: gdb ada debug-symbols mingw32


    【解决方案1】:

    您必须安装包含调试信息的运行时库版本。 (我对 Windows 和 MinGW32 的了解不够多,无法给您提供更具体的帮助。)

    【讨论】:

      【解决方案2】:

      如果您从源代码构建 ghdl - 使用 gcc 后端 - 您也可以轻松构建 Gnat,只需在 --enable-languages=c,c++,ada,vhdl 配置选项中添加 ada。

      然后,如果您不太担心性能,可以将 -g 标志添加到 Make,并使用调试信息构建批次(gcc、Gnat 和 ghdl),其中将包括 Ada RTS。如果您随后使用此编译器及其 RTS 重新构建 ghdl,那么您应该有一个可调试的 ghdl 编译器 - 除非为 mingw32 构建任何棘手的问题。

      除了建议之外,我无法评论可能的 mingw 问题,如果有任何问题,您可能最好在另一个平台上进行调试 - 除非它是您正在追逐的特定 mingw 问题。我在 Debian 上使用了 mingw 编译器来交叉编译在 Windows 上运行良好的 Ada 程序,但我没有尝试过以这种方式引导 Gnat 或 ghdl。

      【讨论】:

      • 你好布赖恩,你是怎么找到这个问题的?我没有用ghdl 标记它:)。我正在为 LLVM 后端构建 GHDL。 MinGW 没有 GCC 源,这是 GCC 后端所必需的。 GHDL 是用-g 构建的,但我猜,Ada 运行时是在没有它的情况下构建的。我仅在运行使用 MinGW32/64 编译的 GHDL 时看到此问题,但在使用普通 gcc/gnat 组合在 Debian 上构建时没有看到。
      • 我阅读了 Ada 标签:寻找 Ada 项目是让我首先进入 ghdl 的原因:具有讽刺意味的是,我遇到的所有问题都在 gcc 的(微小的)C 包装器中!如果 Simon 的回答与您的问题无关,有一种方法可以与您的 Ada 应用程序 (ghdl) 一起构建 RTS,而无需重新构建整个编译器的极端选项......它涉及提供 --RTS=... Gnat 的选项。在 Make 命令行(或配置)上转换为什么我不确定......如果我发现我会更新答案。或者在 github 上询问 Tristan...
      • 我将对话移至电子邮件。你有 GitHub/Gitter 帐户吗?我们可以在那里继续讨论......
      【解决方案3】:

      可能遇到了与 GDB 读取 Ada 相关符号的方式有关的问题(bug 11385,无法捕获 Ada 异常)。

      我使用的修复是使用-readnow:

      gdb -readnow {executable}
      

      我不知道 MinGW32,但我相信如果你在 GPR 文件中包含 -g

      package Builder is
         for Default_Switches ("ada") use (“-g”);
      end Builder;
      

      程序链接到 RTS 的静态版本,其中包括调试符号。

      【讨论】:

        猜你喜欢
        • 2014-02-03
        • 1970-01-01
        • 2012-08-11
        • 2011-01-10
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多