我正在为TI MSP430微控制器开发嵌入式C,并且花了最近几天从TI的IDE和专有工具链迁移到更加unix-y的Sublime Text + make + gcc工作流程。我现在正尝试使用WinGDB(带有gdb后端的Visual Studio)进行调试,并且我已经完成了它的工作。关于断点的这一个问题我怀疑归结为反斜杠/转发问题,但我不知道如何修复。
我可以毫无问题地开始调试,我可以单步执行,查看反汇编等。但是当我尝试使用F9在源文件中设置断点时,它会显示为带有hovertext的禁用:
The breakpoint will not currently be hit. No source file named d:Documentsccs workspacesmsp430 scratch\013cxmain.c.
Location: main.c, line 13 ('main(void)')
但是,我可以在WinGDB调试器shell中使用gdb命令设置和清除工作断点,但源旁边不会出现小的红色圆圈。
main.c的路径是D:\ Documents \ ccs workspaces \ msp430 scratch \ vcx \ main.c,我发现转义序列\ v对应于垂直制表符,或ascii中的octal \ 013。所以我猜测反斜杠正在把某些东西搞砸(感谢窗户)。
有什么想法可以解决这个问题?
答案 0 :(得分:0)
显示的错误通常是在编译器对代码进行优化时生成的,例如a = 2;
,并且从未再次使用过。但主要问题可能与您的交叉工具链有关 - 在此link WinGDB中实现的交叉工具链是 CodeSourcery G ++ Lite ARM链工具链,而您的micro,MSP430 不是 ARM设备。 (有一个MSP432,它是ARM设备)。
也许你可以看看这个:www。 Energia.nu,与Arduino类似,可与多个版本的MSP430配合使用。
答案 1 :(得分:0)
你是正确的,它是一个反斜杠问题,为你的文件生成的调试记录告诉调试器哪个文件& line产生了哪组操作码。
您可以尝试修改构建过程以在任何地方使用正斜杠,因为您的工具链是基于gcc的,它应该找到命名的文件
D:/Documents/ccs workspaces/msp430 scratch/vcx/main.c
但由于路径中的空格,您也可能遇到问题,重新构建项目,以便所有空格都被下划线替换,即D:\Documents\ccs workspaces\msp430 scratch\vcx\main.c
被移动到D:\Documents\ccs_workspaces\msp430_scratch\vcx\main.c
等,路径中的空格可能导致各种各样的问题。虽然可以在路径中逃避空间,但最好还是避免它们。
我还建议你看一下Code::Blocks - 虽然不如VS那么漂亮,但它可以更好地为跨平台和嵌入式开发提供IDE和调试环境。 它是免费的,跨平台的和开源的。它可以很好地与GDB连接,您可以自定义它为您的项目使用的构建工具链。它甚至为MSP340的GNU GCC预设,以及许多其他的,所以应该非常有用。