首页 > 其他分享 >Debug和release的介绍以及二者的区别

Debug和release的介绍以及二者的区别

时间:2023-05-28 19:31:43浏览次数:37  
标签:二者 debug 环境 Debug 反汇编 release 调试

一、介绍

Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。在Debug环境下,我们可以使用调试技巧,如观察监视、内存、反汇编等等。

Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优 的,以便用户很好地使用。
所以,Debug环境是程序员使用的,而Release环境是发布后用户使用的。

二、二者区别

1、调试的区别

在Debug环境下,按F10(有fn键的话,需要按住fn+F10),启动调试,就可以使用如下功能了。

Debug和release的介绍以及二者的区别_反汇编


而在release环境下,调试不好用,虽然也可以显示调试界面,但是完成不了像debug环境下的操作。

2、文件大小的区别

debug环境下生成的文件,里面因为包含了调试信息,所以占据的空间较大,而release环境下生成的文件,是提供给用户使用不需要用户调试,所以文件所占空间较小。


Debug和release的介绍以及二者的区别_编译器_02


Debug和release的介绍以及二者的区别_编译器_03


3、反汇编的区别

Debug和release的介绍以及二者的区别_反汇编_04


Debug和release的介绍以及二者的区别_编译器_05



左边是debug环境下的反汇编,而右边是release环境下的反汇编,可以看到右边的汇编代码要明显少于左边。

以上的三种区别均来自于编译器的区别。不同编译器不同环境下的情况会有所不同。

4、代码执行结果的不同

Debug和release的介绍以及二者的区别_编译器_06


在debug环境下,结果是死循环,而release环境下是输出12个“hehe”。


Debug和release的介绍以及二者的区别_反汇编_07


Debug和release的介绍以及二者的区别_编译器_08


造成debug环境下的原因是:

Debug和release的介绍以及二者的区别_反汇编_09

Debug和release的介绍以及二者的区别_编译器_10

Debug和release的介绍以及二者的区别_死循环_11

而release环境是对程序进行了优化,让i处于arr数组的下方,arr数组再怎么向上访问也访问不到i,就不会修改i中的值,所以不会死循环而打印出12个hehe。

Debug和release的介绍以及二者的区别_编译器_12




标签:二者,debug,环境,Debug,反汇编,release,调试
From: https://blog.51cto.com/u_15865089/6366260

相关文章

  • 如何给以make工具构建的工程中加debug编译选项
    问题描述make可以像bash一样调用很多命令,debug选项属于编译器(以gcc为例),所以这个问题更准确的描述应该是:如何给make工程中gcc传递-g参数。之所以还用上面的名字,是因为最初的诉求冲到脑子的就是上面的样子。一个偷梁换柱的思路首先我们给gcc弄个wrapper程序gcc_wrapper,在这个wr......
  • Qt 中将std::cout 重定向到 qDebug
    #include<QtCore>#include<iostream>voidcustomMessageHandler(QtMsgTypetype,constQMessageLogContext&context,constQString&msg){QByteArraylocalMsg=msg.toLocal8Bit();switch(type){caseQtDebugMsg:......
  • 无限debugger反调试
    1.var_constructor=Function.prototype.constructor;Function.prototype.constructor=function(data){if("debugger"==data){returnnull;}return_constructor(data);}var_constructor=Function.prototype.constructor;......
  • how to strip debug info
    compile:c++-gtmp.cc-ostarrocks_besplitdebuginfoobjcopy--only-keep-debugstarrocks_bestarrocks_be.debugstrip--strip-debugstarrocks_belinkdebuginfowithstripedbinaryobjcopy--add-gnu-debuglink=starrocks_be.debugstarrocks_beoptional......
  • 汇编-debug命令
    r   查看cpu寄存器内容     ......
  • 【攻防世界逆向】【高手题】《crackme》《debug》《ReverseMe-120》
    题目crackme解法第一次做这样的题,可以说是奇难了。1.手动脱壳,这道题是nspack,没见过这个壳,去找别的师傅学习了一下,https://blog.csdn.net/xiao__1bai/article/details/120230397讲的非常详细了,但我还是想用我的语言把我的理解再复述一遍。nspack,北斗壳,也是一种压缩壳加密壳。用......
  • ABAP DEBUG技巧(持续更新)
    1.根据消息号查找WatchPoint  2.updatetast需要打开调试器的更新模式断点有时候打开也进不去需要watchpoint强制打进去函数或者程序的断点 执行程序前/H 打一个函数断点再执行update的函数 ......
  • APP启动异常崩溃--pointer being freed was not allocated *** set a breakpoint in m
    一、问题场景APP启动异常崩溃BlockChainStep(1332,0x7000057ad000)malloc:*errorforobject0x600000008300:pointerbeingfreedwasnotallocated*setabreakpointinmalloc_error_breaktodebug二、崩溃原因在Xcode8中,如果你的图片资源文件里有16位图或者图片显示模......
  • php+phpstorm+xdebug配置
    简介原文链接:https://culturesun.site/index.php/archives/675.html因为博客是php的,所以无奈接触了php开发,虽然之前也学习过php语法。搞开发是离不开debug。最初从网上找到相关教程配置成功了,后来升级php,浏览器崩了搞的debug不行,再配置怎么也不成功,准确的来说,网上的辣鸡贴子太......
  • ubuntu中使用vscode进行cuda c代码debug出现 no such file or directory 的问题
    {"version":"0.2.0","configurations":[{"name":"CUDAC++:Launch","type":"cuda-gdb","request":"launch","program":......