在我们的项目中,我们正在构建一个ELF文件和一个部分链接文件(PLF),该文件被转换为专有格式并在加载ELF后加载到内存中。我们使用Codewarrior来运行和调试,它一直运行得很好(在调试时C ++源代码始终可用于执行)。
我最近做了一些更改,其中一些代码和数据被编译到PLF文件中的不同部分(.init,以前是空的)。现在,在调试时,大多数文件仅在汇编程序中可用。当我重新构建时,不再使用.init,我们可以再次单步执行C ++源代码。
有谁知道为什么会这样?
答案 0 :(得分:0)
为什么会出现这种情况
一个原因可能是codewarrior
期望在.init
部分找不到代码。
你不太可能在这里得到一个好的答案。试试codewarrior支持论坛。
答案 1 :(得分:0)
我通过使用链接器命令文件(.lcf)切换部分的顺序来实现这一点,以便.init部分在.text之后排在第二位。就像雇佣的俄罗斯人所说的那样,CodeWarrior对.init中的代码感到惊讶并且疯狂。更改部分的顺序似乎没有任何不良影响,现在调试再次按预期工作。