您的位置:首页 > 其它

多线程与调试 (FreePlane的mm格式文件导出)

2013-04-27 21:35 381 查看
~ 多线程及调试

修改记录

2011年8月25日 第一次使用freeplane来做笔记,感觉不算,你可以再完善一下,做成你自己的库
2013年4月27日21:09:35 增加自己对内存泄露的体会

减少bug的产生

把waring转成error
有wanging不能发布
代码检查工作来帮助可能的问题点
编码规范来约束代码的质量

堆的破坏会出现非常奇怪的问题,检索完整性

_CrtCheckMemory
GetProcessHeap

关于堆的相关信息可以参考: http://blog.csdn.net/ithzhang/article/details/8446489
数据结构的自检:关键属性是否在合理的范围
数据结构的dump

多胜于不能停止的程序
嵌入式的开发+log的使用

assert与log是编程习惯的问题

泄漏问题

resouce

memory

gdi

handle:file, socket, mutex

好的方式:

new:delete, malloc:free
open:close
析构来释放资源与互斥量
好的代码的逻辑上清楚的,坏的代码的逻辑上中混乱的

_CrtDumpMenoryLeaks

purify
bounds cheak
vc自带的工具

_CrtSetAllocHookc

perfmon,mandleExa工具来查看泄漏的问题

使用VLD来检查内存泄露是一种不错的选择,其基于crt函数的结合可以显示发生内存泄露的调用堆栈,这个就很有用了,对解决问题有很大的帮助。只所以使用这个小工具是因为,64位的win7和boudschecker没有安装起来

现场信息很重要

机不可失,失不再来,事事如此
dotwson来dump有用的信息
死循环的问题
crash

:异常退出与中断问题
access violation:一定要调试
win32 Sem

让我想起了林锐的吃内存的程序,很好玩的,不是吗???

map与pdb文件的使用方式可以学习一下

vc使用技巧的问题

从经典的vc6到强大的vc2005,及目前超级的vc2010
公欲善其事,必先得其器!!!
本次培训还只停留在vc的平台上,与gnu还不在一个层次

使用windbg加pdb或使用GDB来调试,在更高的一个层次上呀!!!

vc的断点设置技巧还是要学习一下的——学习知识点

内存断点对内存覆盖问题是一个不错的选择

各种条件断点的增加是能力的提升

无鼠标的操作,才算合格
watch窗口也能合++执行两次,函数执行,都是可能的,
各种工具窗口的使用,在没有能写pdb的运行脚本之前,这个很有很的

远程调试的问题

远程调试的知识是自己从网上学习过的
dump

save dump as

msdn的学习

DebugBreak

工具

windump

战略与战术

bug的来历:虫子,真的是虫子

只在用户的环境下运行不正常的问题

几百万行的代码如何找到bug

10%的时间在写代码,90%的时间在调试

其实设计才是第一位的,设计做好了,代码质量很高, bug出现的可能性就会降低

在使用工具去查找问题之前请一定要把自己的代码整理一下。最近对内存泄露问题使用工具没有查出,也确定没有内存泄露,原因是以前为调试代码,自己把客户端发过来的请求给放到一个vector中备份,后来给忘记了,在服务端退出时会清除内存,但运行时内存一直在增加,当发现是这个问题引起的假内存泄露时我心都碎了!!!

缺陷:设计与需求不相符

bug:程序与功能不一致
获取,定位,重现,减少:bug的四步骤
思路问题,几个月之后你看你的逻辑感觉怎样

assert的使用,尽量使用:函数的入口与出口处断言
log是逻辑问题的最终方法:关键地方输出你的关键信息

pdb文件:

release版本的带一些调试信息,优化等级
map文件的使用,与pdb的区别如何???

好的思想

逻辑不清楚的人产生的bug越难,问题的关键是设计与逻辑
单元测试才是程序员的可靠方案
迭代的开发模式
程序的单入单出,函数功能的单一化
有调试信息的版本,发给用户,来使用
log是十分重要的工具,查找疑难问题的终极工具

预防比调试重要
不使用assert的代码中不合格的,人也是不称职的!!!
学习,积累,实践
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐