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

  本来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,如下:

   一定要选bundled版本的GDB。

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

 

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

 

 

   符号表是按需加载的,可以看到从远程加载到了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.

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

  映射配置的是/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下拉为空。

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

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

  

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

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

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

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

  

 

   cygwin相比mingw主要是维护更及时、更重、但是也更加强大。https://zhuanlan.zhihu.com/p/76613134https://blog.csdn.net/sunnytony/article/details/123935813https://www.zhihu.com/question/22137175https://zhuanlan.zhihu.com/p/56692626https://www.cygwin.comhttps://www.mingw-w64.org/

  vs本身也是支持mingw,参见https://www.jb51.net/article/258399.htm

posted @ 2021-10-04 12:23  zhjh256  阅读(1357)  评论(0编辑  收藏  举报