免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2324 | 回复: 4
打印 上一主题 下一主题

这种情况怎么调试:字符串被改动,似乎越界访问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-08 22:45 |只看该作者 |倒序浏览
这样一个函数

char *fun(char **tar_str);

这样调用
1. char *tar_str;

2. char * res_str = fun(&tar_str);

3. int a=1;

问题:  
第二步后,得到tar_str ,比如为"a,b,c"
但是第三步后,tar_str的值变成了“a,#@,b,c",不知道怎么被改了

实际的fun函数很复杂,应该怎么入手呢?

多谢

论坛徽章:
0
2 [报告]
发表于 2011-08-09 00:23 |只看该作者
(gdb) x/2sh 0xbffbbed3
0xbffbbed3:      "6,3,2"
0xbffbbed9:      ",2"
(gdb) p pclNextTimLst
$25 = 0xbffbbed3 "6,3,2"
(gdb) watch *0xbffbbed8
Hardware watchpoint 5: *0xbffbbed8
(gdb) watch *0xbffbbed9
Hardware watchpoint 6: *0xbffbbed9
(gdb) n
2160            if(pclNextTimLst!=NULL)
(gdb) n
2161                                            strcpy(clTimerHR,pclNextTimLst);
(gdb) n
2162                                    strcpy(clTimerMin,pclMNTIMLST);
(gdb) n
2163                                    ilTime = atoi(clFirstTimer) * 60;
(gdb) n
Hardware watchpoint 5: *0xbffbbed8

Old value = 3288064
New value = 3111345
Hardware watchpoint 6: *0xbffbbed9

Old value = 738210348
New value = 738209657
0x002de9ef in __i686.get_pc_thunk.bx () from /lib/libc.so.6

论坛徽章:
0
3 [报告]
发表于 2011-08-09 00:23 |只看该作者
执行到 ilTime = atoi(clFirstTimer) * 60;
pclNextTimLst 的值被改变

百思不得其解

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
4 [报告]
发表于 2011-08-09 22:19 |只看该作者
那fun给修改了呗,这有啥好奇怪的,参数又不是const类型,很有可能被修改了

论坛徽章:
0
5 [报告]
发表于 2011-08-16 12:12 |只看该作者
前几天解决了,还是访问字符串数组越界问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP