我怎样才能停止 gnatmake 内联函数?

How can I stop gnatmake inlining functions?

我正在尝试使用 gdb 调试 Ada 程序。具体来说,我正在尝试在如下函数中放置一个断点:

function Moment(OC: Object'Class) return Float is
begin
    return OC.X_Coord * OC.Area;
end Moment;

我可以下断点,到了就停止执行。我的问题是,当我使用 gdb 的源代码视图(wh)时,我看不到源代码。

我怀疑这是由 gnatmake 引起的,即使我应用了选项 -O0 -g,它也会内联所描述的函数。为了检查这一点,我尝试添加一个 Put_Line 调用来停止 gnatmake 内联我的函数,并且它起作用了:使用以下函数我可以停止执行并查看源代码:

function Moment(OC: Object'Class) return Float is
begin
    Put_Line("ASDASD");
    return OC.X_Coord * OC.Area;
end Moment;

如何停止 gnatmake 内联函数?

-cargs -fno-inline 添加到您的 gnatmake 或 gprbuild 命令行,或将 -fno-inline 添加到您的项目文件。