[英]GDB + CLion + STM32 - won't remote debug
我通读了CLion中的GDB Monitor命令,提供了很好的见解,但是我遇到了一个稍微不同的问题:
我的环境:
在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强行强制'file',但是gdbinit似乎被忽略了
此外,它的确表明与远程运行的st-util的连接,但是我无法执行任何命令(断点,单步执行,暂停等),除了终止-似乎确实终止了它。
如果我从命令行直接使用arm-none-eabi-gdb(已验证/usr/bin/arm-none-eabi-gdb
),则一切正常,断点,单步执行。此外,.elf符号可直接从命令加载线。
最后,如果我使用GDB: Default (Bundled)
配置GDB: Default (Bundled)
我希望它不会运行良好,但实际上它会进一步发展,并且允许暂停/继续的功能非常有限(但绝对没有其他功能),并且不会抱怨关于符号
我有一个类似的设置(CLion除外),并且能够通过STM32F4DISCOVERY (上面装有ST-LINK v2)调试STM32板。 也许,如果您按照我的指示进行操作,它也会为您解决。
首先,在构建固件时,向GCC提供下一个标志:
# Debug flags
CFLAGS += -Os -g -fno-schedule-insns -fno-schedule-insns2
# Backtrace support
CFLAGS += -fno-omit-frame-pointer -funwind-tables
CFLAGS += -mapcs -mno-sched-prolog
LDFLAGS += -mapcs -mno-sched-prolog
使用下一个脚本启动GDB服务器。 当然,必须安装st-util ,因为该脚本会使用它。
#!/bin/sh
CROSS_COMPILE=arm-none-eabi-
GDB=${CROSS_COMPILE}gdb
if [ $# -ne 1 ]; then
echo "Please provide elf-file for debug symbols" >&2
exit 1
fi
elf_file="$1"
echo '---> Starting GDB server...'
if [ -f gdb.pid ]; then
kill -9 $(cat gdb.pid)
rm -f gdb.pid
fi
st-util & echo $! >gdb.pid
echo '---> Starting GDB...'
$GDB -ex "target extended localhost:4242" $elf_file
kill -9 $(cat gdb.pid)
rm -f gdb.pid
将其另存为gdb.sh
并按以下方式运行(一旦您的主板通电):
$ ./gdb.sh your-firmware.elf
您会看到(gdb)
提示。 现在,您可以使用常规的GDB命令进行调试。 就我而言,GDB向我展示(开始时):
GDB connected.
reset_handler () at ../../cm3/vector.c:68
68 for (src = &_data_loadaddr, dest = &_data;
所以我通常这样做:
(gdb) break main
(gdb) continue
(gdb) list
然后使用常规的调试命令,例如step
, next
, print var
, bt
等。一切正常。
还应该提到的是,我在固件中使用的是libopencm3 ,因此它也可能对操作成功产生某些影响。 我建议您从libopencm3-examples中构建并刷新一些简单的示例 (如本 示例 ),然后尝试使用GDB对其进行调试。 如果可行,并且您的代码不适用于GDB,则可以轻松查找差异并查找问题。
[1] 调试细节
升级到CLion 2016.3.3可解决此问题。
我遇到一些间歇性的减速/连接问题,但我不能确定这是CLion的事情。
谢谢Sam Protsenko和Eldar Abusalimov在此方面的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.