本发明专利技术提供了一种连接泄露自动分析装置,包括:内存查询单元,查询打开数据库连接方法的第一内存地址和关闭数据库连接方法的第二内存地址;断点设置单元,为第一内存地址设置第一断点,为第二内存地址设置第二断点;调试单元,调试目标进程,当目标进程触发第一断点和/或第二断点时,生成调试信息;调用栈确定单元,根据调试信息确定已进行打开操作而未进行关闭操作的数据库连接,根据数据库连接确定相应的调用栈;输出显示单元,显示调用栈。本发明专利技术还提出了一种连接泄露自动分析方法。通过本发明专利技术的技术方案,能够确定打开数据库连接而没有关闭的调用栈,而不需要修改系统中的代码,提高分析泄露的速度和通用性。
【技术实现步骤摘要】
本专利技术涉及数据分析
,具体而言,涉及一种连接泄露自动分析装置和一种连接泄露自动分析方法。
技术介绍
当前软件应用越来越复杂,当系统中出现数据库连接泄漏时,很难排查到引起泄漏问题的具体代码,当数据库连接泄漏到一定程度后,数据库连接池无法提供可用连接,整个系统的数据库相关操作都将无法运行,严重影响系统的稳定性。现有技术主要是通过代码中增加日志来分析此类问题,但是这种方法的通用性很差而且分析泄露的速度并不高。因此,需要一种新的连接泄露分析技术,能够对绝大多数系统进行快速分析,确定打开数据库连接而没有关闭的调用栈,而不需要修改系统中的代码,提高分析泄露的速度和通用性。
技术实现思路
本专利技术正是基于上述问题,提出了一种连接泄露分析技术,能够对绝大多数系统进行快速分析,确定打开数据库连接而没有关闭的调用栈,而不需要修改系统中的代码,提高分析泄露的速度和通用性。有鉴于此,本专利技术提出了一种连接泄露自动分析装置,用于自动分析应用程序中的数据库连接泄露,包括:内存查询单元,用于查询打开数据库连接方法的第一内存地址和关闭数据库连接方法的第二内存地址;断点设置单元,用于为所述第一内存地址设置第一断点,并为所述第二内存地址设置第二断点;调试单元,用于根据接收到的调试指令调试目标进程,当所述目标进程触发所述第一断点和/或所述第二断点时,生成调试信息;调用栈确定单元,用于根据所述调试信息确定已进行打开操作而未进行关闭操作的数据库连接,根据所述数据库连接确定相应的调用栈;输出显示单元,用于显示所述调用栈。在该技术方案中,可以通过为打开连接和关闭连接的方法分别设置断点,使调试的进程在进行打开连接或关闭连接的操作时,即可触发断点生成相应的信息,进而确定已进行打开操作而未进行关闭操作的连接所对应的调用栈,用户即可对其进行相应处理,而确定调用栈的过程并未对进程所在的系统进行代码修改,从而可以对绝大多数的系统中的进行调试,不仅提高了分析连接泄露的通用性,还提高了分析连接泄露的速度。在上述技术方案中,优选地,还包括:信息设置单元,用于根据接收到的信息设置指令,设置所述调试信息,其中,所述调试信息包括:打开所述数据库连接的方式和关闭所述数据库连接的方式,当所述目标进程触发所述第一断点和/或所述第二断点时所述数据库连接的对象的信息,以及发出打开和/或关闭所述数据库连接的请求的调用栈。在该技术方案中,用户可以预先设置断点被触发时,生成信息的内容,使调试的进程触发断点时,可以确定当前涉及连接的操作的具体信息,进而确定数据库连接泄露的具体信息。在上述技术方案中,优选地,所述输出显示单元还用于显示所述数据库连接的对象的息。在该技术方案中,在显示已进行打开操作而未进行关闭操作的连接所对应的调用栈的同时,还可以显示寄存器中存放的数据库连接对象的信息,具体的输出方式可以以代码的形式打印,从而更加便于用户查看连接泄露的具体信息。 在上述任一技术方案中,优选地,还包括:日志生成单元,用于根据所述调试信息生成调试信息日志;解析单元,用于解析所述调试信息日志,得到所述调试信息。在该技术方案中,调试信息可以存储于日志中,便于调用和存储。在上述任一技术方案中,优选地,所述调用栈确定单元根据所述调试信息确定已进行打开操作的数据库连接的对象,和未进行关闭操作的数据库连接的对象,根据所述已进行打开操作的数据库连接的对象的标识和所述未进行关闭操作的数据库连接的对象的标识,将所述已进行打开操作的数据库连接和所述未进行关闭操作的数据库连接进行匹配,确定所述已进行打开操作而未进行关闭操作的数据库连接。在该技术方案中,由于数据库连接的对象存在唯一的标识,可以先查询已进行打开操作的数据库连接的对象和未进行关闭操作的数据库连接的对象,然后根据两者的唯一标识确定相匹配的已进行打开操作的数据库连接和未进行关闭操作的数据库连接,这两个连接即针对同一目标对象的数据库连接,从而确定该目标对象的数据库连接已进行打开操作而未进行关闭操作,进而确定连接泄露。本专利技术还提出了一种连接泄露自动分析方法,用于自动分析应用程序中的数据库连接泄露,包括:步骤202,查询打开数据库连接方法的第一内存地址和关闭数据库连接方法的第二内存地址,为所述第一内存地址设置第一断点,并为所述第二内存地址设置第二断点;步骤204,根据接收到的调试指令调试目标进程,当所述目标进程触发所述第一断点和/或所述第二断点时,生成调试信息;步骤206,根据所述调试信息确定已进行打开操作而未进行关闭操作的数据库连接,根据所述数据库连接确定相应的调用栈,并显示所述调用栈。在该技术方案中,可以通过为打开连接和关闭连接的方法分别设置断点,使调试的进程在进行打开连接或关闭连接的操作时,即可触发断点生成相应的信息,进而确定已进行打开操作而未进行关闭操作的连接所对应的调用栈,用户即可对其进行相应处理,而确定调用栈的过程并未对进程所在的系统进行代码修改,从而可以对绝大多数的系统中的进行调试,不仅提高了分析连接泄露的通用性,还提高了分析连接泄露的速度。在上述技术方案中,优选地,所述步骤202还包括:根据接收到的信息设置指令,设置所述调试信息,其中,所述调试信息包括:打开所述数据库连接的方式和关闭所述数据库连接的方式,当所述目标进程触发所述第一断点和/或所述第二断点时所述数据库连接的对象的信息,以及发出打开和/或关闭所述数据库连接的请求的调用栈。在该技术方案中,用户可以预先设置断点被触发时,生成信息的内容,使调试的进程触发断点时,可以确定当前涉及连接的操作的具体信息,进而确定数据库连接泄露的具体信息。在上述技术方案中,优选地,所述步骤206还包括:显示所述数据库连接的对象的信息。在该技术方案中,在显示已进行打开操作而未进行关闭操作的连接所对应的调用栈的同时,还可以显示寄存器中存放的数据库连接对象的信息,具体的输出方式可以以代码的形式打印,从而更加便于用户查看连接泄露的具体信息。在上述任一技术方案中,优选地,所述步骤204还包括:根据所述调试信息生成调试信息日志;所述步骤206包括:解析所述调试信息日志,得到所述调试信息。在该技术方案中,调试信息可以存储于日志中,便于调用和存储。在上述任一技术方案中,优选地,所述步骤206包括:根据所述调试信息确定已进行打开操作的数据库连接的对象,和未进行关闭操作的数据库连接的对象,根据所述已进行打开操作的数据库连接的对象的标识和所述未进行关闭操作的数据库连接的对象的标识,将所述已进行打开操作的数据库连接和所述未进行关闭操作的数据库连接进行匹配,确定所述已进行打开操作而未进行关闭操作的数据库连接。在该技术方案中,由于数据库连接的对象存在唯一的标识,可以先查询已进行打开操作的数据库连接的对象和未进行关闭操作的数据库连接的对象,然后根据两者的唯一标识确定相匹配的已进行打开操作的数据库连接和未进行关闭操作的数据库连接,这两个连接即针对同一目标对象的数据库连接,从而确定该目标对象的数据库连接已进行打开操作而未进行关闭操作,进而确定连接泄露。通过以上技术方案,可以对绝大多数系统进行快速分析,确定打开数据库连接而没有关闭的调用栈,而不需要修改系统中的代码,提高分析泄露的速度和通用性。附图说明图1示出了根据本专利技术的实施例的连接泄露自动本文档来自技高网...
【技术保护点】
一种连接泄露自动分析装置,用于自动分析应用程序中的数据库连接泄露,其特征在于,包括:内存查询单元,用于查询打开数据库连接方法的第一内存地址和关闭数据库连接方法的第二内存地址;断点设置单元,用于为所述第一内存地址设置第一断点,并为所述第二内存地址设置第二断点;调试单元,用于根据接收到的调试指令调试目标进程,当所述目标进程触发所述第一断点和/或所述第二断点时,生成调试信息;调用栈确定单元,用于根据所述调试信息确定已进行打开操作而未进行关闭操作的数据库连接,根据所述数据库连接确定相应的调用栈;输出显示单元,用于显示所述调用栈。
【技术特征摘要】
【专利技术属性】
技术研发人员:尹洪亮,
申请(专利权)人:用友软件股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。