gpt4 book ai didi

c - 调试和发布可执行文件之间的差异(在示例代码中)在优化的符号和函数方面

转载 作者:行者123 更新时间:2023-11-30 19:11:23 24 4
gpt4 key购买 nike

我遇到了很多关于调试和发布之间差异的问题,例如 this one

但所有这些都在解释相同的词,例如优化,但没有更深入的内容。

我想通过一个特定的例子来了解响应,以便更好地理解。下面是一个简单的虚拟代码供引用。谁能告诉我引用此示例, Release模式下与 Debug模式下预期的符号缺失和优化?

即使指出一项优化也会有帮助

    #include<stdio.h>


int sum(int arg1, int arg2);

main()
{
int out, in1, in2;
in1 = 1;
in2 = 0;
out = 0;
while (out < 20)
{
out = sum(in1 , in2);
printf(" Current value of out [%d] = in1 [%d] + in2 [%d]\n", out, in1, in2 );
in1++;
in2++;
} /*End of while*/
} /*End of main()*/


int sum(int arg1, int arg2)
{
int sum_val;
sum_val = arg1 + arg2;
return sum_val;
} /*End of sum()*/

最佳答案

调试版本包括完整的符号调试信息,以帮助调试应用程序,其中也未考虑代码优化。

虽然在发布版本中不会发出符号调试信息,并且会优化代码执行,并且由于符号信息没有放入发布版本中,所以最终可执行文件的大小小于调试可执行文件的大小。

此外,优化并不是发布版本中发生的唯一事情。引用:this

<小时/>

在使用 GCC-6.2 的示例编译器上,您可以使用 -Ox 标志查看生成的程序集中的差异

  • 在发布版本中,我们通常需要优化,因此请参阅 -O3

  • 在调试构建中,通常我们需要没有优化的调试符号,但具有完整的调试信息,因此请参阅 -g3 -O0

关于c - 调试和发布可执行文件之间的差异(在示例代码中)在优化的符号和函数方面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40217816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com