正文内容加载中...
posted @ 2012-07-25 14:44 皮皮鲁. 阅读(1056) 评论(0) 推荐(0) 编辑
摘要: 调试过debug版本的vc程序的人一定对0xCCCCCCCC和0xCDCDCDCD这样的内存很有印象。这是debug版本的CRT为了方便调试程序,在分配出来还没有初始化的时候提供的初始值。实际上,Windows上面还有更多这样的初始值,见下表:Uninitialized BAADF00DUsed by Microsoft's LocalAlloc/GlobalAlloc/HeapAlloc(LMEM_FIXED) to mark uninitialised allocated heap memoryCCCCCCCCUsed by Microsoft's C++ debuggin 阅读全文
posted @ 2012-07-02 15:54 皮皮鲁. 阅读(2314) 评论(0) 推荐(1) 编辑
摘要: 如果你有SDK的编程经验,就一定应该知道在创建窗口时需要指定窗口类,窗口类中的一种重要的参数就是窗口过程。任何窗口接收到的消息,都是由该窗口过程来处理。在面向对象编程中,如果还需要开发人员来使用原始的窗口过程这种面向过程的开发方式,面向对象就显得不那么纯粹了。所以,在界面编程的框架中,框架往往会隐藏窗口过程,开发人员看到的都是一个个的类。如果要处理某一个消息,则需要在窗口对应的类中加入响应的message map即可。那么,框架是如何将窗口过程跟窗口对应的类关联起来呢? ATL中用的是一个叫thunk的机制。由于我们收回来的dump有大量的窗口过程出问题的case,最后发现跟thunk有一定的 阅读全文
posted @ 2012-03-30 15:45 皮皮鲁. 阅读(2884) 评论(0) 推荐(3) 编辑
摘要: 最近在做性能测试,有大量的重复的操作,所以打算用bat文件做脚本。之前也用过bat文件,但是都只是应用到一些简单的功能。比如用%var%来指定环境变量,%0,%1来指代传入的参数,用if来进行字符串比较等等。今天通过网上搜索,学会了三个新的功能。1. 用set /a 来进行数学计算,具体的语法如下:Add: SET /A Result = 12 + 4Subtract: SET /A Result = 23 - 7Multiply: SET /A Result = 8 * 2Integer divide: SET /A Result = 33 / 2Modulo divide: (1, 2) 阅读全文
posted @ 2012-03-15 16:30 皮皮鲁. 阅读(3298) 评论(7) 推荐(4) 编辑
摘要: 前一篇文章介绍了任务管理器中关于内存的两个重要概念:private和working set。但是内存远不止那么简单,下面我根据VMMap来详细介绍一下内存的分类。内存是一个很复杂的系统,其中的paging file,sharable memory,reserve和commit等概念使得要算清楚一个进程到底使用了多少内存几乎成了不可能的事情了。还好我们有VMMap这个工具,它用两个纬度将内存进行了详细的划分。一个是纵向的纬度,也就是内存是从哪里来的。分为Image(可执行文件),Mapped file(由CreateFileMapping以文件作为back up)。Sharable(由Creat 阅读全文
posted @ 2012-03-07 15:31 皮皮鲁. 阅读(7489) 评论(6) 推荐(3) 编辑
摘要: 任务管理器中跟内存相关有两个重要的指标Private(提交大小)和working set(工作设置)。如下图所示:这两个指标在process explorer中叫做Private Bytes和Working Set。而在VMMap中,他们则分别被叫做Private和Total Working Set。我这里也用Private和working set来称呼他们。他们经常被用来标识一个进程到底占用了多少内存,你知道他们分别代表什么吗?Private指的是当你修改他时仅仅当前进程会受到影响。(copy-on-wirte属性的页面还没被修改时也属于此类)。这类一般包括Heap,stack和image的 阅读全文
posted @ 2012-03-07 14:07 皮皮鲁. 阅读(11094) 评论(5) 推荐(3) 编辑
摘要: 最新一直在分析产品反馈回来的dump,分析过程中发现有一些dump的symbol无法加载。比例很小,1000个dump,只有7个没法加载symbol。即使使用.reload /i也无法加载:0:000> .reload /i alibrowser.exeUnable to load image C:\Program Files\AliBrowser\Alibrowser.exe, Win32 error 0n2*** WARNING: Unable to verify timestamp for Alibrowser.exe*** ERROR: Module load completed 阅读全文
posted @ 2012-02-15 18:52 皮皮鲁. 阅读(3759) 评论(3) 推荐(2) 编辑