如何防止 Visual Studio 警告缺少调试信息?

Posted

技术标签:

【中文标题】如何防止 Visual Studio 警告缺少调试信息?【英文标题】:How can I prevent Visual Studio from warning about a lack of debugging information? 【发布时间】:2011-01-11 00:13:36 【问题描述】:

如何防止 VS 向用户显示以下警告:

没有调试信息 找不到或不匹配“MyExe.exe”的调试信息。无法找到或打开 PDB 文件。要继续调试吗?

在我的情况下,我的产品的用户想要开发一个插件并且(s)他想要调试它。 VC++ 项目中有适当的配置,因此当他按下 F5 时,我的应用程序将启动并加载插件。但是,VS 抱怨缺少调试信息。虽然通常缺乏有效的调试信息是一个有效的问题,但在这种情况下,我不想为 MyExe.exe 提供 .pdb 文件(用户没有理由调试我的 MyExe.exe 应用程序)。有没有办法阻止VS搜索MyExe.exe的调试信息?

【问题讨论】:

检查Generate Debug InfoProject Propeties > Configuration Properties > Linker > Debugging下的设置。那应该设置为Yes(/DEBUG) 以避免No Debugging Information Debugging information for 'MyExe.exe' 从未尝试过,但是给一个“存根”PDB 怎么样?空文件,或为“空”MyExe.exe 或类似文件生成的真实 PDB。 @Mahesh:该值设置为 /YES,但它需要部署 .pdb 文件,我想避免这种情况。 【参考方案1】:

你没有说你的客户使用的是哪个版本和版本的VS,但至少在VS 2005和VS 2010中,打开Tools->Options->Debugging->General,有一个设置列表,向下滚动,找到“启动时没有符号时发出警告(仅限本机)”设置并清除复选标记。

相信这将完成您正在寻找的内容,因为除非/直到调试器在您的代码中停止,否则对话框不会弹出。如果它在客户的插件中停止(或遇到断点),那么它应该能够找到符号,我认为它不会导致弹出。

【讨论】:

我正在使用 VS2008/VS2010。我希望进行项目级别设置,但似乎只有全局选项(我可能不应该为我的用户修改)...【参考方案2】:

我不相信您可以关闭 VS 关于 PDB 丢失或不匹配的消息,但是,您可以在构建时使用 /PDBSTRIPPED option 创建 PDB - 这将为用户提供包含最少信息的 .pdb (基本上只是公共符号)。

【讨论】:

不幸的是,如果我使用最小的 .pdb 文件,VS 仍然会显示警告。文本略有不同:“符号已加载(源信息已剥离)。”,但我不能认为这是解决我的问题的方法...... 为什么隐藏消息如此重要?这些无论如何都不会出现在输出窗口中吗?我不认为你可以对它们做任何事情,除了可能编写一个 VS 插件来复制输出窗口的功能但允许你删除某些消息。 它不在输出窗口中,它是一个大而丑陋的对话框。好的,这不是一个关键问题,但最好防止它弹出,因为它只会引起混乱。 哦,这很有趣,我想我从未见过包含该消息的对话框。那会更烦人,嗯... “我的”对话框有“不再显示”复选框。也许在检查后它只会显示在输出窗口中(现在无法检查)......但是信息保存在哪里/如何从我的代码(vspackage)中更改此设置。

以上是关于如何防止 Visual Studio 警告缺少调试信息?的主要内容,如果未能解决你的问题,请参考以下文章

调试 IIS 时关闭 Visual Studio 附加安全警告

Visual Studio 由于缺少调试目标

防止 Visual Studio 调试因明显的“未处理异常”而中断

Visual Studio中的警告C6385

Visual Studio 中的“将所有警告视为错误,除了...”

在 Visual Studio 2010 中防止条件表达式中的赋值