调试Visual Studio Designer错误的好方法
有没有在Visual Studio Designer中调试错误的好方法?
在我们的项目中,我们有大量的UserControls和许多复杂的表单。对于复杂的异常,设计器经常会抛出各种异常,但并没有多大帮助,我想知道是否存在某种不错的方法来找出问题所在。
语言是C#,我们正在使用Visual Studio 2005.
解决方案
回答
每个人都是不同的,有时它们可能是晦涩的。第一步,我将执行以下操作:
- 使用源代码管理并经常保存。如果发生设计器错误,请获取最近发生的受影响控件的所有更改的列表,并测试每个控件,直到找到罪魁祸首。
- 确保检查出所涉及控件的初始化例程。通常,由于某些错误或者不良依赖关系而发生这些错误,这些错误或者不良依赖关系是通过控件的默认构造函数调用的(该错误可能仅在VS中表现出来)
回答
我已经发生过很多次了,这确实是一个痛苦。
首先,我建议尝试遵循设计人员提供的堆栈跟踪,尽管我发现通常只是列出一堆用处不大的内部东西。
如果那不起作用,请尝试从那里编译并确定异常。我们真的是盲目飞行,这是问题所在。然后,我们可以尝试简单地运行代码,并查看运行它时引发了什么异常,这将为我们提供更多信息。
最后的办法可能是从表单中删除所有未生成的代码,然后逐渐重新引入它以确定错误。
如果我们使用的是自定义控件,那么如果先前的方法仍然导致错误,那么我们也可以手动删除与自定义控件相关的生成代码。然后,我们可以以相同的方式重新引入此逐步步骤,以确定哪个自定义控件导致了问题,然后分别进行调试。
就我所知,基本上来说,除了稍微解决问题之外,没有其他解决方法!
回答
我已经能够通过运行VS的第二个实例来调试一些控件设计器问题,然后从第一个VS实例中执行"调试->添加到进程"并选择" devenv"。
第一个VS实例是我们要设置断点的地方。使用第二个实例加载设计器,以使"设计器"代码运行。
回答
请参阅调试设计时控件(MSDN)。
回答
我们可以运行VS的第二个实例,并将其添加到VS的第一个实例(Ctrl + Alt + P)。在第一个实例中设置断点,在第二个实例中运行设计器,并且断点将触发。我们可以单步执行代码,但是"编辑并继续"将不起作用。
为了使"编辑并继续"正常工作,请设置控件库的调试选项,以命令行参数作为解决方案文件名运行VS。然后,我们可以简单地设置断点并按F5. 它将像用户代码一样进行调试!附带说明,我们可以在VS和Office加载项中执行此操作。