在启用优化或没有调试信息的情况下构建

Posted

技术标签:

【中文标题】在启用优化或没有调试信息的情况下构建【英文标题】:Built with optimizations enabled or without debug information 【发布时间】:2010-12-29 12:08:44 【问题描述】:

我目前正试图找出为什么我的InjectableAttributes never get to the filter part。 因此,我直接在源项目中链接,这样我就可以轻松放置断点等。 但是,当我构建时,我收到以下消息:

以下模块是的: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\[一堆随机命名的目录]\assembly\[更多随机名称]\MvcTurbine.Web.DLL] 要调试此模块,请将其项目构建配置更改为调试模式。要禁止显示此消息,请禁用“在启动时没有用户代码时发出警告”调试器选项。

我检查了项目的属性。它的配置设置为“活动(调试)”,并且“优化代码”复选框未选中。

更新 我再次检查了我是否不小心包含文件而不是项目,但引用似乎正确。 只是为了确保我还删除了所有现有的垃圾箱,以便所有库肯定都在某个地方重建,但无济于事。

更新 在高级构建窗口中,调试输出设置为完整,所有选项都与构建调试信息的项目相同。 配置管理器显示项目正在构建,并且与所有其他选项具有完全相同的设置。

更新 在 Debug->Windows-Modules 窗口中,涡轮库的符号状态为 PDB file does not match image 我删除了整个系统上所有相应的 pdb 文件以确保重新生成它,但无济于事。 为了确保我还在整个系统上搜索了 dll 并删除了它们。什么都没有。

什么会阻止 VS 创建调试信息?

【问题讨论】:

请试试这个链接。 ***.com/questions/810203/… 【参考方案1】:

我今天早上刚遇到同样的问题,使用的是 VS2010。我通过删除所有构建工件来解决它,例如可执行文件、库、PDB 等。它们位于 \bin\Debug、\bin\Release、\obj\Debug 和 \obj\Release(包括子文件夹)中。然后我重新编译了调试配置,又开始营业了。

【讨论】:

感谢您的评论。由于这个问题是几年前的问题,我担心我无法再检查这个问题了。不过它可能会帮助其他人:)【参考方案2】:

检查是否正在为项目生成调试信息。您可以通过打开“项目属性”页面上的“构建”选项卡并单击“高级...”按钮来执行此操作。检查“调试信息”设置。请参阅 this MSDN article 了解每个选项的含义。

如果这不能解决问题,请检查 MvcTurbine 项目是否正在构建 (Build -> Configuration Manager)。

【讨论】:

调试信息输出为“full”。我与正在编写调试信息的其他库进行了交叉检查,并且它匹配。在 Config mngr tie 中,mvcTurbine 项目在 Debug Any CPU 上并已检查,就像所有其他项目一样。【参考方案3】:

听起来您引用的是 MvcTurbine.Web.DLL file 而不是 MvcTurbine project。尝试删除引用并将其重新添加为项目引用。

更新您确定 DLL 不是来自 GAC 吗?在应用程序运行时执行 Debug->Windows->Modules 并检查 Path 列。

【讨论】:

因为我开始怀疑自己,我再次检查,但没有,我确实引用了项目,而不是文件。我将更新 OP 以澄清。 好的,我添加了一个新的猜测。 :) 我不知道这个窗口 :) +1!这些库不在 gack 中(有关路径,请参阅我在 OP 中更新的错误消息。它们已优化 = 否,但符号状态是 PDB 与图像不匹配。知道从这里去哪里吗?我将从在我能找到的任何地方删除此模块的 pdb 文件:P 此库的用户代码 = 否重要吗? 如果您禁用了调试非用户代码,这是默认设置。

以上是关于在启用优化或没有调试信息的情况下构建的主要内容,如果未能解决你的问题,请参考以下文章

以下模块是在启用优化或没有调试信息的情况下构建的

生成下面的模块时,启用了优化或没有调试信息

VS无法启动调试:“生成下面的模块时,启用了优化或没有调试信息“

使用 jdk 进行 slf4j 日志记录 – 如何启用调试?

混合模式调试(C++、C#、VB)

iOS 应用程序在没有调试信息和日志消息的情况下退出的问题