2009-02-22 151 views
4

这一天我想出了一个大型软件。在Visual Studio中调试程序的最佳方式是什么?

我在Visual Studio调试2008年

我采取的步骤是:

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

  2. 使用立即窗口调用一些本地函数来查看该块中的数据结构 是否正确。

  3. 当我在步骤2中得到结果时,必须再次使用callstack去第1步找到bug 的来源。

在Visual Studio中调试大型或小型程序的最佳方法是什么?

我不觉得整个程序运行和看所有相关的数据结构是 好的调试方式。

回答

0

我在VS200x调试中的一个AHA-moments意识到我可以使用“附加到进程...”来启动调试已经运行的可执行文件。对于大型解决方案而言,以“正常”方式启动应用程序然后将Visual Studio附加到该应用程序通常比使用F5启动调试会话的速度快得多。

3

把断点放入可疑的方法和使用立即窗口是我的方式。我是即时窗口的巨大粉丝。

另外条件断点是我喜欢的另一种方式。特别是当我迭代一个集合来查找可疑的对象时。我把条件放到断点处,然后按F5来获取它。

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

3

我更喜欢使用立即窗口进行单元测试,主要是因为这意味着我可以非常简单地(并且实际上是从构建脚本)反复运行代码。

如果您使用立即窗口发现问题,并且无需添加任何测试就可以解决问题,但如果同一问题再次出现,则没有任何警告。通过单元测试,您有一个不变的伙伴,以确保未来的更改不会重新引入该错误。

个人而言,我不喜欢不得不单步执行代码 - 与单元测试相比,我觉得很沮丧。意外地跨过你想要插入的东西太容易了。有时候这是必要的,但这往往表明你的代码太复杂了。 I 特别是不喜欢必须调试整个应用程序,而不是仅仅调试调试器中的单元测试。它通常要慢几个数量级。

1

我最喜欢的方式,当被介绍给一个大的应用程序:
- 总是:“阅读所有代码”端到端(这是最有趣的)
- 书签中央的部分代码。
- 在调试

1

要查找破坏变量的值的代码重构&写测试我创建该变量数据断点。每当变量的数据发生变化时,程序都会中断执行,不管是通过正确的代码,还是通过一个流浪的指针。

0

在我看来,关于调试的重要一点是形成一个有关错误发生的理论。换句话说,试着在启动调试器之前查看代码并思考问题。

我问了一个similar question,所以你可能也想检查一下这个答案。

相关问题