VisualStudio解决⽅案配置Debug和Release选项
前⾔
visual studio和vs code的区别本⽂章基于VisualStudio2017编写
前两天腾讯电话⾯试中⾯试官问到既然平时有使⽤VS进⾏项⽬调试,那介绍⼀下VS中Debug选项和Release选项有什么不同,我听到这问题时,知道Debug选项是我们平时使⽤VS要开始运⾏时点的那⼀个按钮:
但是这个release是真的没有注意到过,我甚⾄都不确定⾯试官说的英⽂单词是什么。于是⾮常尴尬地,我跟⾯试官重复了好⼏次 “啊? release?” “re–lea–se?” 这个问题在我表⽰不理解后作罢…
今天在⽤VS调试数据挖掘的线性回归作业,这个每次运⾏都要读取25000*384个csv⽂件中的数据,并且对这些数据进⾏梯度下降算法计算,每次迭代都要遍历这个规模的数据的程序,运⾏⼀次下来就要半个多⼩时时间。某次调试时,我注意到debug按钮旁貌似有个下拉菜单,展开后,前⼏天我感觉云⾥雾⾥的”Release”静静躺在其中。
我先是想起前⼏天⾯试被问到的这个问题后,google了Debug和Release的不同,简单地浏览到Debug是⽅便debug调试的,⽽Release 是能优化程序运⾏的之后,出于试验⽬的选择了Release选项运⾏程序。
这个原本在Debug配置下要运⾏半个⼩时的程序,使⽤Release配置,竟⽤了10S钟就完成了运⾏…
引⽤Jessie J在听到呼麦后的评论:“I’m absolutely shocked, but in a great way.”
这两个选项是什么?
“Debug” and “Release” are actually just two labels for a whole slew of settings that can affect your build and debugging. Debug选项和Release选项实际上是为⼀系列极多能影响程序的build和debugging的配置的标签/名字。(这两个配置选项的不同贯穿整个窗⼝,不⽌是优化配置不同)
当你选择了不同的运⾏选项,⽤来运⾏你的程序的配置就会不同,由此程序运⾏的效果就会受到影响。
它们有什么区别?
Debug选项称为调试版本,顾名思义这个选项是调试的时候使⽤的。这个选项的配置中,所有代码⽣成的优化都是关闭的,于是我们触发断点后可以通过即时/局部变量窗⼝来观察对应的变量。
Program Debug Database files, which allow you to follow the execution of the program quite closely in the source during
run-time.
All optimizations turned off, which allows you to inspect the value of variables and trace into functions that might otherwise have been optimized away or in-lined
A _DEBUG preprocessor definition that allows you to write code that acts differently in debug mode compared to release,
for example to instrument ASSERTs that should only be used while debugging
Linking to libraries that have also been compiled with debugging options on, which are usually not deployed to actual customers (for reasons of size and security
Release选项称为发布版本,这个选项的配置使得编译器可以对我们的代码进⾏低等级的,复杂的优化。优化后代码可能会”⾯⽬全⾮“,导致单步调试变得不可⾏,我们也⽆法在变量窗⼝中看到变量,因为我们要观察的变量可能被优化了。并且发布版本不会⽣成.PDB⽂件(.PDB⽂件让调试器能知汇编指令与代码⾏数之间的对应关系)
总之
需要调试程序时,选⽤Debug选项
需要程序快速运⾏时,选⽤Release选项
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论