在.Net 4.0中调试mscorlib

时间:2011-05-19 16:18:25

标签: visual-studio-2010 debugging .net-4.0 mscorlib

我从mscorlib中的System.IO.Path.CheckInvalidPathChars()获得以下异常:

  

[ArgumentException:非法字符   在路上。]   System.IO.Path.CheckInvalidPathChars(字符串   路径)+142
  System.IO.Path.NormalizePath(字符串   path,Boolean fullCheck,Int32   maxPathLength)+100
  System.IO.Path.GetFullPath(字符串   路径)+187
  System.Xml.XmlResolver.ResolveUri(URI   baseUri,String relativeUri)+114
  System.Xml.XmlTextReaderImpl..ctor(字符串   url,XmlNameTable nt)+135
  System.Xml.XmlDocument.Load(字符串   文件名)+85
  Sitecore.Web.UI.WebControls.WebEditRibbon.ConvertToJson(字符串   布局)+210
  Sitecore.Web.UI.WebControls.WebEditRibbon.Render(HtmlTextWriter的   输出,项目项目)+1268
  Sitecore.Web.UI.WebControl.Render(HtmlTextWriter的   输出)+387
  System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter的   作家,ICollection孩子们)+246
  System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter的   作家)+315
  System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter的   作家)+48
  System.Web.UI.Control.RenderControlInternal(HtmlTextWriter的   编写者,ControlAdapter适配器)   +11279890 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter   作家,ICollection孩子们)+246
  System.Web.UI.Page.Render(HtmlTextWriter的   作家)+40
  System.Web.UI.Page.ProcessRequestMain(布尔   includeStagesBeforeAsyncPoint,Boolean   includeStagesAfterAsyncPoint)+5274

问题是,我不知道导致此错误的路径值是什么。如果我可以调试方法,这将有助于我可以看到path参数的值。我启用了步入Visual Studio 2010中的.Net Framework代码。我还从Microsoft Symbol Servers加载了相关的.Net Framework符号。但是,这些PDB似乎不包括来源;所以我无法进入CheckInvalidPathChars并检索路径值。

是否可以调试mscorlib并逐步完成其源代码?

相关信息:

  • .Net Framework 4.0。
  • Visual Studio 2010

非常感谢任何建设性的意见。

谢谢, 弗兰克

3 个答案:

答案 0 :(得分:3)

您可以获取.NET库的参考源 http://referencesource.microsoft.com/

查看堆栈跟踪,问题似乎来自Sitecore.Web.UI.WebControls.WebEditRibbon.ConvertToJson。那件事正在尝试加载XML文件。

答案 1 :(得分:0)

使用反射器可以让你这样做 是否有可能打破所有异常?这样做肯定会解释调试器中出现的内部异常。如果是这种情况,您可以放心地忽略该异常。

答案 2 :(得分:0)

你的机器上的mscorlib.dll是发布版本,所以即使你可以很好地调试它,你也无法看到值局部变量/对象等。这个二进制文件中的代码已经过优化。如果您需要Microsoft .NET代码的完美调试体验,那么您需要在您的计算机上安装.NET的调试版本。