我遇到了很多关于调试和发布之间差异的问题,例如 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
标志查看生成的程序集中的差异
关于c - 调试和发布可执行文件之间的差异(在示例代码中)在优化的符号和函数方面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40217816/