当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 在设计期跟踪代码 .NET

ASP.NET
不同映射模式下的直线输出的效果问题
ASP.NET开发下的MVC设计模式的实现
ASP.NET编写应用程序的十大技巧
ASP.NET中使用AJAX的简单方法
ASP.NET MVC实现自己的视图引擎
认识asp.net会话状态
ASP.NET实现页面传值的几种方法
.NET中容易混淆的几组重要概念
详解.NET中的动态编译技术
如何使用ASP.Net加密Cookie
ASP.NET 2.0跨网页提交的三种方法
ASP.NET 2.0创建母版页引来的麻烦
.Net整合其他平台的一些探讨
ASP.NET编程经验技巧10则
最佳实践 ADO.NET实用经验无保留曝光
在.NET上执行多线程操作要考虑的两大因素
.Net开发 细说Visual Basic.Net
ASP.NET网络编程中经常用到的27个函数集
ASP.NET防止用户多次登录的方法
对ASP.NET MVC项目中的视图做单元测试

ASP.NET 中的 在设计期跟踪代码 .NET


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 186 ::
收藏到网摘: n/a


在开发中碰到这样的问题: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 调试器