博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C之变量初始化的重要性
阅读量:4307 次
发布时间:2019-06-06

本文共 7434 字,大约阅读时间需要 24 分钟。

#include <stdio.h>

int add_range(int low, int high)

{
int i, sum;
for (i = low; i <= high; i++)
sum = sum + i;
return sum;
}

int main(void)

{
int result[100];
result[0] = add_range(1, 10);
result[1] = add_range(1, 100);
printf("result[0]=%d\nresult[1]=%d\n", result[0], result[1]);
return 0;
}

1 root@ubuntu:/opt/liuzw# gdb ./test  2 GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04  3 Copyright (C) 2012 Free Software Foundation, Inc.  4 License GPLv3+: GNU GPL version 3 or later 
5 This is free software: you are free to change and redistribute it. 6 There is NO WARRANTY, to the extent permitted by law. Type "show copying" 7 and "show warranty" for details. 8 This GDB was configured as "i686-linux-gnu". 9 For bug reporting instructions, please see: 10
... 11 Reading symbols from /opt/liuzw/test...done. 12 (gdb) i locals 13 No frame selected. //没有变量 14 (gdb) n 15 The program is not being run. //没有开始直接下一步是不对的 16 (gdb) start 17 Temporary breakpoint 1 at 0x8048415: file test.c, line 14. 18 Starting program: /opt/liuzw/test 19 20 Temporary breakpoint 1, main () at test.c:14 21 14 result[0] = add_range(1, 10); //开始运行程序,经过定义变量,执行了第一条语句 22 (gdb) i locals 23 result = {-1208188928, 2, 134513196, -1207960576, -1207963660, -1207963660, -1209922512, 1, -1208104168, -1208058708, 0, 0, 0, 0, 0, 24 0, 0, -1208104168, 0, 0, 0, 3, -163754450, 1011, 0, -1209886408, -1207959944, -1207984804, -1209921992, 0, 38, -1209734771, 0, 0, 1, 25 2224, -1208104120, -1208104872, 134513228, -1209884328, 134513148, 1, -1209313744, -1209313186, -1073745400, -1207963660, 26 -1207960880, -1073745164, -1073745232, -1208058151, -1073745264, 134513148, -1073745288, -1207960972, 0, -1208104120, 1, 0, 1, 27 -1207961320, 0, 0, 0, -1208205324, -1073745298, -1073745297, 1, -1209312327, -1073745297, -1073745298, 0, -1208008724, -1073745164, 28 0, 0, -1209728909, 134513228, 0, 12648448, 1, -1073744675, 47, -1073745220, -1208205324, 134513776, 134520820, 1, 134513373, 29 -1208204316, 13, 134520820, 134513809, -1, -1209728570, -1208205324, -1209728427, -1208036736, 0, 134513785, -1208205324} 30 //整形数组定义未初始化,内容为内存中随机值 31 (gdb) s 32 add_range (low=1, high=10) at test.c:6 33 6 for (i = low; i <= high; i++) //带跳转函数的下一步命令:执行到第一条函数调用处,并执行了子函数经过变量定义后的第一条语句 34 (gdb) i locals 35 i = 0 //查看当前变量值,i因为被形参low赋值0所以为有效值,sum因为没有被初始化,值为内存中随机数 36 sum = -1208060323 37 (gdb) n 38 7 sum = sum + i; //不跳转函数的下一步命令:执行了累计和函数 39 (gdb) i locals 40 i = 1 //经过累计和函数后,i变量执行到i++,所以增加1为1 41 sum = -1208060323 //经过累计和函数后因为sum = -1208060323、i=0,累加赋值sum还是-1208060323 42 (gdb) n 43 6 for (i = low; i <= high; i++) //不跳转函数的下一步命令,执行了for函数判断 44 (gdb) i locals 45 i = 1 //i由于被for一轮循环后的i++已经增为1 46 sum = -1208060322 //sum经过+i,已经从-1208060323增大到-1208060322 47 (gdb) n 48 7 sum = sum + i; 49 (gdb) i locals 50 i = 2 //经过累计和函数后,i变量执行到i++,所以增加1为2 51 sum = -1208060322 52 (gdb) n 53 6 for (i = low; i <= high; i++) 54 (gdb) i locals 55 i = 2 //经过累计和函数后因为sum = -1208060322、i=2,累加赋值sum为-1208060320 56 sum = -1208060320 57 (gdb) n 58 7 sum = sum + i; 59 (gdb) i locals 60 i = 3 //经过累计和函数后,i变量执行到i++,所以增加1为3,因为还没有继续累加,保持sum = -1208060320 61 sum = -1208060320 62 (gdb) n 63 6 for (i = low; i <= high; i++) 64 (gdb) i locals 65 i = 3 //经过累计和函数后因为sum = -1208060320、i=3,累加赋值sum为-1208060317 66 sum = -1208060317 67 (gdb) n 68 7 sum = sum + i; 69 (gdb) i locals 70 i = 4 71 sum = -1208060317 72 (gdb) n 73 6 for (i = low; i <= high; i++) 74 (gdb) i locals 75 i = 4 76 sum = -1208060313 77 (gdb) n 78 7 sum = sum + i; 79 (gdb) i locals 80 i = 5 81 sum = -1208060313 82 (gdb) n 83 6 for (i = low; i <= high; i++) 84 (gdb) i locals 85 i = 5 86 sum = -1208060308 87 (gdb) n 88 7 sum = sum + i; 89 (gdb) i locals 90 i = 6 91 sum = -1208060308 92 (gdb) n 93 6 for (i = low; i <= high; i++) 94 (gdb) i locals 95 i = 6 96 sum = -1208060302 97 (gdb) n 98 7 sum = sum + i; 99 (gdb) i locals100 i = 7101 sum = -1208060302102 (gdb) n103 6 for (i = low; i <= high; i++)104 (gdb) i locals105 i = 7106 sum = -1208060295107 (gdb) n108 7 sum = sum + i;109 (gdb) i locals110 i = 8111 sum = -1208060295112 (gdb) n113 6 for (i = low; i <= high; i++)114 (gdb) i locals115 i = 8116 sum = -1208060287117 (gdb) n118 7 sum = sum + i;119 (gdb) i locals120 i = 9121 sum = -1208060287122 (gdb) n123 6 for (i = low; i <= high; i++)124 (gdb) i locals125 i = 9126 sum = -1208060278127 (gdb) n128 7 sum = sum + i;129 (gdb) i locals130 i = 10131 sum = -1208060278132 (gdb) n 133 6 for (i = low; i <= high; i++) //执行了for判断134 (gdb) i locals 135 i = 10 //判断后达成,此时值sum继续累加10136 sum = -1208060268137 (gdb) n 138 8 return sum; //执行了子函数返回139 (gdb) i locals140 i = 11141 sum = -1208060268142 (gdb) n143 9 }144 (gdb) i locals145 i = 11146 sum = -1208060268147 (gdb) n //下一个函数调用处,此处整形数组为未初始化148 main () at test.c:15149 15 result[1] = add_range(1, 100);150 (gdb) i locals151 result = {-1208060268, 2, 134513196, -1207960576, -1207963660, -1207963660, -1209922512, 1, -1208104168, -1208058708, 0, 0, 0, 0, 0, 152 0, 0, -1208104168, 0, 0, 0, 3, -163754450, 1011, 0, -1209886408, -1207959944, -1207984804, -1209921992, 0, 38, -1209734771, 0, 0, 1, 153 2224, -1208104120, -1208104872, 134513228, -1209884328, 134513148, 1, -1209313744, -1209313186, -1073745400, -1207963660, 154 -1207960880, -1073745164, -1073745232, -1208058151, -1073745264, 134513148, -1073745288, -1207960972, 0, -1208104120, 1, 0, 1, 155 -1207961320, 0, 0, 0, -1208205324, -1073745298, -1073745297, 1, -1209312327, -1073745297, -1073745298, 0, -1208008724, -1073745164, 156 0, 0, -1209728909, 134513228, 0, 12648448, 1, -1073744675, 47, -1073745220, -1208205324, 134513776, 134520820, 1, 134513373, 157 -1208204316, 13, 134520820, 134513809, -1, -1209728570, -1208205324, -1209728427, -1208036736, 0, 134513785, -1208205324}158 (gdb) s159 add_range (low=1, high=100) at test.c:6160 6 for (i = low; i <= high; i++)161 (gdb) i locals162 i = 11163 sum = -1208060268164 (gdb) n165 7 sum = sum + i;166 (gdb) i locals167 i = 1168 sum = -1208060268169 (gdb) n170 6 for (i = low; i <= high; i++)171 (gdb) i locals172 i = 1173 sum = -1208060267174 (gdb) n175 7 sum = sum + i;176 (gdb) i locals177 i = 2178 sum = -1208060267179 (gdb) s180 6 for (i = low; i <= high; i++)181 (gdb) i locals182 i = 2183 sum = -1208060265184 (gdb) s185 7 sum = sum + i;186 (gdb) i locals187 i = 3188 sum = -1208060265189 (gdb) quit190
gdb调试

 

转载于:https://www.cnblogs.com/pokerface/p/6650293.html

你可能感兴趣的文章
joplin笔记
查看>>
JNDI+springmvc使用
查看>>
vue+springboot分页交互
查看>>
vue+springboot打包发布
查看>>
XSL 开发总结
查看>>
【NOI 2018】归程(Kruskal重构树)
查看>>
如何开始DDD(完)
查看>>
[svc]gns3模拟器及探讨几个bgp问题
查看>>
Error:fatal: Not a git repository (or any of the parent directories): .git
查看>>
数组各元素出现的次数
查看>>
我的读书清单(持续更新)
查看>>
53.Maximum Subarray
查看>>
xlistview(脚)
查看>>
咖啡豆(JavaBean)•香
查看>>
hdu2457 Trie图+dp
查看>>
杭电2075
查看>>
ASP.NET Core ---日志
查看>>
Android框架式编程之MVP架构
查看>>
UEditor 插入图片大于2M提示文件大小超出范围解决办法
查看>>
测绘软件使用心得
查看>>