加载中...
Linux下的c++开发,平时是怎么调试代码的呢?
第1节:代码改善:一个“坑爹”的文字类冒险游戏
第2节:在禁止多重继承的情况下,如何设计“直立智慧猩猩”类?
第3节:C++多线程代码中的“乱序”执行现象
第4节:C++中函数指针有什么作用呢?
第5节:为什么我用c++写的游戏那么简陋?
第6节:多线程读写socket导致的数据混乱的原因是什么?
第7节:WebSocket 是什么原理?为什么可以实现持久连接?
第8节:怎样在c++中实现instanceof?
第9节:一个函数多处 return 是好风格吗?
第10节:C++中虚函数相比非虚函数的优势
第11节:为什么 C::C::C::C::foo() 能编译成功?
第12节:如何静态反射C++枚举的名字
第13节:看C++大叔如何拥 java 妹子入怀……
第14节:坨——理解递归实现“汉诺塔”代码的关键
第15节:C++编译器如何实现 const(常量)?
第16节:C++如何为断言加上消息
第17节:初学C++到什么水平,算是合格的初级开发工程师?
第18节:C++编程要避免使用单例模式吗?
第19节:学习C++要学boost库吗?
第20节:C++的继承就是复制吗?
第21节:C++构造函数失败,如何中止创建对象?
第22节:C++学完多线程后,学什么呢?
第23节:string_view 适合用做函数的返回值类型吗?
第24节:为指针取别名,为何影响const属性?
第25节:std::enable_shared_from_this 的存在意义?
第26节:C++模板可变参数如何一次性解包?
第27节:Linux下的c++开发,平时是怎么调试代码的呢?
课文封面

日常写个代码就是在Linux里一个黑乎乎、或者绿油油、或者五颜六色的文字界面终端下敲字符,仿佛自己是黑客?
图形界面的集成开发环境(IDE)它不香吗?

有些同学对 linux 开发存在非常古老的误解:以为日常写个代码就是在linux里一个黑乎乎、或者绿油油、或者五颜六色的文字界面终端下敲字符……像极了电影中的黑客。

如果说到调试,这下刻板的印象更加固化了,密密麻麻的满屏幕的字符……调试者盯着屏幕,鼻尖冒汗,镜头缓慢推进 ,小小的汗珠里倒映的,挤了六个字母……

有时候,需要远程调试时,确实会使用字符界面——一来服务器确实没有图形界面,二来也可以减少网络传输。但要说日常在 linux 下写程序,我从 2007 年 基本就在linux下写程序,但我的喜好是:尽量别因为用个 Linux,就把自己搞得很“极客”的样子(太累)。

日常在办公室里——

  1. 吹着空调的冷气或热风;
  2. 喝着冰的热的奶茶或咖啡
  3. 脱掉皮鞋或运动鞋,脚趾夹着人字拖
  4. 边上偶尔有可爱的“鼓励师”……

这种舒爽的状态下,你让我眯起眼看字符界面?可能是有喜欢这样的人,特别是在条件4满足的情况下,但反正我不爱。

所以,在Linux下的日常开发C++程序如何调试? 我就用图形界面程序,也就是IDE开发并调试。基本上这些IDE都跨平台,所以你问我在 Window下如何开发调试?也得是这些图。

用 CodeBlocks 调试——

当年写《白话C++》书所用的IDE。实际在公司工作中也用过。特别是需要使用免费的 wxWidgets 开发跨平台GUI界面时,它内置的界面设计器 wxSmith 挺好用。

Code::Blocks

用 CLion 调试——

花钱买授权的,好用是真好用,就是每年续费时,会感觉肉疼。
主要用来写后台服务端,没图形界面那种。

CLion

用 VS Code 开发——

主要是要和别的一两门语言混着写的时候,以及写一些教程,需要考虑读者的方便性(虽然但是,VS Code 的配置一点也不简洁,烦得很)。

VS Code

用 QtCreator调试——

需要用Qt开发跨平台的GUI应用时,但事实上就算不写图形界面程序,它也是简洁流畅高效的(但要用它集成的CMake,不要用它自带的qmake)。

QtCreator

用 KDevelop 调试——

其实,打一开始(至少20年前), Linux 就有很成熟的图形界面开发环境,比如这个 KDevelop就是本师还很年轻时,曾经有两年时间基本就在Linux的KDE环境下写C++代码……后来就没再用过,所以电脑上已经没有了,上官网拉了张图。

KDevelop

用浏览器调试——

回答CSDN或知乎等网站的网友问题时,或者写课程,或者临时验证个功能时……在线写代码太方便了一样可以保存,不用担心代码丢失,并且可以在线分享,读者可以直接运行……

最常用的是 onlinegdb。如它名字所暗示的,它当然可以调试。本站《C++快速感受与探索之旅》,就是让你可以打开浏览器学C++精髓中的精髓编程知识的一个课程。

OnlineGDB