在设计期跟踪代码 .NET

郑须小三

郑须小三

2016-01-29 12:29

在设计期跟踪代码 .NET,在设计期跟踪代码 .NET

在开发中碰到这样的问题:winform窗口中定义了基类窗体,在设计器中打开子类窗体的时候出现诸如“窗口无法使用设计器进行进行设计,发生了......的异常”的信息,并且窗体无法打开,也就没办法使用窗体设计器进行界面的设计。但是运行起来一切正常。
这个问题的原因就是在解决方案资源管理器中双击窗体打开进行设计的时候,会去执行它的基类,也就是父窗体中的一些代码,例如:
建立一个基类窗体,名为FormBase,再建立一个子类窗体FormDerive,从FormBase继承public class FormDerive : FormBase{private System.ComponentModel.Container components = null;
public FormDerive(){InitializeComponent();}...........................}
然后在基类窗体的构造函数中加句代码:public FormBase(){InitializeComponent();
MessageBox.Show("It's Base Form!");}编译,然后双击“解决方案资源管理器”中的FormDerive打开设计器,这时会先有一个MessageBox弹出,然后显示FormDerive的设计界面。
现在来让FormBase中的代码发生异常,写一个最简单的产生“数组越界”的代码
string[] array = new string[]{"1","2","3"};for ( int i = 0; i <= array.Length ; i++ ){MessageBox.Show(array[i]);}再次打开设计器,弹出对话框后设计器一片空白,提示:?试图创建 WindowsApplication12.FormBase 的实例时发生异常。异常为“索引超出了数组界限。”?如果在FormBase的Load事件中插入导致异常的代码,使用设计器时会出现同样的现象。
如果基类中的代码比较简单,可以通过阅读找到问题,那么代码比较复杂呢?现在才说到正题。在.net中提供了一个调试工具DbgClr.exe,它可以在设计器进行代码的跟踪。如果你找不到这个文件,可以使用“搜索文件”找到它。下面就是怎样使用DbgClr跟踪:运行DbgClr.exe点击菜单:工具-调试进程,会列出目前系统的进程。选择devenv.exe进程,也就是VS.net集成开发环境,点附加。关闭对话框。在DbgClr中打开要调试的.cs文件,这里选择FormBase.cs文件然后在FormBase的构造函数进行for循环的地方加上断点。重新打开FormDerive,这时会在DbgClr中中断,可以进行调试了。

总结:我碰到出现这种窗体打不开的情况重要是在读取一些配置文件时产生的,就是在设计期指定的路径下没有指定的文件,但是在运行时使用生成后事件把文件拷贝过来,所以运行期没问题。
这问题搞了我好半天呐,知道了调试的方法,再出现这问题就不怕了。
DbgClr.exe的使用在帮助里有讲解,我以前怎么就没有注意到呢:.NET Framework->工具和调试器->CLR 调试器
展开更多 50%)
分享

猜你喜欢

在设计期跟踪代码 .NET

电脑网络
在设计期跟踪代码 .NET

在.NET下编写中文代码程序

电脑网络
在.NET下编写中文代码程序

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

.NET 中的断言和跟踪

C语言教程 C语言函数
.NET 中的断言和跟踪

用户注册及跟踪代码(三)

ASP
用户注册及跟踪代码(三)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

用户注册及跟踪代码(一)

ASP
用户注册及跟踪代码(一)

用户注册及跟踪代码(二)

ASP
用户注册及跟踪代码(二)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Flash制作进度条教程

Flash制作进度条教程

PSV《龙之皇冠》各BOSS弱点及打法详细介绍

PSV《龙之皇冠》各BOSS弱点及打法详细介绍
下拉加载更多内容 ↓