利用内存断点(数据断点)结合windows CRT 定位堆栈溢出问题

最近几年比较倾心于github+evernote学习方式,所以很少来csdn记录自己学习所得了,今天就堆栈溢出问题写一篇解决办法。

公司司产品经过这三年的迭代已经非常复杂了,代码量超过10万,而且混杂了来自韩国,美国,台湾,北京好几个团队的贡献,加上跨现流行几大移动平台(android, ios)。维护,优化和定位bug已经远不如以前容易了。所以常常借助了比较的工具平台(valgrind, cpplint, intel vtunes)。

上周jekins日常做持续继承的时候报告一个堆栈溢出的问题。问题出在delete某一class实例的时候发生了堆栈溢出。这个class是由另外团队开发,代码量非常大且算法复杂,内部代码细节我们一直没有去读过。一开始通过vs debug方式很久没有找到头绪,因为一旦是堆栈溢出后,函数返回跳转就会出错,很难有正确的堆栈信息让你去排查问题。

后来我想到很久没有用的内存断点,刚好在windows平台可以借助CRT定位了。
问题分析步骤如下(推荐在windows debug模式):

#define BUFFER_SIZE 8

class Bug {
  public:
	Bug() {
	  buffer_ = new char[BUFFER_SIZE];
	  memset(buffer_, 0x0, BUFFE
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Fiddler是一个用于HTTP/HTTPS流量捕获和分析的网络调试工具,同时它也提供了修改请求和响应数据的功能。下面是使用Fiddler进行断点修改数据的一般步骤: 1. 首先,确保你已经安装并打开了Fiddler。 2. 在Fiddler的界面上方工具栏中,点击"Options" -> "Gateway"。 3. 在弹出的对话框中,确保"Enable remote computers to connect"选项被勾选,并记下显示的IP地址和端口号。 4. 在你的设备或浏览器上,配置代理以使用Fiddler。具体方法可以在Fiddler的官方文档中找到。 5. 当代理设置好后,Fiddler会开始捕获你设备上的网络流量。 6. 找到你想要修改数据的请求,在Fiddler的"Web Sessions"选项卡中可以看到所有捕获到的请求和响应。 7. 右键点击你想要修改的请求,选择"Breakpoints" -> "Before Request"或者"Breakpoints" -> "After Response",根据你需要在请求发送前还是响应返回后进行修改选择相应的选项。 8. 当Fiddler捕获到这个请求时,它会自动暂停流量并展示请求和响应的详细信息。 9. 在Fiddler的"Inspectors"选项卡中,你可以查看和修改请求和响应的数据。例如,在"Request Builder"中修改请求的参数或者在"TextView"中修改响应的内容。 10. 修改完成后,你可以点击Fiddler界面上的"Run to Completion"按钮继续发送请求或者关闭Fiddler停止捕获流量。 需要注意的是,在使用Fiddler进行数据修改时,要遵守法律和道德规范,并且仅限于在你拥有合法权限的系统或应用中进行。使用Fiddler进行非法活动是违法的,并且可能会对他人造成损害。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值