gpt4 book ai didi

无法单步源,但汇编单步和断点工作正常

转载 作者:行者123 更新时间:2023-11-30 16:28:54 26 4
gpt4 key购买 nike

我有一个在嵌入式 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,为什么断点和汇编单步可以工作,而源单步却不能?

最佳答案

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

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

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

-考虑停用 JustMyCode 等选项 - 根据您的环境 ( https://learn.microsoft.com/de-de/visualstudio/debugger/just-my-code?view=vs-2017 )

-检查您的调试器选项

关于无法单步源,但汇编单步和断点工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52168226/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com