我在Linux环境下开发C++应用程序。 我每天使用的工具包括带有CDT插件的Eclipse、gdb和valgrind。
其他人都使用哪些工具呢? 在Linux中是否有任何可以与Microsoft Visual Studio媲美的工具?
我在Linux环境下开发C++应用程序。 我每天使用的工具包括带有CDT插件的Eclipse、gdb和valgrind。
其他人都使用哪些工具呢? 在Linux中是否有任何可以与Microsoft Visual Studio媲美的工具?
我使用一堆终端窗口。在一个窗口上运行 vim 处理有趣的源文件,在另一个窗口上输出 make 和 g++ 的编译器错误,或者在 gdb 会话中查找运行时错误。如果需要帮助查找定义,我会运行 cscope 并使用 vim 的 cscope 支持来跳转。
Eclipse CDT 是我的第二选择。它很好用,但与 vim 相比,它更大、笨重且缓慢。
使用终端窗口和 vim 非常灵活,因为我不需要随身携带 400 MB 的 Java,我可以从任何地方使用 SSH 会话。
当需要查找内存问题时,我使用 valgrind。
我使用 strace
在系统调用级别上监视软件的运行情况。这让我能够清理掉那些四次调用 time(0)
或过多调用 poll()
或非阻塞 read()
等代码,或者像每次只读取 1 字节的 socket 读取调用 read()
.(这太低效和懒惰了!)
我使用 objdump -d
检查机器码,特别是对于性能敏感的内部循环。这就是我发现字符串数组索引运算符比使用迭代器慢的方式。
我使用 oprofile 尝试在优化代码中找到热点,我发现它比 gprof 好用一些,并且可以查找数据和指令缓存失效等情况。这可以向你展示在哪里使用 GCC 的 __builtin_prefetch
来提供有效的预取提示。我也尝试过使用它来查找热的预测错误分支,但这对我来说没有起作用。
更新:我发现 perf 比 oprofile 好用得多。至少在 Linux 上。学会使用 perf,像我一样爱上它。
当然是使用g++,还有Code::Blocks,它是一个非常棒的跨平台IDE(支持Win32、*nix和Mac)。
我使用来自SVN的夜间构建版本(最近更像是每周一次),几乎拥有现代IDE中所期望的所有功能。它真的是一款非常棒的开源项目。
另外,在Linux上你可以使用Valgrind,这可能是目前最好的内存跟踪工具(也可以做其他事情)。而且它是免费的 :) 轻松追踪内存泄漏等问题。
此外还有更多!Linux真是一个很好的开发平台 :)
(编辑)刚意识到你在问题中提到了Valgrind,我太粗心大意了。
在为Linux开发C++应用程序时,我更喜欢使用一些命令行工具。 Vim与许多插件扩展。 Gdb与ddd、valgrind、libefence一起使用 和SCons(automake非常麻烦,你知道的...)
g++
emacs
bash 命令行
在 emacs 中使用 gdb-mode(输入 M-X gdb)
make
emacs、cmake、gdb、git、valgrind。它可能没有Visual Studio那么流畅,但它工作得很好,并且可以通过bash脚本或emacs lisp轻松添加功能。
目前我使用的是Qt Creator。它是跨平台的,并且与Qt集成得非常好,当然,也可以创建一个独立的应用程序。
g++和make
Eclipse CDT非常棒。虽然我仍然不时地使用Emacs,但我真的很喜欢它的索引、调用树、类型树、重构支持(尽管它不像Java重构那样好),等等。如果你自定义它,语法高亮功能也非常强大(可以为局部变量、函数参数、方法等设置不同的颜色)。代码补全功能也非常方便。我主要使用的是Eclipse 3.3,但3.4也很棒。
此外,我主要将其用于一个相对较大的项目(约1百万行代码),对于玩具项目来说可能有些过头了。
您需要一个标准的工具链和集成开发环境。
关于标准工具链没有太多可说的。只需通过例如在Ubuntu/Debian上安装即可:
aptitude install build-essential