软件调试
文章平均质量分 79
马大叔小舅舅
不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。
展开
-
平台服务器句柄泄露问题的排查与解决
我们监控平台有台报警服务器,其主要功能是接收前端,TDDC,网管服务器等发送的报警,并依据报警联动配置进行相应的联动操作,最近发现在该服务器运行过程中,通过任务管理器查看其句柄数量会不断增加,以至于影响其他服务器工作,初步怀疑是句柄泄露问题,现对其进行分析排查。句柄是Windows用来标识应用程序所建立或使用的对象的唯一整数,Windows的内核对象包括进线程,窗口,位图,GDI对象等等。应用原创 2015-06-25 08:33:25 · 4642 阅读 · 2 评论 -
win7下堆管理结构分析
win7下堆管理结构主要包括HEAP HEAP_SEGMENT HEAP_ENTRY 这几个结构。原创 2015-10-10 13:43:45 · 3889 阅读 · 0 评论 -
逆向调试初探
在开发过程中,我们经常会调用第三方库,当程序出了问题时,有时候崩在了第三方库内,问题就比较难查了,这个时候要找出原因,就需要我们有一定的逆向功底,因为一般第三方库的源代码我们是看不到的,只能通过反汇编的方法来查找。近日,在某项目的开发过程中,遇到一个问题。我们一台服务器在运行过程中出现了几次崩溃,产生若干DMP文件。我们用windbg打开,设置符号路径,并加载符号。输入!analyze -原创 2015-07-23 10:34:29 · 1253 阅读 · 0 评论 -
一处消息死锁分析
windows是一个消息驱动的系统,也是个多任务调度系统,windows中的线程分为两类,GUI线程与Worker线程,每个GUI线程会关联消息队列,当消息处理顺序不当时,则有可能造成消息死锁。使用VS2008打开项目工程,按F5启动调试,该工具工作正常,点击退出按钮,此时会发现该工具失去了响应。按Ctrl+Alt+Break将程序中断,发现程序停在了如下位置。可以看出,当接收到退出消原创 2015-06-15 09:07:27 · 2528 阅读 · 2 评论 -
栈溢出崩溃排查(一)
近日,我们视频平台提交基线测试时,出现录像下载失败崩溃的现象,通过仔细调试发现其是一个很典型的DLL HELL引发的栈溢出,由于在我们的项目中,引用了大量的DLL,而且有很多DLL是多方引用的,很容易出现版本不一致的问题,一般这种问题极难排查,需要耗费大量精力,现将此排查过程记录下,希望对后面类似问题的排查有所帮助。原创 2015-06-12 09:06:25 · 3745 阅读 · 0 评论 -
堆异常调试
因为VS对于堆调试的支持不够,与堆相关的问题一般较为棘手,近日,我在使用VS调试平台SDK时,发现一个问题。程序正常运行没有问题,当程序退出时,会报告一个堆错误异常,如下图: 类似的错误比较常见了,相信很多人都见过,提示也显而易见,是操作程序的堆时发生了异常。因为VS识别程序堆比较困难,遇到这种问题就比较捉襟见肘了,此时,强大的windbg就派上了用场。Windbg有两种调试模式,原创 2015-07-08 10:02:38 · 1552 阅读 · 0 评论 -
栈溢出崩溃排查(二)
(接上文)竟然全是0,试着输出再多一些,输入dps esp L100,终于能看到熟悉的调用栈了,当然这种形式与我们平时看windbg的不同,这里把调用栈的原始数据输出了,具体调用流程,还要我们自己去分析。实际上到这里,已经猜到十有八九是发生了栈溢出,其判断理由有二,第一EIP和EBP的值同时被覆盖掉了,第二EIP和EBP的值跟ESP指向的栈上的值相同,都是0,想想函数的调用过程,当函数调用原创 2015-06-12 10:22:03 · 5168 阅读 · 0 评论 -
gsoap一处bug引起的崩溃分析
近日,现场有人反映,平台某服务器出现一次崩溃,不过由于看门狗的存在,又自动重启了,听到此消息也比较诧异,因为这台服务器已经运行两三个月了,突然崩溃一次,而后面再怎么操作又没问题了,想必是个极难出现的bug,跟现场确认没有进行过什么特殊操作,且没有安装卸载任何程序后,就让现场把dmp文件发回来,进行仔细分析。Dmp文件很大,约1.54个G,这个我还是比较乐意看到的,因为dump文件越大,说明包含原创 2015-09-24 10:34:51 · 3349 阅读 · 3 评论