调试器的改进?

时间:2010-09-10 15:53:46

标签: debugging

在过去20年左右的调试器中是否有任何改进?当我启动pdb时,我觉得没有任何改变。我错过了一些巨大的东西吗?

近年来,调试器中增加了哪些创新?

4 个答案:

答案 0 :(得分:2)

Visual Studio的调试器可视化是如此巨大的生产力,特别是在使用C#或C ++ STL时。它还具有块文本,html,xml甚至DataSet的预览器。 STL支持显示矢量,地图,集合和列表。

在VS2010中,使用parallel callstacks对多线程的支持也得到了很大改善。

当我必须在Xcode或gdb上调试时,我觉得我被拖回了黑暗时代(Xcode甚至不会在一半的时间内可靠地显示局部变量,并且显示unicode字符串是一场噩梦)< / p>

答案 1 :(得分:1)

有很多 - 就像在软件开发的其他领域一样。一个很好的例子是reverse-*一组gdb命令,最近在2009年被添加到gdb

答案 2 :(得分:1)

Visual Studio添加了IntelliTrace

这使您可以回放应用并查看历史变量的值,而不仅仅是应用的当前状态。

答案 3 :(得分:1)

我认为“调试器”已经持续了很长一段时间。大多数只是为您提供有关callstack,线程,本地,全局和可能的表达式评估的信息。该功能集非常明确,它可以工作,因此它没有太大变化。它可能不需要。

调试器可帮助您确定程序流程,因为许多其他诊断工具已决定关注非常具体的问题。不要局限于传统的调试器,而是让我们看一下诊断工具的整个空间,因为它们也可以帮助我们调试我们的问题。

  • http://en.wikipedia.org/wiki/Valgrind - 如果您怀疑某些与内存有关的问题,那么您可能不会开始使用调试器逐步执行代码。
  • http://www.kernel.org/pub/software/scm/git/docs/git-bisect.html - 如果您的代码中存在回归,则在您知道导致回归的代码之前,单步执行调试器将不会有所帮助。可以帮助您快速缩小代码范围的工具可以节省大量时间,并且比传统调试器更快。
  • http://logging.apache.org/log4j/1.2/ - 跟踪可能是老派,但人们会为他们的日志构建各种分析工具。通过分析,您可以发现不明显的错误。例如,使用常规调试器单步调试代码并不表示90%的用户没有在购物车上找到“结帐”按钮。但基本数据分析可以帮助找到其他调试器无法找到的各种错误。

肯定有更多的工具可以帮助调试非常具体的问题:分析器,网络流量分析器(WireShark,HTTPFox),许多SysInternals工具,甚至是/ proc。