为什么在Release和Debug模式下使用VS 2010编译项目会生成pdb文件?

6

我正在以Release模式构建VS 2010的C#窗口服务项目。让我惊讶的第一件事是,即使在发布模式下,它仍然创建pdb文件。我在附加进程进行调试后无法加载调试符号。

我的问题是,如果我们在debug和release模式下都有pdb文件,那么为什么需要两种编译模式呢?


快速问题。是什么类型的项目?.NET,C++? - ervinbosenbacher
在项目设置中检查 -> 构建 -> 高级 -> 高级构建设置 -> 调试信息。我认为如果在发布模式下将其设置为pdb-only,它将生成pdb文件。 - ervinbosenbacher
4个回答

6
我的问题是:如果我们在调试和发布模式下都有pdb文件,那么为什么需要两个编译模式呢?
除了PDB生成之外,调试和发布之间存在其他差异。如果进入生成属性并进入“高级”,将生成不同级别的调试信息-完整、仅PDB和无。
此外,还有不同的编译时优化级别和不同的预处理器符号存在(例如,每个Debug.Assert的存在或不存在)。
当然,您也可以拥有自己的各种构建配置,具有各种选项。

完整版和仅PDB有何区别? - Romil Kumar Jain
2
请返回翻译后的文本:和http://mariangemarcano.blogspot.com/2011/11/visual-studio-debugging-and-remote.html - Robert Harvey

2
有很多原因导致存在调试/发布模式,与创建PDB文件无关。在发布模式下,VS可以更快地执行编译后的程序。此外,有一些编译器指令可以根据您处于调试或发布模式来改变程序的行为方式。例如,您可以使用编译器指令禁用顶级try catch块,以便将抛出的异常隔离到特定的代码行。这只是几个例子。简而言之,调试模式除了为您创建PDB文件之外,还有许多其他用途。

1

您可以拥有两种以上的编译模式。通常,调试和发布意味着您是否需要优化。不过,您仍然可以生成调试信息,只是对于发布版本的 PDB 文件帮助不大。内联函数、变量等可以被排除在外。


0

我最近进行了winupdate(20120508),之后使用Visual Studio调试时出现了极慢的情况,在编译运行Debug后延迟1分钟, 然后在调试程序退出后,需要再等待1分钟才能重新控制Visual Studio。我进行了清理操作,但是没有任何作用。

解决方案:我手动删除了项目/解决方案中的*.sdf和*.suo文件,并重新构建。问题神奇地消失了。

不确定为什么,但某些内容可能与更新不同步、损坏或不兼容,需要手动删除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接