.Net中的Debug模式和Release模式

时间:2023-03-09 16:33:39
.Net中的Debug模式和Release模式

1、Debug模式和Release模式

在vs中,运行程序有两种模式:Debug和Release

.Net中的Debug模式和Release模式

在bin目录下也会生成对应的文件夹,用于存放生成的dll等文件,这两种模式的区别如下:

Debug:用全部符号调试信息编译,不进行优化(优化会使调试复杂化,因为源代码和生成的指令间的关系更加复杂)。

Release:被完全优化,不包含任何符号调试信息。调试信息可在单独的pdb文件中生成

上面两种模式生成的dll的文件大小不一样

Debug模式:.Net中的Debug模式和Release模式Release模式:.Net中的Debug模式和Release模式(因为进行了符号的优化)

2、项目文件中下的obj目录的作用

在项目文件夹下除了bin外,还有个obj目录,由于编译是分模块编译的,每个模块的编译结果就保存在了obj目录下。最后会合并为一个exe或者dll文件保存到bin之中。因为每次编译都是增量编译,也就是只重新编译改变了的模块,所以这个obj的目录的作用就是保存这些小块的编译结果,加快编译速度。

3、Bin目录的pdb文件

Visual Studio 调试器使用 EXE 或 DLL 文件中的 PDB 路径查找 project.pdb 文件。 如果调试器无法在该位置找到 PDB 文件,或者该路径无效,调试器将先搜索包含 EXE 的路径,然后搜索“选项”对话框中指定的符号路径。 该路径通常是“符号”节点中的“调试”文件夹。 如果调试器无法找到 .PDB 文件,则显示“查找符号”对话框,这将允许您搜索符号或向搜索路径添加其他位置。
PDB

英文全称:Program Database File

中文全称:程序数据库 文件

程序数据库 (PDB) 文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置进行增量链接。 在使用 /debug 生成时,会创建一个 PDB 文件。 可以使用 /debug:full 或 /debug:pdbonly 生成应用程序。 使用 /debug:full 生成将产生可调试的代码。 使用 /debug:pdbonly 生成将产生 PDB,但是不会产生通知 JIT 编译器调试信息可用的 DebuggableAttribute。 如果您想为不希望其成为可调试的发布版本生成 PDB,请使用 /debug:pdbonly。

Debug里的pdb是full,保存着调试和项目状态信息、有断言、堆栈检查等代码。Release 里的pdb是pdb-only,基本上:出什么错了+错误在哪行。

重要事项
调试器只会为二进制文件加载与该二进制文件生成之时所创建的 PDB 完全相符的 PDB。 就是说,该 PDB 必须是原 PDB 或其副本。 因为编译器在创建二进制文件时会考虑多种因素,所以,即使代码自身没有变化,二进制文件的实际布局也可能会有变化。

本文来源自:http://www.cnblogs.com/Interkey/p/3554588.html

相关文章