如何在JetBrains CLion中搭建RISCV Spike的GDB调试链路?
解决CLion调试RISC-V SPIKE时强制要求TCL_PORT的问题
问题根源
CLion的OpenOCD调试模块依赖OpenOCD的TCL控制端口完成IDE与调试器的交互(比如获取目标架构信息、管理调试会话),这是IDE层面的设计要求,和GDB直接连接OpenOCD的GDB端口的逻辑不同。
解决方案步骤
启动OpenOCD时显式指定TCL端口
修改OpenOCD启动命令,强制开启TCL端口(端口号可自定义,只要不与系统其他服务冲突),示例命令:openocd -f <你的SPIKE适配配置文件> -c "gdb_port 3973" -c "tcl_port 6333" -c "telnet_port disabled"启动后检查OpenOCD日志,确认出现以下两行输出,说明端口已正常监听:
Listening on port 6333 for tcl connections
Listening on port 3973 for gdb connections配置CLion的OpenOCD调试项
- 打开CLion的调试配置界面,选择已创建的「OpenOCD下载」配置;
- 确认已正确指定OpenOCD二进制文件路径;
- 在「OpenOCD Options」或「Additional Arguments」中,添加
-c "tcl_port 6333"(和启动命令中的端口保持一致); - 保存配置后重新启动调试会话。
弃用远程调试配置
SPIKE的RBB端口并非标准GDB服务器,必须通过OpenOCD中转,因此CLion的「远程调试」配置不适用,应专注调整OpenOCD相关配置。
额外提示
- 如果不需要Telnet端口,启动命令中加入
-c "telnet_port disabled"可以避免不必要的端口占用; - 若端口冲突,可更换为其他未被占用的端口号(比如6334、6335等),确保OpenOCD启动命令和CLion配置中的端口一致即可。
内容的提问来源于stack exchange,提问作者Pope B.Lei
相关产品推荐
相关产品推荐

