WeHack BBS
用GDB捕获Ada程序的异常 - 可打印的版本

+- WeHack BBS (https://bbs.wehack.space)
+-- 版块: 计算机技术 (https://bbs.wehack.space/forum-5.html)
+--- 版块: 程序设计讨论区 (https://bbs.wehack.space/forum-14.html)
+--- 主题: 用GDB捕获Ada程序的异常 (/thread-370.html)



用GDB捕获Ada程序的异常 - vimacs - 08-04-2023

GDB的catch命令可以通过“catch exception”捕获Ada的异常,但是在我的系统里,用这个命令产生这个错误:
引用:Your Ada runtime appears to be missing some debugging information.
Cannot insert Ada exception catchpoint in this configuration.

搜索了一下这个问题,发现GDB的bugzilla有人报告过。[1] 可以对 __gnat_debug_raise_exception 下断点,在发生异常时,Ada的异常处理调用这个子程序,从而GDB可以停在异常发生的地方。

[1] https://sourceware.org/bugzilla/show_bug.cgi?id=11385


RE: 用GDB捕获Ada程序的异常 - vimacs - 03-25-2025

最近开始用Ada实现我自己的项目中的某个模块。我的项目是C++,Python(使用pybind和C++交互)混编,加入Ada之后,Ada代码产生的异常到Python那边就现实不出异常信息了。所以我现在的做法是在Ada代码里面先处理一次异常,把异常信息打印出来。