【问题标题】:How to place breakpoints in system.web.mvc before starting an app?如何在启动应用程序之前在 system.web.mvc 中放置断点?
【发布时间】:2016-01-01 16:47:28
【问题描述】:

我想通过在我的操作方法执行之前执行的一些方法中放置断点来了解 ASP.NET MVC 的模型绑定器是如何工作的。例如将它们放在 DefaultModelBinder 类中。我经历了将 MVC 的一些项目源添加到我的解决方案中的路线(如 System.Web.MVC、System.Web.Razor、System.Web.WebPages、System.Web.Helpers...),这样我就可以运行我的版本其中并在我喜欢的地方放置断点,但出现错误“Could not load file or assembly 'System.Web.Mvc' or one of its dependencies. Strong name signature could not be verified"。我正在使用引用 System.Web.MVC 的第三方签名组件,我认为这就是导致错误的原因。

在我的代码运行之前,还有其他方法可以跟踪 System.Web.MVC 代码吗?我知道设置 Visual Studio 以从符号服务器获取相关符号,但我不知道如何在我自己的代码运行之前在 .NET 的代码中放置断点。

【问题讨论】:

  • 你试过一个叫JustDecompile的软件吗?使用它我们可以调试内置的 dll,如 System.web.MVC 等。
  • 我知道像 JustDecompile、dotPeek 和 Reflector 这样的反编译器。在我的问题中解释如何使用 JustDecompile 来实现我的要求。
  • 好的,我会尽快给你详细解释

标签: asp.net-mvc debugging visual-studio-debugging


【解决方案1】:

我能够设置断点,它们会被击中。

  • 设置 VS 以从符号服务器加载符号。
  • 在您的应用中设置断点
  • 当断点被命中时,打开“模块”窗口并设置 System.Web.Mvc.dll 自动加载其符号文件
  • 在调试模式下再次运行应用程序。当断点被命中时,打开调用堆栈窗口。选择 System.Web.Mvc.dll 中有趣的行。应该对比这些行,这意味着它们的来源是可用的(我猜)。
  • 右键单击该行并选择“转到源代码”。将打开一个对话框,希望您找到源文件。
  • 我有 System.Web.Mvc 的源代码,所以我打开了源文件。
  • 在其中设置一些断点。
  • 在调试模式下再次运行应用程序。现在 System.Web.Mvc 中的那些断点将被命中。
  • (我假设我可以在 VS 中打开 System.Web.Mvc 中的任何源文件并在其中设置断点,它们会被命中。我假设即使我的文件与符号文件中的原始位置,因为我关闭了“要求源文件与原始版本完全匹配”设置。我需要验证这些假设)

【讨论】:

    猜你喜欢
    • 2014-10-13
    • 1970-01-01
    • 2017-03-26
    • 2012-01-05
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    相关资源
    最近更新 更多