代码调试遇到的问题
2015-02-02 22:38
344 查看
理解和使用是两码事
第一个错误是关于stl的,写程序的过程中,总是期望用最小的代价获得最大的收益,
效率低下的代码是不能忍受的,但有时容易陷入极端,这个问题根源在于迭代器
失效, 为了一个锁,以为安全的,没有注意到。还有一个问题,deque的所以插入和
删除操作都会导致迭代器失效。
第二个问题是关于死锁的,写了几年的代码第一次遇到这个问题,就像刚工作的时候专家(老大)
问我,有没有遇到比较严重的内存错误,当时傻乎乎说没有。问题是客观存在的,没有的原因在于
系统没有那么复杂。前段时间刚刚调试了内存泄露的问题,重载了operate new操作符,调试了每一个
模块,没有发现问题,于是把目光转向了stl,终于发现一个无效的内存,导致vector不停的push。
这次死锁,在于想在信号量唤醒之后保存一个状态,这个状态记录了唤醒的来源,于是内部加了一个锁,
导致了死锁。解决完这个问题后一阵后怕,感觉能够快速解决,根本原因在于一直坚守的完善的log记录,
最初工作的时候总是喜欢debug调试,在代码比较少业务简单的情况下或许可以,但在系统复杂的情况
下就没那么有效了,log是定位逻辑错误的最有效的手段,前提是打的有技巧。
目前实现的模块是基于一系列的目标,制定时间,添加时间段,推到执行模块按序执行的一种机制。
第一个错误是关于stl的,写程序的过程中,总是期望用最小的代价获得最大的收益,
效率低下的代码是不能忍受的,但有时容易陷入极端,这个问题根源在于迭代器
失效, 为了一个锁,以为安全的,没有注意到。还有一个问题,deque的所以插入和
删除操作都会导致迭代器失效。
第二个问题是关于死锁的,写了几年的代码第一次遇到这个问题,就像刚工作的时候专家(老大)
问我,有没有遇到比较严重的内存错误,当时傻乎乎说没有。问题是客观存在的,没有的原因在于
系统没有那么复杂。前段时间刚刚调试了内存泄露的问题,重载了operate new操作符,调试了每一个
模块,没有发现问题,于是把目光转向了stl,终于发现一个无效的内存,导致vector不停的push。
这次死锁,在于想在信号量唤醒之后保存一个状态,这个状态记录了唤醒的来源,于是内部加了一个锁,
导致了死锁。解决完这个问题后一阵后怕,感觉能够快速解决,根本原因在于一直坚守的完善的log记录,
最初工作的时候总是喜欢debug调试,在代码比较少业务简单的情况下或许可以,但在系统复杂的情况
下就没那么有效了,log是定位逻辑错误的最有效的手段,前提是打的有技巧。
目前实现的模块是基于一系列的目标,制定时间,添加时间段,推到执行模块按序执行的一种机制。
相关文章推荐
- 代码调试过程中容易遇到的问题
- Android studio 调试NDK C++ 代码,遇到的问题
- 调试dijkstra代码遇到的问题(总结)
- 最近遇到VS.Net的两个问题--无法调试,未加载符号和后台代码无法调用控件
- 求助:两个代码调试遇到一类问题 :有未经处理的异常: 0xC0000005: Access violation
- 显著性检测代码调试所遇到的问题
- nodejs npm grunt 运行调试代码遇到的问题
- show and tell 代码调试过程遇到的问题及解决
- 对调用了TypeMock.net的代码进行调试遇到的怪问题--在vs.net中启动resharper自带的unit test的过程和方式是什么样的?
- 代码调试过程中easy遇到的问题
- 调试代码过程中遇到的问题
- Tomcat调试ok的代码移植到Weblogic11g(server10.3.3),遇到的问题解决记录。
- 如题,我用的是vs2008(测试版)和UltraEdit-32 version 12.10我一运行或者调试web 程序就会遇到这个问题
- 复制粘贴代码容易遇到的问题
- WM5仿真设备的调试遇到的问题
- SharePoint计时器代码遇到的问题
- 我调试mini2440 qq2440 过程中遇到的问题和解决方法
- VC调试遇到的问题
- 用ADS写一个ARM启动代码遇到的问题
- Visual Basic调试COM+组件遇到的问题