4章
2016-05-27 11:30
246 查看
#
2
通过gdb调试分析,程序在无线递归调用时,栈空间地址不断向上面写入数据,最终会导致段错误。![------------------------------------stack-------------------------------------] 0000| 0xffffcf7c --> 0x804840a (<foo+11>: leave) 0004| 0xffffcf80 --> 0xf7ffd938 --> 0x0 0008| 0xffffcf84 --> 0x0 0012| 0xffffcf88 --> 0xffffcf98 --> 0xffffcfa8 --> 0xffffcfb8 --> 0xffffcfc8 --> 0xffffcfd8 --> 0xffffcfe8 --> 0x0 0016| 0xffffcf8c --> 0x804840a (<foo+11>: leave) 0020| 0xffffcf90 --> 0xffffffff 0024| 0xffffcf94 --> 0xffffcfbe --> 0x10804 0028| 0xffffcf98 --> 0xffffcfa8 --> 0xffffcfb8 --> 0xffffcfc8 --> 0xffffcfd8 --> 0xffffcfe8 --> 0x0 [------------------------------------------------------------------------------]
执行几次之后
[------------------------------------stack-------------------------------------] 0000| 0xffffcf78 --> 0xffffcf88 --> 0xffffcf98 --> 0xffffcfa8 --> 0xffffcfb8 --> 0xffffcfc8 --> 0xffffcfd8 --> 0xffffcfe8 --> 0x0 0004| 0xffffcf7c --> 0x804840a (<foo+11>: leave) 0008| 0xffffcf80 --> 0xf7ffd938 --> 0x0 0012| 0xffffcf84 --> 0x0 0016| 0xffffcf88 --> 0xffffcf98 --> 0xffffcfa8 --> 0xffffcfb8 --> 0xffffcfc8 --> 0xffffcfd8 --> 0xffffcfe8 --> 0x0 0020| 0xffffcf8c --> 0x804840a (<foo+11>: leave) 0024| 0xffffcf90 --> 0xffffffff 0028| 0xffffcf94 --> 0xffffcfbe --> 0x10804 [------------------------------------------------------------------------------]
相关文章推荐
- Linux 自检和 SystemTap
- Python 七步捉虫法
- 路由器的配置与调试
- 对于技术人员的出现了运行时间错误,是否要进行调试的解决方法
- 在ASP.NET 2.0中操作数据之七十二:调试存储过程
- 讲解WordPress开发中一些常用的debug技巧
- JavaScript程序设计之JS调试
- 可以用来调试JavaScript错误的解决方案
- 如何调试异步加载页面里包含的js文件
- jQuery下的Ajax调试步骤
- 调试一段PHP程序时遇到的三个问题
- JavaScript高级程序设计 错误处理与调试学习笔记
- Javascript调试脚本的经验之谈第1/2页
- 在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
- Android App调试内存泄露之Cursor篇
- Lua的编译、执行和调试技术介绍
- 解决Visual Studio 2012 Update 4 RC启动调试失败的方案
- 10个调试和排错的小建议
- 调试PHP程序的多种方法介绍
- PHP调试函数和日志记录函数分享