首页 / 知识

调试Visual Studio Designer错误的好方法

2023-04-13 22:39:00

调试Visual Studio Designer错误的好方法

Good Way to Debug Visual Studio Designer Errors

有没有在Visual Studio Designer中调试错误的好方法?

在我们的项目中,我们有大量的UserControls和许多复杂的表单。 对于复杂的异常,设计器经常会抛出各种异常,但并没有多大帮助,我想知道是否有某种很好的方法来找出问题所在。

语言是C#,我们正在使用Visual Studio 2005。


通过运行第二个VS实例,我已经能够调试一些控件设计器问题,然后从您的第一个VS实例中执行"调试->附加到进程"并选择" devenv"。

在第一个VS实例中,您将在其中设置断点。使用第二个实例来加载设计器,以使"设计器"代码运行。


请参阅调试设计时控件(MSDN)。


在2005年一直是痛苦的一年,在2015年仍然如此。断点通常不会出现,这可能是因为程序集被影子复制或由设计人员(?)进行了某些操作。最好的办法是通过引入对Debugger.Break()的调用来手动中断。您可以按以下条件将其包装到编译器中:

1
2
3
4
#if DEBUG
   System.Diagnostics.Debugger.Break();
#endif
int line_to = break; // <- if a simple breakpoint here does not suffice

我发现了为什么有时没有命中断点的原因。在"附加到进程"对话框中,"附加到:"类型必须为"选择..."。

一旦我更改为" Managed 4.0,4.5",就会遇到WinRT应用程序的断点。资料来源:WinRT中的Designer调试。


我已经发生过很多次了,这确实是一个痛苦。

首先,我建议尝试遵循设计者提供的堆栈跟踪,尽管我发现通常只是列出一堆用处不大的内部东西。

如果那不起作用,则尝试从那里编译并确定异常。你真的是瞎子了,这就是问题所在。然后,您可以尝试简单地运行代码,并查看运行它时引发了什么异常,这将为您提供更多信息。

最后的办法可能是从表单中删除所有未生成的代码,然后逐步重新引入它以确定错误。

如果您使用的是自定义控件,那么如果先前的方法仍然会导致错误,那么您也可以手动删除与自定义控件相关的生成代码。然后,您可以以相同的方式重新引入此逐步步骤,以确定哪个自定义控件导致了问题,然后分别进行调试。

就我所知,基本上来说,除了一点点解决之外,没有其他解决方法!


您可以运行VS的第二个实例,并将其附加到VS的第一个实例(Ctrl + Alt + P)。在第一个实例中设置断点,在第二个实例中运行设计器,然后断点将触发。您可以单步执行代码,但是"编辑并继续"将不起作用。

为了使"编辑并继续"正常工作,请设置控件库的调试选项以运行VS,并以命令行参数作为解决方案文件名。然后,您可以简单地设置断点并按F5。它将像用户代码一样进行调试!附带说明,您也可以同时执行VS和Office加载项。


每个人都是不同的,有时它们可??能是晦涩的。第一步,我将执行以下操作:

  • 使用源代码管理并经常保存。如果发生设计器错误,请获取对最近发生的受影响控件的所有更改的列表,并测试每个控件,直到找到罪魁祸首。
  • 确保检查出所涉及控件的初始化例程。通常,由于通过控件的默认构造函数调用的某些错误或不良依赖关系(通常仅在VS中表现出来的错误),才会发生这些错误。

方法调试错误项目

最新内容

相关内容

热门文章

推荐文章

标签云

猜你喜欢