GDB&x2B;克莱恩+;STM32-韩元';远程调试

GDB&x2B;克莱恩+;STM32-韩元';远程调试,gdb,stm32,clion,gdbserver,Gdb,Stm32,Clion,Gdbserver,我通读了《提供良好的洞察力》,但我有一个稍微不同的问题: 我的环境: 目标:手臂皮质M4(STM32F401RE) ST-UTIL gdb服务器() arm none eabi gdb 7.7.1+dfsg-5+8~bpo8+1 CLion 2016.3.2建造#CL-163.10154.43 Debian 8 在GDB远程调试配置面板中,我设置: GDB: /usr/bin/arm-none-eabi-gdb Symbol file: /home/malachi/temp/

我通读了《提供良好的洞察力》,但我有一个稍微不同的问题:

我的环境:

  • 目标:手臂皮质M4(STM32F401RE)
  • ST-UTIL gdb服务器()
  • arm none eabi gdb 7.7.1+dfsg-5+8~bpo8+1
  • CLion 2016.3.2建造#CL-163.10154.43
  • Debian 8
在GDB远程调试配置面板中,我设置:

GDB:         /usr/bin/arm-none-eabi-gdb
Symbol file: /home/malachi/temp/mbed_test/mbed-os-program/BUILD/NUCLEO_F401RE/GCC_ARM/mbed-os-program.elf
从CLion那里,无论我做什么,我都能从Console中获得以下信息:

Cannot configure GDB defaults: No symbol table is loaded.  Use the "file" command.
Debugger connected to localhost:4242
我尝试过用.gdbinit强制执行“文件”,但gdbinit似乎被忽略了

此外,它确实指示与远程运行的st util的连接,但我无法执行任何命令(断点、步进、暂停等)除了terminate之外,terminate似乎会终止它

如果我直接从命令行使用arm none eabi gdb(
/usr/bin/arm none eabi gdb
已验证),则一切正常,断点、步进等也正常。elf符号直接从命令行正确加载

最后,如果我使用
GDB:Default(Bundled)
的配置,我不希望它工作得很好,但它实际上更进一步,允许非常有限的暂停/恢复功能(但绝对没有其他功能),并且不抱怨符号

我有类似的设置(CLion除外),我可以通过调试我的STM32板(上面有ST-LINK v2)。也许如果你按照我的指示去做,你也会成功的

首先,在构建固件时向GCC提供下一个标志:

调试标志 CFLAGS+=-Os-g-fno计划insns-fno-schedule-insns2 #回溯支持 CFLAGS+=-fno省略帧指针-funwind表 CFLAGS+=-mapcs-mno sched prolog LDFLAGS+=-mapcs-mno sched prolog 使用下一个脚本启动GDB服务器。当然,必须安装,因为脚本使用它

#/垃圾箱/垃圾箱
交叉编译=arm none eabi-
GDB=${CROSS_COMPILE}GDB
如果[$#-ne 1];然后
echo“请为调试符号提供elf文件”>&2
出口1
fi
elf_文件=“$1”
echo'-->正在启动GDB服务器…'
如果[-f gdb.pid];然后
杀死-9$(类别gdb.pid)
rm-f gdb.pid
fi
st util和echo$!>gdb.pid
echo'-->正在启动GDB…'
$GDB-ex“目标扩展本地主机:4242”$elf_文件
杀死-9$(类别gdb.pid)
rm-f gdb.pid
将其另存为
gdb.sh
,并按如下方式运行(一旦您的电路板通电):

您将看到
(gdb)
提示。现在您可以使用常用的GDB命令进行调试。在我的例子中,GDB向我显示(开始时):

所以我通常会这样做:

(gdb) break main
(gdb) continue
(gdb) list
然后使用常用的调试命令,如
step
next
print var
bt
,等等。一切都按预期进行

还应该提到的是,我正在固件中使用,所以它也可能会对操作的成功产生一些影响。我建议您从(like)构建和闪存一些简单的示例,并尝试使用GDB进行调试。如果它能工作,而您的代码不能与GDB一起工作,那么您可以很容易地查找差异并找到问题所在

工具书类 [1]


[2]

升级到CLion 2016.3.3解决了此问题

我遇到了一些间歇性的减速/连接问题,但我不能确定这是否是CLion的问题


感谢萨姆·普罗森科和艾尔达·阿布萨利莫夫在这方面的帮助。

你读过吗?此外,您应该使用
-g-fno省略帧指针-funwind tables-mapcs-mno sched prolog
标志构建固件,以便使用GDB调试FW,并提供完整功能。另请参阅。感谢您的深入了解。问题没有变化,但您的信息应该有助于避免未来的问题。我注意到“-mapcs”已被弃用,奇怪的是-mbed OS调试配置文件“-fomit frame pointer”已显式启用,以便在需要调试日志时更仔细地研究它。我是否可以要求您在中创建问题,并按此处所述附加日志:。或者,您可以通过我们的支持渠道发送日志:感谢您深思熟虑的回复。我已经取得了一些成功(谢天谢地)已经做了GDB命令行操作,主要是CLion环境似乎没有很好的响应
GDB connected.

reset_handler () at ../../cm3/vector.c:68
68      for (src = &_data_loadaddr, dest = &_data;
(gdb) break main
(gdb) continue
(gdb) list