欢迎访问个人我的主页 qupzhi.com ,转载请注明出处。linux
摘要:在linux上用vim写C++的时候,一般用gdb进行调试,不能为所欲为的看代码和跳转代码以及加watch(也有多是由于我尚未get正确的使用方法)。为此我发现Clion能够作到自动同步本场代码或本身下载远程代码同步到本地,以及调试在远程机器上运行的代码,为此记录下来。c++
简介
CLion 是一款专为开发 C 及 C++ 所设计的跨平台 IDE。 它是以 IntelliJ 为基础设计的,包含了许多智能功能来提升开发人员的生产力,从而提高工做效率 。shell
环境准备
- 操做系统: macOS / Windows
- IDE: CLion
- 源码路径: Node Master
自动同步
- 打开CLion的设置,进入到 Preferences | Build, Execution, Deployment | Deployment
- 点加号,添加一个远程配置
- 设置为SFTP协议,设置远程ip、port、pass而后点击Test Connection,确认是否链接成功
- 切换到Mappings
- 设置本地的代码根目录Local path
- 设置远程的代码根目录 Deployment path
- 上传一个文件
- Upload是上传,Download是下载,本地与远程所映射的目录咱们在上面设置过了
- runlvm.sh文件更新成功,如今的时间是3月18 21:42
- 在Tool - Deployment - Automatic Upload(always) 设置为自动同步
- 自动同步的话能够在每次在本地改动代码的时候本身同步了
- Sync with Deployed to 就是自动下载远程代码到本地
- 手动上传整个项目
- 上传成功,上传了100个文件
- 查看远程目录,确实成功了
好了,如今只要在本地有任何的改动都会自动同步到远程了。vim
远程调试
CentOS的依赖依赖
# cmake
yum install cmake -y
# gcc & gdb
yum install gcc-c++ -y
yum install gdb -y
#gdbserver
yum install gdb-gdbserver -y
复制代码
添加GDB Remote Debug
本地克利翁配置
- 添加一个GDB远程调试的配置 GDB Remote Debug
- 设置远程访问参数(target remote args): tcp:xx.xx.xx.xx:1234
- 设置远程路径和本地路径的映射(Path mappings)
- 远程调试链接成功后,像本地调试同样,能够设置断点,单步跟踪等
- 调试须要本地和远程的代码一致
两个方法设置远程配置
方法1、 远程gdbserver的启动 远程调试依赖gdbserver的来支持,经过gdbserver的启动的程序,会先等待远程调试的链接,链接成功后再启动进程。bash
假设代码的根目录:/data/pzqu/read_phy_disk_use/
,执行如下代码之后编译app
cd /data/pzqu/read_phy_disk_use/build
cmake .. -DCMAKE_BUILD_TYPE=Debug
make
gdbserver :1234 ./read_phy_disk_use
复制代码
注意:cmake的指定须要-DCMAKE_BUILD_TYPE=Debug来请获取调试tcp
方法二 远程gdbserver的动态链接 gdbserver的还支持动态绑定到已经启动的进程
gdbserver :1234 --attach <PID>
复制代码
打断点开始调试
- 咱们能够看到代码中止到了断点处
- Variables 是能够本身设置的watch
- 和正常调试方式同样啦
用CLion彻底的在远程工做
这是一个很是很是爽的操做,之后就能够彻底的用IDE来写代码了,虽然使用命令行显得比较专业,可是使用工具能够有效的提升工做效率,何乐而不为呢? 工具
- 进入 Preferences | Build, Execution, Deployment | Toolchains
- 设置远程链接信息,CLion会自动监测CMake gcc g++ gdb的信息
- 进入Preferences | Build, Execution, Deployment | CMake
- Toolchain 选择咱们刚刚设置的
- 上面的
Automatically reload CMake project on editing
的设置勾上的时候,只要代码有修改就会自动编译
-
如今已经配置了远程Toolchains工具链并配置了相应的CMake配置文件测试
-
上图是自动编译和上传到的目录/tmp/tmp.pIdETgMIBR
,而后咱们只要设置为自动同步目录就成了,以下图 ui
-
如今已经设置成了自动同步目录,只需在运行/调试配置切换器中选择正确的CMake配置文件,便可以彻底远程的方式构建,运行和调试应用程序和测试。
- 添加Application来跑咱们的程序
- 远程运行,本地输出结果
- 远程运行,本地自动调试
总结
- 配置CLion中的同步信息:同步到哪台机器的哪一个目录。
- 使用 Deployment 让本地和远程能够自动同步和自动下载,手动同步和手动下载代码
- 配置GDB remote Debug设置
- 使用gdbserver来启动程序进行调试
- 使用gdbserver attach依附已经启动的程序进行调试
- 彻底在本地进行远程代码调试
其余
- 这种方式是否是很是的优雅,这样咱们只要不断的添加工具链(Toolchains)就能够在本地应对数不清的远程环境了。
- 这种方式应该适用于JetBrain全家桶