源作者:编编成程
clion怎么运行c语言程序Embedded GDB Server
他其实是默认假设你在目标板上做开发,或者你想让别人来连接到你,可以看到这里都是配置对应的gdbserver选项,同时在建立之前还要先通过编译,他会尝试去编译这个程序然后再启动。
GDB Remote Debug
这是比较常用的一个,在这里他需要指定你的服务器地址,然后告诉他你调试的符号(在Linux情况下就是ELF本身,Windows下是PDB文件)设置好sysroot然后启动即可,这个不需要再次编译本机的文件,需要远程服务器已经启动对应的gdbserver,比如
同时需要注意的时候这里的symbol file不一定要选,因为最近版本的gdb client默认会支持从gdbserver处去锁区对应的symbols,因此这个如果留空一样可以work.(测试下来发现不行,断点会变灰)
Remote GDB Server
这个的意思可以看到他跟上面两者的区别,在这里他需要你提供Credentials来做链接,他会帮你远程去启动对应的app然后挂载上gdbserver,然后在你本机进行启动调试,可以认为他是前面两者的结合,又去了upload的事情启动gdbserver,又做了本地target remote的事情,但是仍然会尝试编译。同时这里要注意密码的问题,即使你没有密码,你输入个空格也要保存一下,不然之后会卡在登录环节
clion怎么创建C工程并编译另外要注意这种方式的启动路径cwd其实为/home/root,通过gdb ->info proc可以查看,因此如果你对cwd有要求需要设置Advanced GDB Server options的working directory
在上面官方的文档也可以发现两者的区别:
如果你已经有对应的executable和symbol file,这个GDB Remote Debug就非常合适你,你需要手动在板子上在gdbserver下启动
如果你恰巧在CMake工程下进行开发,同时你希望CLion能够帮你自动上传到远端机器并且帮你起对应的gdbserver,你就可以用这种方式
总结:
只有方法二,不用每次进行编译,不然的话都会尝试去做编译
方法三结合了方法一和方法二的特别,完全自动化
方法一是在你作为开发板或者你本机想被别人remote调试的一种方法,他帮你编译并且执行对应的gdbserver