Chinaunix
标题:
用gdb怎样来跟踪数组越界???
[打印本页]
作者:
huzou_cn
时间:
2010-06-03 20:24
标题:
用gdb怎样来跟踪数组越界???
用gdb怎样来跟踪数组越界???
作者:
huzou_cn
时间:
2010-06-03 20:24
作者:
没本
时间:
2010-06-03 20:25
用valgrind
作者:
rain_fish
时间:
2010-06-03 20:29
越界时不就崩溃了吗?
作者:
没本
时间:
2010-06-03 22:11
回复
4#
rain_fish
越界不是一定会崩溃的。
void foo(void)
{
char a[10];
int b = 0;
a[11] = 'o'; //a[11]越界但不崩溃,但是b的值被破坏了。
}
作者:
单眼皮大姐
时间:
2010-06-04 00:39
期待中~
作者:
rain_fish
时间:
2010-06-04 08:22
回复 rain_fish
越界不是一定会崩溃的。
void foo(void)
{
char a[10];
in ...
没本 发表于 2010-06-03 22:11
是的,期待中。。。
作者:
linuxlixk
时间:
2010-06-04 09:27
只能你自己保证
作者:
wmmy2008
时间:
2010-06-04 09:56
本帖最后由 wmmy2008 于 2010-06-04 09:58 编辑
回复 rain_fish
越界不是一定会崩溃的。
void foo(void)
{
char a[10];
in ...
没本 发表于 2010-06-03 22:11
//经典的死循环就这样子产生了!!!
void foo(void)
{
char a[10];
char i;
for(i = 0 ; i < 11 ; i++)
*(a + i) = 0;
}
作者:
star1983653
时间:
2010-06-04 10:31
回复 rain_fish
越界不是一定会崩溃的。
void foo(void)
{
char a[10];
in ...
没本 发表于 2010-06-03 22:11
现在的编译器在分配数组的时候,聪明了很多。b未必会被填成0
作者:
net_robber
时间:
2010-06-04 14:19
数组越界不是程序错误,是逻辑错误
作者:
huzou_cn
时间:
2010-06-06 18:02
急!!!同志们请给以指导。。。
作者:
huzou_cn
时间:
2010-06-06 18:02
越界 编译 和输出都是正常的。。。
就是输出的值不是期望值。。。
作者:
koolcoy
时间:
2010-06-06 23:57
本帖最后由 koolcoy 于 2010-06-06 23:58 编辑
使用watch命令
watch数组最后一个元素后面的内存地址,具体命令我记不清了,看看帮助吧。一旦有代码读写了你watch的内存地址,程序就会被中断,然后你就知道到底是哪端代码在玩你了。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2