不能单步执行,但程序集单步和断点工作正常

问题描述 投票:0回答:1

我有一个在嵌入式ARM M4上运行的C应用程序;它工作正常。

我使用Kinetis Design Studio,它使用gdb作为Windows上的调试器。

对于我的大多数.obj,我可以单步执行C源代码。但是,对于一些文件,虽然我可以使用断点,但单步执行C源代码不起作用:按Single-step会导致调试器的行为就好像我按下Run但应用程序肯定没有运行。

但单步执行程序集,相同的.obj文件,正常工作。

我为所有.c使用相同的编译选项

-x c -Wall -Werror -std=c99 -nostdlib -mthumb -mtune=cortex-m4 -mlittle-endian -Wdouble-promotion -DNDEBUG -fdata-sections -ffunction-sections -c -save-temps=obj -g3 -gdwarf-2

对于一些.obj,为什么断点和装配单步工作但不是源单步?

c gcc gdb elf gdbserver
1个回答
0
投票

您可以提供更多信息以及您目前为止所尝试的内容。例如,那些目标文件有什么区别?它总是一样吗?他们是否具有与非用户代码的特定依赖关系,还是非用户代码?你有什么调试器选项?基于此,我可以提出基本建议:

- 检查符号文件配置的正确性/它们是否与二进制文件同步并正确加载。

- 确保编译后源代码没有变化,因此IDE不能错误地显示最新编译中不存在的代码(不可调试)。

- 考虑停用JustMyCode等选项 - 取决于您的环境(https://docs.microsoft.com/de-de/visualstudio/debugger/just-my-code?view=vs-2017

- 检查调试器选项

© www.soinside.com 2019 - 2024. All rights reserved.