【问题标题】:Visual Studio 2012 not stopping at exception in debug modeVisual Studio 2012 在调试模式下不会因异常而停止
【发布时间】:2013-09-11 19:08:11
【问题描述】:

首先,我查看了发布的类似问题,它们似乎都涉及 64 位 Windows 错误。我在本地机器上运行 32 位。该应用程序是一个 asp.net 网站,其中包含指向项目解决方案中所有库的链接。

我主要是想了解为什么 Visual Studio 在调试模式下会通过此异常。我相信它是在 CLR 级别生成的,因为当我在 CLR 级别启用投掷时,VS 将停止并显示错误。但它不会让我单步执行代码来解决该错误。这就像一个黑匣子。在错误发生之前,我在我的代码的最后一个已知行处中断。我再次按下 F11,代码离开了我方法的最后一行,VS 在应用程序窗口显示时挂起:

VS 中没有弹出任何内容。好像它不在调试模式下。当我启用在 CLR 级别抛出 VS 错误时,很快就会说访问此代码的权限被拒绝。

如何聪明地调试这样的问题?

谢谢,

【问题讨论】:

  • last known line of my code before the error happens 是哪一行代码?它总是在同一条线上吗?
  • 总是在同一行。我发现了这个错误,这是一个将 objectDataSource 映射到空文本框的 DateTime 类型参数。我怀疑这方面的一些事情,只是希望我知道一个更好的方法来解决这个问题。让我恼火的是 objectDataSource 正在进行 select() 调用,尽管代码不会在带有断点的 select() 事件上停止。发誓我以前注意到这一点,控件进行函数调用但不会在其事件方法中触发断点。有点想把它归结为网络表单页面生命周期的曲折迷宫。谁知道呢。
  • ...在内容页面生命周期来回 ping 到母版页生命周期来回 ping 到自定义用户控件生命周期之间,我无法直截了当。

标签: .net visual-studio debugging


【解决方案1】:

如果这是 Web 应用程序(与网站相比)- 检查您的项目属性以生成完整的调试信息

+

菜单调试 -> 异常 -> 公共语言运行时异常设置为“抛出”

    +

签入选项 -> 调试 -> 常规

取消选中“仅启用我的代码”

+

从 C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 中“删除程序集缓存”——您可以简单地运行不同版本的 dll

【讨论】:

  • 这是一个网站。而且我已经完成了您提到的其他建议,这导致了“源不可用”框架以及我可以在网页上看到的相同错误消息和调用堆栈。也许我没有看到这个调用堆栈中的值。因为我看到的似乎没有帮助。所有功能均来自 System.Web.UI。控件正在执行操作,但没有标识来识别哪个。正在传递参数,但堆栈没有给出它们的标识或值。这些都是非常通用的信息,并没有真正缩小问题的范围。希望我错过了这里的重点。
  • 我忘了从 C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET 文件中提到“删除程序集缓存”——您可能只是运行不同版本的 dll
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多