不久前,CLion增加了对远程GDB调试的支持,我正试图用Seggers的J-Link GDB服务器设置它。
我的设置:- VM VirtualBox运行Ubuntu 16.04 J-Link驱动程序:V6.10 目标芯片:nRF51 (ARM Cortex M0)
- CLion 2016.2.2
我通常在windows中工作,但由于CLion不支持windows中的远程GDB,我试图使它在VirtualBox中运行Ubuntu。我在CLion中配置了调试器,如图所示,上面链接中的博客提供了一点帮助。我使用的参数是基于J-Link文档(文档:UM08001)和一些猜测。GDB服务器设置
我的问题是,当运行调试器进程只是停止和CLion的控制台输出:
"无法连接到目标。"请检查电源,连接和设置。"
我已经尝试从终端运行JLinkGDBServer,然后我得到了这个:
/usr/bin/JLinkGDBServer -device nrf51422_xxAC -if swd -speed 1000 -endian little
SEGGER J-Link GDB Server V6.10 Command Line Version
JLinkARM.dll V6.10 (DLL compiled Sep 14 2016 16:46:16)
-----GDB Server start settings-----
GDBInit file: none
GDB Server Listening port: 2331
SWO raw output listening port: 2332
Terminal I/O port: 2333
Accept remote connection: yes
Generate logfile: off
Verify download: off
Init regs on start: off
Silent mode: off
Single run mode: off
Target connection timeout: 0 ms
------J-Link related settings------
J-Link Host interface: USB
J-Link script: none
J-Link settings file: none
------Target related settings------
Target device: nrf51422_xxAC
Target interface: SWD
Target interface speed: 1000kHz
Target endian: little
Connecting to J-Link...
J-Link is connected.
Firmware: J-Link OB-SAM3U128-V2-NordicSemi compiled Jul 5 2016 08:42:09
Hardware: V1.00
S/N: 681666518
Checking target voltage...
Target voltage: 3.30 V
Listening on TCP/IP port 2331
Connecting to target...Connected to target
Waiting for GDB connection...
有人知道我做错了什么吗?
您可能混淆了GDB服务器和GDB本身。这些是GDB选项,应该在CLion的GDB远程调试配置中设置,而不是GDB服务器设置。
也就是说,您首先手动运行JLinkGDBServer,例如,从终端运行,就像您已经做过的那样,并让它等待GDB附加。此时应该注意连接端口:
<>之前监听TCP/IP端口2331连接到目标…连接到目标Waiting for GDB connection…之前然后在CLion中编辑您的GDB远程调试配置以使用主机GDB(在您的情况下最可能是/usr/bin/gdb
,如果必要的话使用sudo apt install gdb
安装它),并使用上面提到的端口作为"目标远程"字符串的一部分:
- gdb:
/usr/bin/gdb
- "target remote"参数:
:2331
请注意端口前面的冒号。这是使用TCP连接到本地主机的简写。为了以防万一,显式的形式是tcp:localhost:2331
。
现在可以启动调试会话了。CLion将启动配置的主机GDB, GDB通过指定的TCP连接与JLinkGDBServer通信,最后GDB服务器与您的设备聊天。