最近在忙一个CST的问题,所谓CST就是客户那边过来的,需要快点完成。尽管很着急,这个问题还是来来回回的做了将近两个多礼拜,在我近期这么牛逼的状态下这已经是非常不成功的了。
Debug step by step(1) Memeory leak问题调试常用手段
1, check handle leak.
Use Lua script to search the codes.
2, check memory leak.
If you use CRT, you could use:
_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
//_CrtSetBreakAlloc(182366);
// http://msdn.microsoft.com/en-US/library/e5ewb1h3(VS.80).aspx
3, get performance data.
We could use PDH functions. CPDHData
4, 注释代码隔离问题。
5,
1. 加一个对象计数器, 哪种对象一直增加, 就是它了.
2. 申请比较多的类, 轮流内部增加一个 char buffer[65536], 看看内存增加是否加快, 很快就可以找出了.
6, VLD boundchecker ADPlus WinDbg SysInternals-Tools (handle)
7, OANOCACHE=1
http://msdn.microsoft.com/en-us/library/ms221105.aspx
For example, if the application allocates a BSTR and frees it, the free block of memory is put into the BSTR cache by Automation. If the application then allocates another BSTR, it can get the free block from the cache. If the second BSTR allocation is not freed, IMallocSpy will attribute the leak to the first allocation of the BSTR. You can determine the correct source of the leak (the second allocation) by disabling the BSTR caching using the debug version of Oleaut32.dll, and by setting the environment variable OANOCACHE=1 before running the application.
8, some tools Mozilla uses:
http://www.mozilla.org/performance/tools.html
9, 启用或禁用内存诊断可以调用全局函数 AfxEnableMemoryTracking()
#ifdef _DEBUG
CMemoryState oldMemState, newMemState, diffMemState;
oldMemState.Checkpoint();
#endif
…
(被测试的代码)
…
#ifdef _DEBUG
newMemState.Checkpoint();
if(diffMemState.Difference(oldMemState, newMemState)) {
TRACE(“Memory Leaked Here:\n\n” );
}
#endif
抄袭了toplanguage讨论中的一些想法。
http://groups.google.com/group/pongba/browse_thread/thread/6c871ba9a79be74a#
如何学习Lua编程
最近迷上了使用Lua写一些方便的小程序,也看了一些关于lua的文档。发现不少人经常问一些很常见的问题,感觉好像还没有找到学习lua的好办法。下面介绍一下个人经验。
秀秀一些照片
Lua通过COM调用外部程序excel及调用windows api
为了方便起见,最好安装lua for windows,里面已经包含了很多有用的第三方模块。
Lua的Iterator以及函数心得
local tbl = {"one", "two", "three", ‘five’}
local count = #tbl
local inc = 0
Lua简介
lua是一个很有意思的编程语言,我是用它写base64编码辅助工具时候发现的。
lua是巴西里约热内卢大学的一个研究项目,最新版本5.1,真正变成一个人人皆知的编程语言还是因为魔兽世界这个网络游戏。因为暴雪选择了lua作为插件语言,一时间变得众人皆知。现在国内也有不少网络游戏使用lua作为脚本语言。
绝对八卦
整整昏睡一下午,勉强爬起已近五点,发现镜中的自己面色苍白惨不忍睹,都是做梦给累的!
妈看我懒懒的样子想独自下去买菜,我哪里忍心呢,换件衣服又磨蹭一小会儿,还是跟她结伴下楼了。外面空气相对屋子里好一些,没那么闷,太阳下山后居然还有丝丝沁凉,惬意得很,不再不后悔出门了,一高兴就大买特买一番,十足的主妇派头。
依照经验,摆地摊的果菜比固定摊位要便宜很多,因此我们出了门径直往右转——有一个陌生的老爷子卖小一点儿的土豆,居然只要四毛钱,不过打听价钱还真挺不容易的,因为他跟个穿的很姿势的大娘聊得实在火热,俺们顾客的声音根本没传进耳朵。还是边儿上摆摊的阿姨仗义,嗷的一声大喊:“小土豆!!!”他才恋恋不舍地把头转向我们,妈还价一块钱三斤他丝毫没计较,我们娘俩决定买两块钱的当口,那位漂亮的大娘笑呵呵地说这土豆不错那么便宜都买了也行啊,放牛奶箱子里能吃到冬天呢——我晕,咋看着像牵驴地呢?卖点儿破土豆,不至于吧!
等我们折腾一大圈,大包小卷上楼以后已经半个多小时过去了,在阳台乘凉时无意中发现脏兮兮卖土豆的老爷子身边穿着考究的大娘还在跟着忽悠,这家伙难道真是个托?妈说没准儿是那老爷子的老伴儿呢,我实在看不出像一家人儿。等洗了蚬子收拾完黄鱼,妈又跟我报告说那阿姨不见了,看来还真不是老两口啊,哈哈。
饱餐晚饭后我们就这件事儿简单分析了一下,妈认为那老太太可能是买菜的,为了贪小便宜跟老头套近乎,被我否了,因为那阿姨不至于那么不值钱;我说可能是老伴也被妈妈给否了,老伴不会忙活好几个小时末了不见影子;最终取得一致意见:老太太是农村老头的城里亲戚,没事儿帮忙,无可厚非。帅哥被我们八卦的样子弄得咧嘴直乐。
这会儿我还在想,明儿再看到那老爷子得找找身边有人儿不。你说我都闲成啥样了,本想下午去游泳结果做了一下午的梦,改当八小报记者写八卦新闻了,哎!