在我们的项目中,我们正在构建一个ELF文件和一个部分链接文件(PLF),该文件在ELF加载后转换为专有格式并加载到内存中。我们使用Codewarrior来运行和调试,它工作得很好( C++源代码在调试时总是可以单步执行的)。
我最近做了一个改变,一些代码和数据被编译到PLF文件中的不同部分(.init,以前是空的)。现在,在调试时,大多数文件只能在汇编程序中使用。当我重新构建时,不再使用.init,我们可以再次单步执行C++源代码。
有人知道为什么会这样吗?
发布于 2013-06-23 04:42:47
为什么会出现这种情况
一个原因可能是codewarrior不希望在.init部分中找到代码。
你不太可能在这里得到一个好的答案。试试codewarrior支持论坛。
发布于 2013-06-28 07:48:23
我通过使用链接器命令文件(.lcf)交换节的顺序来实现这一点,这样.init节排在.text之后。我猜,正如受雇于俄罗斯人所暗示的那样,CodeWarrior对用.init编写代码和丢弃代码感到惊讶。更改部分的顺序似乎没有不良影响,现在调试工作再次按预期进行。
https://stackoverflow.com/questions/17158965
复制相似问题