【问题标题】:Debugging in the REDHAWK IDE在 REDHAWK IDE 中调试
【发布时间】:2014-12-25 20:38:18
【问题描述】:

在 REDHAWK IDE 中逐步调试时,行标记有时似乎没有遵循正确的程序流程,并且并非所有变量似乎都没有正确更新。

我正在使用多个组件在黑板上运行。我通过打开组件的 .spd.xml 文件并单击概览选项卡上的“调试为”超链接开始调试。这会将组件与其他组件一起添加到黑板上。在我启动所有组件后,调试器会命中我的断点。

有没有人遇到过这些症状(数据未更新或程序错误步进)?如果是这样,是什么原因,我该如何克服?

谢谢,

--麦克

【问题讨论】:

    标签: debugging components redhawksdr


    【解决方案1】:

    您很可能正在调试 C++ 可执行文件。编译源代码时,编译器执行了某些优化,这可能导致机器代码与源代码相比出现乱序。这些优化还可以从范围中删除变量。优化级别是编译期间的一个参数。 REDHAWK 中使用的默认级别是 -O2。有关详细信息,请参阅 GCC 手册页 (http://linux.die.net/man/1/gcc)。

    如果您有此组件的源代码,请尝试以下操作:

    make clean; # Remove the binaries previously compiled if any.
    ./reconf;
    ./configure;
    
    # Stop here and check the config.log file and search for CXXFLAGS, at the bottom of the log file you'll notice that they are by default set to '-g -O2'.
    
    make V=1 #The V=1 will set the verbose flag and you'll see the calls to g++/gcc. Notice that the CXXFLAGS are in the g++ calls.
    
    
    To override the CXXFLAGS you may call configure like so:
    ./configure 'CXXFLAGS=-O0 -g'
    

    现在,当您重新运行 make V=1 时,您会看到优化级别已从 2 降低到零。这可能会解决您的调试问题,但生成的二进制文件优化程度较低。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多