美文网首页
windbg定位句柄泄漏

windbg定位句柄泄漏

作者: 龙翱天际 | 来源:发表于2018-10-22 11:52 被阅读28次

一、准备工作

1 打开windbg
2 File->Symbol File Path,配置好符号文件(PDB)


image.png

3 File->Attache to a Process->可以选择一个运行中的进程,并对其进行调试。


image.png

二、快照

1 让程序运行(按F5或输入命令:g)
2 程序执行到想要快照的时候,中断程序(Debug->Break)
3 开启句柄栈回溯(输入命令:!htrace -enable)
4 抓取快照(输入命令:!htrace -snapshot)

三 、执行操作,比较差异

1 让程序运行(按F5或输入命令:g)
2 执行操作
3 中断程序(Debug->Break)
4 !htrace -diff

四、找到代码行

1 查看泄漏的句柄
从下图中可以看出有一个句柄泄漏,该句柄时通过CreateEvent创建出来的事件,通过栈回溯可以看出该事件创建事件的函数:vlc_tester::on_pB_Open_clicked。


image.png

2 查找具体的代码行
lsa vlc_tester!vlc_tester::on_pB_Open_clicked+0x000000000000002c
从下图中可以看出具体的代码。


image.png
3 如果在栈回溯中看不到有用信息,还可以考虑在代码中打印出线程ID,再与句柄泄漏所在线程对比,确认在哪个线程泄漏的,缩小范围。
4 根据栈回溯的模块或模块地址也能找到是哪个模块泄漏的句柄。

五、Process Explorer

Process Explorer

1 显示句柄详细信息


image.png

2 查看程序占用的句柄,如果是命名句柄,可以可以直接在代码中找到该句柄


image.png

任务管理器

1 调出句柄

image.png
image.png

2 查看句柄数


image.png

注意:
1 在使用windbg进行句柄泄漏调试时,需要注意程序位数的匹配,如:windbg32只能用来调试32位程序,windbg64只能用来调试64位程序。
2 在使用windbg附着进程时,windbg会打印出进程所有模块的地址范围。
3 Process Explorer还可以用于查看进程加载的动态库以及动态库的基地址信息。
4 windbg在加载时会打印出加载的动态库以及动态库的基地址信息。
\color{red}{5 整个系统可分配的最大句柄数为1600万,所以一般不会出现句柄泄漏导致程序崩溃}

相关文章

  • windbg定位句柄泄漏

    一、准备工作 1 打开windbg2 File->Symbol File Path,配置好符号文件(PDB) 3 ...

  • Android异常 Too many open files

    当出现 Too many open files异常的时候,意味着文件句柄泄漏过多,句柄泄漏到一定数量之后(一般是接...

  • android句柄泄漏

    android句柄泄漏 前言 在android开发过程中,跑一些单元测试,很容易暴露出文件句柄泄漏的问题。前段时间...

  • Linux解决文件句柄泄漏问题实例

    通过《Linux文件句柄泄漏》我们已经了解到产生文件句柄泄漏的原因,以及解决方式。今天我们就以一个实例来一步一步演...

  • windbg分析内存泄漏

    介绍 本文主要介绍一种通过windbg分析内存泄漏的方法。 现象 后台检测程序在某天上报了告警,大概就是某程序的提...

  • 对象访问定位

    对象访问定位 句柄 在Java堆划分一块内存作为句柄池,reference中存储的对象的句柄地址,句柄中包含对象实...

  • Linux文件句柄泄漏

    在 Linux 平台上运行的进程都会从系统资源申请一定数量的句柄,而且系统控制了进程能够申请的最大句柄数量。用户程...

  • 2018-09-25

    内存泄漏 定位内存泄漏菱形继承红包随机成员函数 delete thislua jit编译

  • leaked window DecorView@e8b86cb[

    问题描述 异常信息 引起原因 看异常信息说明存在窗口句柄泄漏,导致没有即使销毁PhoneWindow而引发的异常。...

  • Android 内存泄漏(MemoryLeak)

    本片文章我们从以下几个方面来了解内存泄漏: 1、什么是内存泄漏 2、内存泄漏产生的原因有哪些 3、如何定位内存泄漏...

网友评论

      本文标题:windbg定位句柄泄漏

      本文链接:https://www.haomeiwen.com/subject/jnnwzftx.html