我有一个运行在嵌入式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
,为什么断点和装配单步工作而不是源单步工作?
答案 0 :(得分:0)
您可以提供更多信息以及到目前为止您尝试过的内容。例如,这些目标文件有什么区别?总是一样吗?它们对非用户代码是否具有特定的依赖性,或者它们是否为非用户代码?您是什么调试器选项?基于此,我可以给出基本建议:
-检查符号文件配置的正确性/它们与二进制文件同步并正确加载。
-确保编译后对源代码没有任何更改,因此IDE不会错误地显示最新编译中不存在的代码(不可调试)。
-考虑根据环境(https://docs.microsoft.com/de-de/visualstudio/debugger/just-my-code?view=vs-2017)停用JustMyCode之类的选项
-检查您的调试器选项