在GDB中调试用MinGW32编译的Ada应用程序
我有一个用MinGW32(gcc-Ada)编译的Ada应用程序(GHDL)。我想在gdb中调试它,但gdb报告Ada运行时没有调试信息,因此我无法捕获异常:在GDB中调试用MinGW32编译的Ada应用程序,gdb,ada,debug-symbols,mingw32,Gdb,Ada,Debug Symbols,Mingw32,我有一个用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) 有没有办法用调试信息扩展
(gdb) catch exception
Your Ada runtime appears to be missing some debugging information.
Cannot insert Ada exception catchpoint in this configuration.
(gdb)
有没有办法用调试信息扩展Ada运行时?您必须安装一个包含调试信息的运行时库版本。(我对Windows和明文32的了解不够,给了您更具体的帮助。) < P>如果您使用GCC后端从源构建GHDL,您也可以很容易地构建Gnat,只需在代码<添加艾达>启用语言= C、C++、艾达、VHDL< /COD>配置选项。 然后,如果您不太担心性能,您可以添加要生成的
-g
标志,并使用调试信息构建批(gcc、Gnat和ghdl),这将包括Ada-RTS。如果您随后使用此编译器及其RTS重新构建ghdl,那么您应该拥有一个可调试的ghdl编译器,以防止为mingw32构建任何棘手的问题
我不能评论可能的mingw问题,除了建议,如果存在任何问题,您可能会在另一个平台上进行更好的调试-除非您正在寻找的是一个mingw问题。我在Debian上使用了mingw编译器来交叉编译在Windows上运行良好的Ada程序,但我没有尝试以这种方式引导Gnat或ghdl。您可能遇到了一个问题,与GDB读取Ada相关符号的方式有关(,无法捕获Ada异常)
我使用的修复方法是使用-readnow
:
gdb -readnow {executable}
我不知道MinGW32,但我相信如果在GPR文件中包含-g
package Builder is
for Default_Switches ("ada") use (“-g”);
end Builder;
该程序与RTS的静态版本相关联,其中包括调试符号。您好,Brian,您觉得这个问题如何?我没有用:)标记它。我正在为LLVM后端构建GHDL。MinGW没有GCC源,GCC后端需要这些源。GHDL是使用
-g
构建的,但我猜,Ada运行时是在没有它的情况下构建的。我只在运行使用MinGW32/64编译的GHDL时看到了这个问题,但在使用普通gcc/gnat组合构建Debian时却没有看到。我阅读了Ada标签:寻找Ada项目是我首先进入GHDL的原因:具有讽刺意味的是,我遇到的所有问题都在gcc的(微小的)C包装中!如果Simon的答案与您的问题无关,那么有一种方法可以将RTS与您的Ada应用程序(ghdl)一起构建,而无需重建整个编译器的极端选项。。。它包括提供--RTS=。。。选择蚊虫。在Make命令行(或Configure)上转换为什么我不确定。。。如果我发现了,我会更新答案。或者在github上问Tristan…我把对话转到了电子邮件。您是否有GitHub/Gitter帐户?我们可以在那里继续讨论。。。