你最喜欢在 Visual Studio 中调试程序的方法是什么?[已结束]

What's your favorite way to debug your program in Visual Studio? [closed]

提问人:MainID 提问时间:2/23/2009 最后编辑:Kb.MainID 更新时间:2/23/2009 访问量:382

问:

这些天我想出了一个大型软件。

我必须在 Visual Studio 2008 中进行调试。

我采取的步骤是:

  1. 使用调用堆栈窗口查找我认为它可能有错误的代码块。

  2. 使用即时窗口调用一些本地函数,查看数据是否结构 在这个块是正确的。

  3. 当我在步骤2中得到结果时,我必须转到步骤1才能找到错误的来源 再次使用 callstack。

在 Visual Studio 中调试大型或小型程序时,您最喜欢的方法是什么?

我不认为运行整个程序并观察所有相关的数据结构是 调试的好方法。

Visual-Studio 调试

评论


答:

0赞 SteinNorheim 2/23/2009 #1

我在 VS200x 调试中的一个 AHA 时刻是意识到我可以使用“附加到进程...”以便开始调试已在运行的可执行文件。对于大型解决方案,与按 F5 启动调试会话相比,以“正常”方式启动应用程序,然后将 Visual Studio 附加到它,通常速度会更快。

3赞 Canavar 2/23/2009 #2

将断点放入可疑方法并使用即时窗口是我的方式。我是 Immediate Window 的忠实粉丝。

条件断点也是我喜欢的另一种方式。尤其是当我迭代一个集合以查找可疑对象时。我在断点上放置了一个条件,然后按 F5 获取它。

Ctrl + Alt + Q 组合是快速监视窗口分析对象的另一个很好的快捷方式。

3赞 Jon Skeet 2/23/2009 #3

与使用即时窗口相比,我更喜欢单元测试,主要是因为这意味着我可以非常简单地一遍又一遍地运行代码(实际上是从构建脚本中)。

如果您使用即时窗口发现问题并在不添加任何测试的情况下修复它,则如果同样的问题再次出现,则不会有任何警告。通过单元测试,您有一个持续的伴侣,以确保任何未来的更改都不会重新引入错误。

就我个人而言,我不喜欢单步执行代码 - 与单元测试相比,我发现它令人沮丧。不小心踩到你想踏进去的东西太容易了,等等。这有时是必要的,但这通常表明您的代码太复杂了。我特别不喜欢调试整个应用程序,而不仅仅是在调试器中单步执行单元测试。它通常要慢几个数量级。

1赞 Kb. 2/23/2009 #4

在被介绍给大型应用程序时,我最喜欢的方式:
- 总是:“从头到尾阅读所有代码”(这是最有趣的)
- 为代码的中心部分添加书签。
- 调试时重构和写入测试

1赞 Diomidis Spinellis 2/23/2009 #5

为了找到破坏变量值的代码,我为该变量创建了一个数据断点。每次变量的数据更改时,程序都会中断其执行,无论是通过正确的代码,还是通过杂散指针。

0赞 Brian Rasmussen 2/23/2009 #6

在我看来,调试的重点在于形成一个关于错误可能在哪里的理论。换句话说,在启动调试器之前,请尝试查看代码并思考问题。

我问了一个类似的问题,所以你可能也想检查一下答案。