我正在发布模式下构建VS 2010的窗口服务c#项目。我第一次感到惊讶的机会是即使在模式下发布它也会创建pdb文件。在附加调试过程后,我无法加载调试符号。
我的问题是,如果我们在调试和发布模式下都有pdb文件,那么为什么需要两种编译模式。
答案 0 :(得分:6)
我的问题是,如果我们在调试和发布模式下都有pdb文件,那么为什么需要两种编译模式
在调试和发布之间,其他与PDB生成存在差异。如果您进入Build属性并进入“Advanced”,则会生成不同级别的调试信息 - Full,PDB-only和None。
此外,还有不同级别的编译时优化,以及不同预处理器符号的存在(例如,每个Debug.Assert
将存在或不存在)。
当然,您也可以使用各种选项来构建自己的构建配置。
答案 1 :(得分:2)
有许多原因导致调试/发布模式与PDB文件的创建无关。
VS在发布模式下更快地执行编译的程序。此外,如果您处于调试与发布模式,还有编译器指令可以更改程序的行为方式。例如,您可以使用编译器指令禁用顶级try
catch
块,以便可以隔离正在抛出特定代码行的异常。
这只是几个例子。简而言之,调试模式的目的不仅仅是为您创建PDB文件。
答案 2 :(得分:1)
您可以拥有两种以上的编译模式。通常,调试和发布意味着您是否需要优化。无论如何,您仍然可以生成调试信息,只有发布版本的PDB才会有很大帮助。内联函数,变量可以被排除等。
答案 3 :(得分:0)
我最近做了一个winupdate(20120508),之后Visual Studio的调试似乎很慢 编译到runDebug后延迟1分钟,然后当调试程序退出时,再延迟1分钟 再次控制视觉工作室。我干净利落,但没有快乐。
解决方案:我手动删除了项目/解决方案中的* .sdf和* .suo文件并重建。问题神奇地消失了。
不确定原因,但某些内容不同步,损坏或与更新不兼容,需要手动吹走。