首页 > 系统相关 >clion c linux远程开发与多进程调试

clion c linux远程开发与多进程调试

时间:2022-12-10 16:33:27浏览次数:66  
标签:makefile vs linux debug clion 远程 调试

  本来vs是没有意见的,实在是vs 2017太大了,又不做windows下开发。从2020.2开始,clion原生支持makefile、cmake则很早就支持,这样对于makefile工程如pg就不再需要通过cmakefile调用makefile。​​https://isocpp.org/blog/2020/07/clion-2020.2-release-makefile-projects-cpp20-static-analysis-doctest​

  早期版本通过cmakefile调用makefile,可参考​​https://stackoverflow.com/questions/26918459/using-local-makefile-for-clion-instead-of-cmake​

  clion支持full remote development的概念,自动在本地目录和linux服务器目录间自动同步,使用远程的toolchains。比很多35后先本地vs搞好通用的,然后拷贝到linux上通过gdb调试或vs code远程调试不知道高多少倍(不好意思,在工作期间一两个月还没转过来的都被优化,先进的IDE从来都能提高生产力。如果你非说不影响工作效率,随意,如果别人都很快,你很慢,就不好意思),这事参考clion官方的full remote development一节手册配置即可。

  clion有个做的不那么直接的功能是,已经直接支持attach to process,但是这个process不提供选择远程服务器上的进程(反之vs就直接提供,vs code天然走配置也支持)。对于单进程程序来说,clion的远程开发措措有余。如果是多进程开发,则通常主进程是网络监听器,子进程才是业务处理的地方,所以日常开发debug基本上子进程,clion的attach to process就不够了,以前总用vscode和vs配合,总觉得不方便。国庆研究了下,可以使用clion的gdb remote debug功能(这得感谢​​https://blog.jetbrains.com/clion/2021/05/clion-debugging-beyond-the-basics-part-3-beyond-local/​​)。

  首先在linux服务器上安装gdb-server,yum install gdb-gdbserver-x86_64

  在clion中,新建gdb remote debug,如下:

clion c linux远程开发与多进程调试_子进程

   一定要选bundled版本的GDB。

   启动子进程,然后通过gdbserver attach到子进程。gdbserver :34567 --attach $(PID)

clion c linux远程开发与多进程调试_linux_02

clion c linux远程开发与多进程调试_linux_03

 

然后clion中启动debug,就可以看到进入断点了。

clion c linux远程开发与多进程调试_子进程_04

 

 

clion c linux远程开发与多进程调试_GDB_05

   符号表是按需加载的,可以看到从远程加载到了e:\win\lib\debug\目录。从此,vscode和vs不再需要。

  如果一直提示No symbol table is loaded. Use the "file" command ,则要看一下程序编译的时候是否没有包含O0 -g选项,默认gcc使用O2编译。

  如果出现如下错误:

Program received signal SIGINT, Interrupt.
0x00007f404c927fb3 in __epoll_wait_nocancel () from target:/lib64/libc.so.6
No source file named .xxx/trunk/Sources/postgresql-13.3/src/backend/parser/parser.c.

  说明映射不太对,可以看看从哪里读取的符号表。

clion c linux远程开发与多进程调试_子进程_06

  映射配置的是/home/zjh,为啥到/home/lightdb去了呢?这个还不知道。。重新配置就好了。

  注:从idea 2020.1.1开始,也支持远程模式,这得感谢docker,使得某些要调用linux命令的开发调试大大简化。

  GDB远程调试超时可以通过​​https://www.jetbrains.com/help/clion/configuring-debugger-options.html​​配置。

  clion makefile application和makefile target的区别:​​https://stackoverflow.com/questions/67376765/clion-makefile-error-error-running-makefile-cannot-run-program-usr-bin-ma​

相关问题

   创建Makefile应用时,target下拉为空。

clion c linux远程开发与多进程调试_linux_07

  点击设置按钮,新建一个target即可,不用设置,留空就好。

  makefile项目debug时,断点进不去。

  

clion c linux远程开发与多进程调试_linux_08

   确保工程使用-g编辑。否则vscode/vs也都进不去。

build project的时候报“cannot find any cmake profile”,如下:

clion c linux远程开发与多进程调试_linux_09

   如果可以直接debug的话,应该不影响。

  当然,如果不打算使用远程linux的话,可以使用cygwin/mingw,clion对其提供了原生支持。如下:

  

clion c linux远程开发与多进程调试_linux_10

 

  


标签:makefile,vs,linux,debug,clion,远程,调试
From: https://blog.51cto.com/zhjh256/5927789

相关文章

  • linux(centos 6/7/8,kylin)下记录所有用户的操作以及ip、时间
    [root@sdw~]#mkdir/var/log/history[root@sdw~]#chmod777/var/log/history编辑/etc/profile文件,在文件末尾加入下面代码:[root@iZ23nn1p4mjZroot]#vi/etc/profileh......
  • Linux常用命令-awk
    awklinux强大的文本处理工具常用命令#-F指定分隔符#$0打印该行所有位置#$1,$2,$3打印对应位置#$NF打印匹配行最后一位cattest.txt|awk-F'|''{print$N......
  • Linux常用命令-grep
    grep:linux命令,常用于查找文件中的文本内容zgrep常用于查找压缩文件中的内容常用选项#-i不区分大小写#-v反向匹配#-a把二进制文件当作文本文件处理,常用于查找......
  • 如何免密连接远端的linux
    1.拿到本地电脑的公钥  2.将公钥复制到远端linux机子的这个文件里  3.然后在本机电脑测试一下命令[email protected]  4.免密以后的第一次是要......
  • Linux常用命令-sed
    sed:linux命令,常用于过滤和转换文本常用选项#-e:直接在命令列模式上进行sed的动作编辑,可以在一行内执行多条命令;#-i:直接修改读取的文件内容,而不是输出到终端#......
  • Linux安装Redis
    安装Redis依赖yuminstall-ygcctcl上传安装包并解压安装包下载地址 ​​https://redis.io/download/​​tar-zxvfredis-6.2.6.tar.gzcdredis-6.2.6编译make&&mak......
  • archlinux基本安装、以及图形化界面
    磁盘刻录在windows下载磁盘刻录工具rufus,官网:https://rufus.ie/zh/中文界面,实在不是可以搜索一下磁盘刻录教程在linux下使用balena-etcher,官网:https://www.balena.......
  • Linux笔记
    https://www.processon.com/view/link/6394245b0e3e744af16d433e ......
  • Linux的free命令与OOM的简单总结
    简介查看操作系统配置最关键的几个命令是lscpu查看CPU信息以及free查看内存信息.不过free信息有一个疑惑点他的free的值可能很小.会让搭建产生误解.这里简单说明一下.......
  • 查看Linux服务器日志
    cat日志文件|grep-C5'关键字'--查看关键字前后5行的日志cat-n日志文件|grep-C5'关键字'--查看带有行号的关键字前后5行日志--------------------待更新-......