C/C++ 编程有哪些值得推荐的工具?

论坛 期权论坛 知乎     
热心用户   2019-5-17 23:31   5279   5
转载声明:本文由互联网用户自发贡献,部分转载来源来自知乎(zhihu.com),强烈建议您访问知乎查看完整内容。本社区不拥有所有权,也不承担任何法律责任。如有侵权,请联系optbbs@163.com。一经查实,即刻删除。
工欲善其事,必先利其器。最近在搜集这方面的工具,发现以前自己什么都自己做,累得要死还事倍功半,too young too simple , sometimes naive 。

请推荐C/C++编程中犀利的工具 ! 包括关乎程序员编程、debug、性能、测试、软件工程等各方面的好工具!(最好是免费的,更好的是开源的 :))

楼主说几个抛砖:

winmerge ,堪比ultracompare的开源工具;
Luke StackWalker ,查找程序性能瓶颈的工具;
visual assist x ,Visual Studio 神器级插件;
XueTr ,windows下安全监测/Hook监测的很好的工具;
etc.
分享到 :
0 人收藏

5 个回复

倒序浏览
2#
zhihu用户  16级独孤 | 2019-5-17 23:31:26 发帖IP地址来自
对于想尝(ru)试(keng)emacs的同学,可以试试spacemacs,一个emacs的发行版,几乎所有常用包都已经有专人帮你配置好了。

--很短的分割线

我推荐几个emacs下用于c/c++的插件:
  • irony-mode, 调用clang的补全库进行补全,完美解决了以前emacs自动补全速度慢的问题,比clion和netbeans都快。
  • company-mode, emacs下万用的一个补全前端,配合irony-mode使用的。
  • flycheck, 静态查错,非常好用,而且速度快,完爆clion。irony-mode有提供一个flycheck的后端。另外还可以使用cppcheck(也是一个静态代码分析,但并不是语法之类的查错,而是bug分析,譬如越界,内存泄露等,甚至分析coding style)作为后端,和irony可以一起用。
  • eldoc,文档查看。我个人使用中最重要的功能就是在mini-buffer(以及company-mode)中显示函数的signature。
  • neotree,一个文件浏览用的bar,可以替代speedbar(这玩意儿真的垃圾)的文件浏览功能。
  • helm-gtags,一个gtags的前端,主要用于跳转函数定义,类定义,查找caller等。利用了helm (这个简直是emacs中一个跨时代的插件,谁用谁知道)。helm-gtags中的几乎所有命令都非常有用。
  • projectile, 项目管理工具,非常方便地跳转项目中的文件以及快速跳转项目相关的buffer。功能相当多。尤其是projectile-grep实在是必备利器。

接下来几个非emacs插件,但是很常用的:
  • gdb, 调试器。emacs有内置的和gdb的interface,可以直接在emacs中调试,并且提供类似ide的功能(红点显示breakpoints,在源码中标示当前位置)。并且emacs speedbar可以watch expressions,类似ide的watch功能。建议将gdb-many-windows打开,可以自动分屏为6个windows,分别显示gdb,源码,local variable, stack, output等。虽然看起来简陋,但是比起cliion这种一开调试就吃掉一两g内存,走一步卡几秒的渣渣还是好用不少。netbeans就不说了,貌似至今还没有可用的c++调试器。。。
  • valgrind,一套代码分析工具,可用于查内存泄露等问题。我主要使用其中的附带的profiler,叫做callgrind。
  • kcachegrind,可以将callgrind的输出变得更直观的一个前端。
  • 能够使用wiki的人可以看这个,列出了很多静态代码分析工具:https://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#C.2FC.2B.2B
  • gprof2dot,屌炸天的一个将callgrind的输出转成图形的工具。效果图(请点开大图看):


另外几个不是直接用于c/c++,但是我觉得很有用的插件:
  • helm,上面提到过,最牛x的emacs插件了。完全改变了emacs用法。尤其推荐新手马上装,配合meta+x可以大大减少你记忆快捷键的痛苦。
  • ace-jump-mode,一个用于跳转的插件,神器之一。具体用法参见主页,文字不容易说清。
  • 非插件,但是这两个函数实在太有用,第一个是自动缩进整个代码,第二个是自动缩进当前段落。第二个我用得尤其多,绑定到快捷键上,就是一键自动缩进,对于python来说更是利器。。
  1. (defun indent-whole-buffer ()  "indent whole buffer"  (interactive)  (delete-trailing-whitespace)  (indent-region (point-min) (point-max) nil)  (untabify (point-min) (point-max)))(defun indent-current-paragraph ()  "indent current paragraph"  (interactive)  (save-excursion    (delete-trailing-whitespace)    (mark-paragraph)    (indent-region (region-beginning) (region-end) nil)))
复制代码

还有很多有用的插件,譬如自动补齐括号,自动高亮对齐的括号,自动在operator和标点周围插入空格,等等。限于这是关于c/c++的主题,我就不继续介绍了。emacs用久了大家都会慢慢知道这些的。


BTW,对于python用户,强烈推荐elpy。当装上这个插件后,我默默删了pycharm。
3#
zhihu用户  16级独孤 | 2019-5-17 23:31:27 发帖IP地址来自
集成开发环境(IDE)C/C++集成开发环境列表
  • AppCode :构建与JetBrains’ IntelliJ IDEA 平台上的用于Objective-C,C,C++,Java和Java开发的集成开发环境
  • CLion:来自JetBrains的跨平台的C/C++的集成开发环境
  • Code::Blocks :免费C,C++和Fortran的集成开发环境
  • CodeLite :另一个跨平台的免费的C/C++集成开发环境
  • Dev-C++:可移植的C/C++/C++11集成开发环境
  • Eclipse CDT:基于Eclipse平台的功能齐全的C和C++集成开发环境
  • Geany :轻量级的快速,跨平台的集成开发环境。
  • IBM VisualAge :来自IBM的家庭计算机集成开发环境。
  • Irony-mode:由libclang驱动的用于Emacs的C/C++微模式
  • KDevelop:免费开源集成开发环境
  • Microsoft Visual Studio :来自微软的集成开发环境
  • NetBeans :主要用于Java开发的的集成开发环境,也支持其他语言,尤其是PHP,C/C++和HTML5。
  • Qt Creator:跨平台的C++,Javascript和QML集成开发环境,也是Qt SDK的一部分。
  • rtags:C/C++的客户端服务器索引,用于 跟基于clang的emacs的集成
  • Xcode :由苹果公司开发
  • YouCompleteMe:一个用于Vim的根据你敲的代码快速模糊搜索并进行代码补全的引擎。
构建系统
  • Bear :用于为clang工具生成编译数据库的工具
  • Biicode:基于文件的简单依赖管理器。
  • CMake :跨平台的免费开源软件用于管理软件使用独立编译的方法进行构建的过程。
  • CPM:基于CMake和Git的C++包管理器
  • FASTBuild:高性能,开源的构建系统,支持高度可扩展性的编译,缓冲和网络分布。
  • Ninja :专注于速度的小型构建系统
  • Scons :使用Python scipt 配置的软件构建工具
  • tundra :高性能的代码构建系统,甚至对于非常大型的软件项目,也能提供最好的增量构建次数。
  • tup:基于文件的构建系统,用于后台监控变化的文件。
静态代码分析提高质量,减少瑕疵的代码分析工具列表
这个网站整理的比较全,可以看看值得推荐的C/C++框架和库
4#
zhihu用户  16级独孤 | 2019-5-17 23:31:28 发帖IP地址来自
主要是linux下的工具:
编辑器
  • vim
  • emacs
  • kate(KDE下一个功能强大的编辑器)
IDE(集成开发环境)
  • eclipse+cdt
  • clion
  • qt cteator
编译器
  • gcc
  • g++
  • clang
调试器
  • gdb
构建工具
  • cmake
  • make
内存工具
  • Purify
  • Valgrind工具集(包括剖析工具Callgrind和线程分析工具Helgrind等)
  • KCachegrind
剖析工具
  • gprof开源剖析工具,通常作为gcc编译器的一部分。
  • Quantify是IBM的一个功能强大的商业剖析工具。
静态检查器
  • Lint
  • google cpplint
  • C++test
  • cppcheck
并行编程工具
  • Posix Threads
  • MPI(Message Passing Interface)
  • MapReduce(并行计算框架)
代码工具(命令行工具)
  • nm 列出来自对象文件的符号
  • objdump 显示对象文件信息
  • strings 列出二进制文件中可输出的字符串
  • strip 删除来自对象文件的符号
  • m4 宏处理程序
  • indent 代码格式化工具
监测工具
  • time 计时工具
  • ps 显示运行进程的当前状态
  • top 给出系统的详细信息
  • strace 记录对操作系统的所有访问,例如内存分配、文件I/O、系统调用和子进程的启动
5#
zhihu用户  16级独孤 | 2019-5-17 23:31:29 发帖IP地址来自
这种问题有啥好问的,每次都是看别人说得高大上,最后我还是用VS
6#
zhihu用户  16级独孤 | 2019-5-17 23:31:30 发帖IP地址来自
难道不是source insight 吗?

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:64547
帖子:12910
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP