使用WinGDB + VS2017的断点问题

时间:2017-07-11 03:25:09

标签: visual-studio debugging gdb embedded

我正在为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。所以我猜测反斜杠正在把某些东西搞砸(感谢窗户)。

有什么想法可以解决这个问题?

2 个答案:

答案 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预设,以及许多其他的,所以应该非常有用。

Code::Blocks in debug mode.