这一天我想出了一个大型软件。
我必须在Visual Studio 2008中进行调试。
我采取的步骤是:
使用callstack窗口查找我认为可能存在错误的代码块。
使用Immediate窗口调用一些本地函数来查看数据结构是否正常 在这个块中是正确的。
当我在步骤2中得到结果时,我必须转到步骤1以找到错误的来源 再次使用callstack。
在Visual Studio中调试大型或小型程序的最佳方法是什么?
我不认为运行整个程序并观察所有相关的数据结构 好的调试方法。
答案 0 :(得分:3)
将断点置于可疑方法中并使用立即窗口是我的方法。我是立即窗口的忠实粉丝。
另外条件断点是我喜欢的另一种方式。特别是当我迭代一个集合来找到一个可疑的对象时。我把条件设置为断点并按F5来获取它。
Ctrl + Alt + Q 组合是快速观看窗口分析对象的另一个好方法。
答案 1 :(得分:3)
我更喜欢使用立即窗口进行单元测试,主要是因为这意味着我可以非常简单地(实际上是从构建脚本)反复运行代码。
如果使用即时窗口发现问题并在不添加任何测试的情况下进行修复,则如果再次出现同样的问题,则没有任何警告。通过单元测试,您可以获得一个不变的伴侣,以确保未来的任何更改都不会重新引入该错误。
就我个人而言,我不喜欢单步执行代码 - 与单元测试相比,我觉得这很令人沮丧。很容易意外地跨过你想要进入的东西等等。这有时是必要的,但这通常表明你的代码太复杂了。我特别不喜欢调试整个应用程序而不是仅仅在调试器中单步执行单元测试。它通常要慢几个数量级。
答案 2 :(得分:1)
引入大型应用程序时我最喜欢的方式:
- 始终:“读取所有代码”端到端(这是最有趣的)
- 为代码的中心部分添加书签
- 重构&在调试时编写测试
答案 3 :(得分:1)
要找到破坏变量值的代码,我为该变量创建数据断点。每次变量的数据发生变化时,程序都将通过正确的代码,也可以通过杂散指针来中断执行。
答案 4 :(得分:0)
我在VS200x调试中的一个AHA时刻意识到我可以使用“Attach to process ...”来开始调试已经运行的可执行文件。对于大型解决方案,与通过按F5启动调试会话相比,以“正常”方式启动应用程序然后将Visual Studio附加到应用程序通常会更快。
答案 5 :(得分:0)
在我看来,关于调试的重点是形成一个关于bug可能在哪里的理论。换句话说,尝试查看代码并在启动调试器之前考虑问题。
我问了一个similar question,所以你可能也想查看答案。