c++ - 您使用什么工具在 Linux 上开发 C++ 应用程序?

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。
关闭10年前.

我在 Linux 环境中开发 C++ 应用程序。我每天使用的工具包括带有 CDT 插件的 Eclipse、gdb 和 valgrind。
其他人使用什么工具? Linux 上是否有任何东西可以与 Microsoft Visual Studio 的流畅性相媲美?

最佳答案

我使用了一堆终端窗口。我在有趣的源文件上运行 vim,在另一个文件上运行 make 和 g++ 以用于编译器错误或用于运行时错误的 gdb session 。如果我需要帮助查找定义,我会运行 cscope 并使用 vim 的 cscope 支持来跳转。

Eclipse CDT 是我的第二选择。与 vim 相比,它很好,但体积庞大、笨拙且缓慢。

使用终端窗口和 vim 非常灵活,因为我不需要随身携带 400 MB 的 Java,我可以在任何地方使用 SSH session 。

当我需要查找内存问题时,我会使用 valgrind。

我使用 strace 来观察我的软件在系统调用级别上执行的操作。这让我可以清理连续四次调用 time(0) 或对 poll() 或非阻塞 read 进行太多调用的非常愚蠢的代码() 或诸如在套接字上调用 read() 以一次读取 1 个字节。 (那就是 super 低效又懒惰!)

我使用 objdump -d 来检查机器代码,尤其是对性能敏感的内部循环。这就是我发现字符串上的数组索引运算符与使用迭代器相比速度慢的原因。

我使用 oprofile 尝试在优化代码中查找热点,我发现它通常比 gprof 工作得更好一些,它可以执行诸如查找数据和指令缓存未命中之类的事情。这可以告诉您使用 GCC 的 __builtin_prefetch 在哪里删除一些有用的预取提示。我也尝试使用它来查找错误预测的热门分支,但无法让它为我工作。

更新:我发现 perf 比 oprofile 更有效。至少在 Linux 上。学习使用 perf 并像我一样热爱它。

https://stackoverflow.com/questions/17228/

相关文章:

python - 将 float 转换为一定精度,然后复制为字符串

linux - 如何从/proc/pid/stat 获取应用程序的总 CPU 使用率?

python - 在 Python 中找到 "home directory"?

python - 如何使用 conda 升级到 Python 3.6?

python - 使用 Python 遍历目录

python - 如何创建键或将元素附加到键?

c - 如何使用 C 获取 Linux 中的 CPU 数量?

linux - rm : cannot remove: Permission denied

python - 在 Mac 上安装 python 模块最兼容的方式是什么?

mysql - 如何重启在 Ubuntu linux 上运行的远程 MySQL 服务器?