Codewarrior调试器在将一些代码和数据编译到新的ELF部分后不显示C源代码

时间:2013-06-18 00:36:42

标签: debugging elf sections codewarrior

在我们的项目中,我们正在构建一个ELF文件和一个部分链接文件(PLF),该文件被转换为专有格式并在加载ELF后加载到内存中。我们使用Codewarrior来运行和调试,它一直运行得很好(在调试时C ++源代码始终可用于执行)。

我最近做了一些更改,其中一些代码和数据被编译到PLF文件中的不同部分(.init,以前是空的)。现在,在调试时,大多数文件仅在汇编程序中可用。当我重新构建时,不再使用.init,我们可以再次单步执行C ++源代码。

有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:0)

  

为什么会出现这种情况

一个原因可能是codewarrior期望在.init部分找不到代码。

你不太可能在这里得到一个好的答案。试试codewarrior支持论坛。

答案 1 :(得分:0)

我通过使用链接器命令文件(.lcf)切换部分的顺序来实现这一点,以便.init部分在.text之后排在第二位。就像雇佣的俄罗斯人所说的那样,CodeWarrior对.init中的代码感到惊讶并且疯狂。更改部分的顺序似乎没有任何不良影响,现在调试再次按预期工作。