>第 10 章 gdb>观察点

orange juicerococo@hotmail.com http://learn.akae.cn/media/ch10s03.html
2009-04-16 03:22:26

"已经很明显了,每次都是for这句改变了input[5]的值,而且是每次加1,而for这句里的i正是每次加1的,原来input[5]就是i的存储单元,换句话说,i的存储单元是紧跟在input数组后面的。"--应该跟编译器有关!!!! 
我用的是gcc4.3.2编译的. input[5]的内容应该是sum的高位字节.
从内存分布来看-0xb(ebp)->sum, -0x8(ebp)->i, -0x11(ebp)->input, 所以input后面存储的内容应该是sum


码匠 code_smtih@sohu.com
2009-09-07 12:01:50

Why is 'watch' failed? I mean the program cannot be stopped on watchpoint. 

I know the method is correct because when I run the same command on other machine, it works well.

I guess it's virtualbox's fault.My environment is ubuntu running on Virtulbox 3.0. 

Who knows the answer to correct it?


wanglei wanglei@rigui.org http://www.rigui.org/
2009-09-23 15:11:28

宋老师:例10.3中的程序,应该将变量sum和i,调换一下位置。 


宋劲杉 songjinshan@gmail.com
2009-09-24 20:55:25

回复以上三位读者:

这一章所举的例子运行结果都是跟编译器有关的。正确的程序跑出来都一样,错的程序跑出来的错误结果各不相同。不必拘泥于我所举的例子,只要本章介绍的gdb命令理解了就行。读者可以自己设法构造一个程序复现书中所讲的结果。


Qian Lv lvqian.ncsu@gmail.com
2009-11-28 10:45:00

请问,当找出10.3的bug后用什么方法修正比较好?我通常是在char input[5]之后再随便定义一个什么变量,让这个变量占据input[5]的空间。该变量通常不用所以无所谓。
还有一种办法是把char input[5]定义改成char input[6]。

不知道宋老师有没有更好的办法?


宋劲杉 songjinshan@akaedu.org
2009-12-27 15:57:02

请参考C标准库一章


machine steve2008.ma@gmail.com
2009-12-31 17:33:56

例程好像错了,要把i的定义,紧跟着input数组的定义,才能出实验的效果


宋劲杉 songjinshan@akaedu.org
2010-01-21 15:27:37

请你看上面的讨论先。


chenxt qingliangshanren@gmail.com
2010-10-10 19:46:05

(gdb) x/7b input
0xbfb8f0a7:	0x31	0x32	0x33	0x34	0x35	0x00	0x00

这里好像是(gdb) x/7x input 显示十六进制的。

感谢老师,终于把gdb看懂了,编译时可以不加-g参数,使用的命令不一样,使用run的和start的有什么区别!


chenxt qingliangshanren@gmail.com
2010-10-10 19:54:04

(gdb) x/7b input
0xbfb8f0a7:	0x31	0x32	0x33	0x34	0x35	0x00	0x00
不好意思,是对的。


如果您有建设性意见,哪怕只是纠正一个错别字,也请不吝赐教,您留下的姓名和email将会出现在本书前言的致谢中。再次感谢您的宝贵意见!