调试Visual Studio开发与“Linux”开发的工作流程方面?

时间:2010-11-11 09:04:34

标签: c++ visual-studio linux debugging gnu-toolchain

好的,所以周围有很多问题,要求提供“Linux上的Visual Studio等效”或这个问题的变体。 (hereherehere,...)

我想关注一个方面并询问调试工作流程在不同系统上可能有何不同,特别是Visual Studio(类似)系统使用的完全集成的IDE方法,以及可能更多“独立”的工具链导向方法。

为此,让我提出我认为对“Visual Studio调试工作流程”的简短描述:

  • 鉴于现有项目
  • 我打开项目(从用户的角度来看是一步)
  • 我导航到我想要调试的代码(可能是通过搜索我的项目文件,只需打开在文件中查找对话框即可完成。)
  • 我在第(a)行放了一个断点,只需将光标放在该行上并点击F9
  • 我在第(b)行放了一个“tracepoint”,在那里添加一个断点,然后更改断点属性,以便调试器不会停止,而是跟踪局部变量的值。
  • 我点击F5,它自动编译我的可执行文件,在调试器下启动它,然后我等到prg停在(a),同时监视跟踪窗口输出(b)
  • 当调试器最终停在(a)时,我的屏幕会自动同时显示(一次性预先配置的窗口)中的以下信息
    • 当前通话堆栈
    • 最近更改的局部变量的值
    • 加载的模块(DLL)
    • 所有活动断点及其位置的列表
    • 一个监视窗口,其中包含我输入的最后一个监视表达式
    • 检查原始内存内容的内存窗口
    • 显示当前寄存器值的小窗口

加/减某些功能,这也是我在Linux下的Eclipse / CDT所期望的。 在使用VIM,Emacs,gdb / DDD等进行开发时,如何检索此工作流程和显示的信息?

这个问题实际上并不是关于某个工具是否具有某个功能,而是关于看到开发/调试工作是使用功能组合,并且触手可及的多个选项以及如何您在not using完全集成的IDE时访问此信息。

1 个答案:

答案 0 :(得分:2)

我认为您的答案不仅仅是您使用的软件,还包括您使用的方法。我使用Emacs并依赖于TDD进行大部分调试。当我看到一些失败的东西时,我通常会写一些测试填补我(显然)错过的空白,并检查每一个期望。所以每次我使用调试器时它都会很远。

当我遇到问题时,我有几种选择。在某些情况下,我首先使用valgrind,它可以立即告诉我是否存在一些与内存相关的问题,从而无需使用调试器。它将直接指向我覆盖或删除应该保留的内存的行。如果我怀疑valgrind的竞争条件非常好。

当我使用调试器时,我经常在emacs中通过GUD模式使用它。它将为我提供堆栈,局部变量,源代码,断点和我可以命令调试器的窗口的视图。它通常涉及设置几个断点,观察一些内存或一些评估,以及单步执行代码。这非常类似于在IDE中使用调试器。 GDB调试器是一个强大的野兽,但我的问题从来没有大到足以需要调用它的力量。