首页 / 知识
关于C#:. NET中的调试与发布
2023-04-17 01:09:00

Debug vs. release in .NET继续我的上一个问题,是否有详尽的文档列出了C#应用程序(尤其是Web应用程序)中调试和发布模式之间的所有可用差异? 有什么区别?
"调试"和"发布"仅是Visual Studio定义的预定义项目配置的名称。 VS2005中的差异包括:
以及通过单击"高级"按钮可以看到的其他差异 但是你可以:
我认为DEBUG常量的行为非常清楚(可以在#if预处理程序指令或ConditionalAttribute中引用)。但是我不知道有关启用了哪些优化的任何全面文档-实际上,我怀疑Microsoft会希望自由地增强其优化器,而不另行通知 没有一个文件列出了差异。除了已经列出的一些差异之外,在调试模式下进行编译还会关闭在运行时执行的大多数JIT编译器优化,并且还会在符号数据库文件(.pdb)中发出更完整的调试信息。 另一个很大的不同是,GC行为有所不同,因为JIT编译器将适当/需要插入对GC.KeepAlive()的调用以支持调试会话。 我不知道一个简洁的文档,但是:
调试和发布只是不同解决方案配置的标签。您可以根据需要添加其他人。如果您愿意,可以从配置管理器添加更多配置– http://msdn.microsoft.com/zh-CN/library/kwybya3w.aspx 主要差异–
1.在调试dll中,添加了一些额外的说明,使您可以在Visual Studio中的每个源代码行上设置断点。同样,代码也不会被优化,从而使您能够调试代码。 2.PDB文件仅在调试模式下创建,而不在相对模式下创建。 3.在发布模式下,cpde由JIT编译器内置的优化器进行优化。它进行了以下优化: ?方法内联-方法调用由注入方法的代码代替。 ? CPU寄存器分配-局部变量和方法参数可以保持存储在CPU寄存器中,而无需(或不经常)存储回到堆栈帧 ?消除数组索引检查-使用数组时的一项重要优化(所有.NET集合类在内部使用数组)。当JIT编译器可以验证循环是否永不对数组进行索引时,它将消除索引检查。
如果使用的是任何ASP.NET Ajax控件,则是一个主要的性能方面:在发行版中运行时,调试信息已从JavaScript库中删除,并且我已经看到了复杂页面上的主要性能改进。基于此设置,可以缓存或不缓存其他基于Web的资源。
另外,请记住,Web应用程序中的"调试/发布"由
更多信息:
在调试模式下,使用GDI +进行绘制要慢得多。 您还可以管理只在调试中或仅在带有预处理器标记的发行版中运行的部分代码:
要么
发布版本: 相当快(最重要),已优化 无法调试(逐步) 并且不包含用" debug"指令编写的代码 请参阅调试版本与发行版本之间有什么区别? 将可执行文件分发到另一台计算机时,出现错误消息,指示系统缺少MSVCP110D.dll。 缺少堆栈溢出问题Visual Studio MSVCP110D.dll中说明了此问题的解决方案。 在XXXXD.dll中,D表示DLL文件是DLL文件的调试版本。但是,MS Visual C ++可再发行组件包仅包含DLL文件的发行版。 这意味着,如果需要分发由Visual C ++开发的程序,则需要在发布模式下进行构建。另外,您还需要在目标计算机上安装MS Visual C ++ Redistributable(正确版本)。 因此,我认为这是调试和发布模式之间的关键区别之一。 |
最新内容
相关内容
linux移动文档命令?
linux移动文档命令?,文件,名称,系统,位置,目录,信息,命令,源文件,目标,文件名,linux中如何移动文件语法:mv [选项] 源文件或目录 目标文件或目linux内核配置命令?
linux内核配置命令?,工作,系统,管理,环境,信息,命令,工具,软件,设备,服务,调出内核环境配置菜单命令1、查看/usr/src/linux/.config文件:这是在linux进入配置的命令?
linux进入配置的命令?,网络,地址,服务,系统,状态,工作,信息,技术指标,最新,环境,在linux下如何通过命令查网卡配置1、linux查看系统网卡信息的linux下进程调试命令?
linux下进程调试命令?,系统,工作,软件,信息,命令,基础,地址,状态,进程,实时,Linuxquid安装调试中几个常用命令介绍1、使用mkdir 命令创建一个linux命令文档下载?
linux命令文档下载?,工具,网络,系统,工作,基础,数据,名称,管理,位置,代理,linux命令怎么下载pdf文件方法如下 wget是linux下一个从网络上自动linux配置网络命令?
linux配置网络命令?,系统,地址,工作,网络,代码,信息,工具,名字,设备,命令,linux系统常用操作命令1、linux常用命令有pwd命令、cd命令、ls命令linux命令行模式网络?
linux命令行模式网络?,网络,基础,系统,服务,管理,工作,命令,信息,中级,设备,linux重启网络服务命令是什么(linux网络重启的命令)1、输入 systelinux网口调试命令?
linux网口调试命令?,系统,工作,地址,信息,网络,技术指标,状态,电脑,命令,网卡,ZYNQ+linux网口调试笔记(3)PL-ETH1、在ZYNQ上使用gigE Vision协linux命令行模式登录?
linux命令行模式登录?,系统,密码,信息,状态,情况,终端,环境,管理,电脑,位置,linux,按了ctrl+alt+F1,进入了类似纯命令行的界面,让输入login信linux退出命令模式?
linux退出命令模式?,状态,档案,命令,环境,密码,终端,文件,模式,编辑,端口,linux退出vi编辑命令先按ESC进入Command模式,然后输入“:wq”,回车就可linux命令模式加行?
linux命令模式加行?,工作,地址,系统,命令,工具,正规,信息,时间,第一,模式,Linux下vim编辑器命令大全杀死进程killvi命令vi/vim是linux最常用的linux命令行模式使用?
linux命令行模式使用?,工作,地址,目录,信息,名称,系统,管理,命令,文件,标准,linux常用命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出