Debugging 如何停止gnatmake内联函数?
我正试图用Debugging 如何停止gnatmake内联函数?,debugging,inline,gnu-make,ada,gnat,Debugging,Inline,Gnu Make,Ada,Gnat,我正试图用gdb调试Ada程序。具体而言,我尝试在函数中设置断点,如下所示: function Moment(OC: Object'Class) return Float is begin return OC.X_Coord * OC.Area; end Moment; 我可以设置断点,当到达断点时执行停止。我的问题是,当我使用gdb的源代码视图(带有wh)时,我看不到源代码 我怀疑这是由gnatmake引起的,它内联了所描述的函数,即使我应用了选项-O0-g。为了检查这一点,我尝试添
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内联添加到gnatmake或gprbuild命令行,或将-fno内联添加到项目文件。将-cargs-fno内联添加到gnatmake或gprbuild命令行,或者-fno inline
到您的项目文件。您确定函数实际上是内联的吗?这个网站似乎表明它不是:我怀疑gdb是否假设这个函数是一个表达式函数?一个简单的工作示例会很有用:有一个开关-fno inline
,用于防止内联。您确定函数实际上是内联的吗?这个网站似乎表明它不是:我怀疑gdb是否假设这个函数是一个表达式函数?一个最简单的工作示例会很有用:有一个开关-fno inline
,用于防止内联。