无法调试网页代码,但可以调试 global.asax 中的代码
Unable to debug web page code but can debug code in global.asax
当我在起始页的 page_load 处设置断点时,我收到以下消息。
"the breakpoint will not be hit. no symbols have been loaded for this document."
我以前见过这个,通常通过清洗溶液并再次 运行 来解决这个问题。但是,这一次,我找不到解决方案。这次更奇怪的是,如果我在 global.asax 中放置一个断点,例如 Application_BeginRequest,断点确实命中并且我可以调试,这发生在我添加断点的任何页面上。
如果我转到 menus\Debug\Windows\Modules,我可以看到 Web 应用程序 DLL 不是使用调试信息构建的。
调试时,让断点正常工作的 2 个东西包括 .dll 和 .pdb 文件。如果您查看项目的 bin 文件夹。这 2 个文件将放在一起,并且必须具有相同的 "date modified",这意味着它是在构建时一起创建的。
如果这 2 个文件因任何原因没有一起创建。某些文件的某些代码行不会被断点击中。您还可以在调试时通过导航到调试 > Windows > 模块来查看。然后找到你想要调试的目标dll,比如YourApp.dll。然后在符号状态栏中查看。如果它工作正常,我会显示已加载的符号。
发生这种情况的原因有很多,例如您更改了代码中的某些内容(这种情况可能是您的 aspx 文件),然后您在没有构建的情况下进行调试。
要解决此问题,您可以转到“工具”>“选项”>“项目和解决方案”>“构建”并将 "On Run, when projects are out of date" 处的 运行 设置为 "Always build",以确保您的项目始终在运行前构建调试。
我的问题竟然与AOP框架PostSharp有关。我将其卸载并重新安装,现在一切都可以正常调试了。顺便说一句,我喜欢 PostSharp,我强烈推荐它。但是,我想 post 我的问题和解决方案,以防有人遇到同样的问题并且当前正在使用 PostSharp。
当我在起始页的 page_load 处设置断点时,我收到以下消息。 "the breakpoint will not be hit. no symbols have been loaded for this document." 我以前见过这个,通常通过清洗溶液并再次 运行 来解决这个问题。但是,这一次,我找不到解决方案。这次更奇怪的是,如果我在 global.asax 中放置一个断点,例如 Application_BeginRequest,断点确实命中并且我可以调试,这发生在我添加断点的任何页面上。
如果我转到 menus\Debug\Windows\Modules,我可以看到 Web 应用程序 DLL 不是使用调试信息构建的。
调试时,让断点正常工作的 2 个东西包括 .dll 和 .pdb 文件。如果您查看项目的 bin 文件夹。这 2 个文件将放在一起,并且必须具有相同的 "date modified",这意味着它是在构建时一起创建的。
如果这 2 个文件因任何原因没有一起创建。某些文件的某些代码行不会被断点击中。您还可以在调试时通过导航到调试 > Windows > 模块来查看。然后找到你想要调试的目标dll,比如YourApp.dll。然后在符号状态栏中查看。如果它工作正常,我会显示已加载的符号。
发生这种情况的原因有很多,例如您更改了代码中的某些内容(这种情况可能是您的 aspx 文件),然后您在没有构建的情况下进行调试。
要解决此问题,您可以转到“工具”>“选项”>“项目和解决方案”>“构建”并将 "On Run, when projects are out of date" 处的 运行 设置为 "Always build",以确保您的项目始终在运行前构建调试。
我的问题竟然与AOP框架PostSharp有关。我将其卸载并重新安装,现在一切都可以正常调试了。顺便说一句,我喜欢 PostSharp,我强烈推荐它。但是,我想 post 我的问题和解决方案,以防有人遇到同样的问题并且当前正在使用 PostSharp。