CN110597707A - 一种内存越界故障检测方法及终端设备 - Google Patents

一种内存越界故障检测方法及终端设备 Download PDF

Info

Publication number
CN110597707A
CN110597707A CN201910713262.5A CN201910713262A CN110597707A CN 110597707 A CN110597707 A CN 110597707A CN 201910713262 A CN201910713262 A CN 201910713262A CN 110597707 A CN110597707 A CN 110597707A
Authority
CN
China
Prior art keywords
memory
terminal
fault detection
instrumented
target file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910713262.5A
Other languages
English (en)
Inventor
孔峥嵘
张亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201910713262.5A priority Critical patent/CN110597707A/zh
Publication of CN110597707A publication Critical patent/CN110597707A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种内存越界故障检测方法及终端设备。当需要对终端中运行的进程进行内存越界故障检测,且当该终端是资源受限设备时,从共享服务器或资源丰富设备下载第一进程的内存越界故障检测文件,运行该内存越界故障检测文件,对第一进程进行内存越界故障检测。可以实现对资源受限设备进行面向进程的轻量扫描,及时检测出内存越界故障,提高了内存越界故障检测技术的应用范围。

Description

一种内存越界故障检测方法及终端设备
技术领域
本申请涉及智能终端领域,尤其涉及一种内存越界故障检测方法及终端设备。
背景技术
内存越界故障,一直是基于C/C++等编程语言的工程项目中的痛点问题。内存越界故障,简单地说是指,向系统申请了一块内存,在使用这块内存的时候,超出了合法申请的范围。一旦内存越界故障发生,轻则数据读取错误、业务功能异常,重则死机重启、应用闪退,严重影响用户体验。如果是读数据越界则故障发生在代码出错位置,比较好定位;如果是写数据越界则是埋下大雷,后面再使用这块数据时才会发生故障,此时调用栈基本无法定位根因,问题解决起来很困难。
针对此类故障,业界有大量的探索和研究,早期有valgrind,最近几年则是Google设计的动态代码分析工具——AddressSanitizer。AddressSanitizer遵循MIT开源协议。该技术是基于指令执行的,通过编译插桩、运行时对内存申请释放函数的封装、内存区域的标注监控,达成用户使用过程中发现越界问题即可立即定位的能力。
AddressSanitizer技术很好,但还是有性能影响,增加的指令使设备性能下降一倍,尤其当遇到资源受限设备(又称“瘦设备”)时,由于其内存少,存储空间少,会很难在资源受限设备上运用AddressSanitizer技术。
因此,如何在资源受限设备上也方便地利用内存越界故障检测技术进行内存故障检测,是亟待解决的问题。
发明内容
本申请提供一种内存越界故障检测方法及终端设备,以在资源受限设备上借助互联环境方便地进行内存故障检测。
第一方面,提供了一种内存越界故障检测方法,所述方法包括:当在第一终端中运行第一进程时,确定对所述第一进程进行内存越界故障检测;检测所述第一终端的类型;当所述第一终端的类型为资源受限设备时,从共享服务器或第二终端下载所述第一进程的内存越界故障检测目标文件,其中,所述第二终端的类型为资源丰富设备;以及运行所述内存越界故障检测目标文件,对所述第一进程进行内存越界故障检测。在该方面中,可以实现对资源受限设备进行面向进程的轻量扫描,及时检测出内存越界故障,提高了内存越界故障检测技术的应用范围。
在一个实现中,所述当在第一终端中运行第一进程时,确定对所述第一进程进行内存越界故障检测,包括:当在所述第一终端中运行所述第一进程时,获取配置文件中对所述第一进程是否进行内存越界故障检测的第一信息;以及当所述第一信息指示对所述第一进程进行内存越界故障检测时,确定对所述第一进程进行内存越界故障检测。在该实现中,配置文件中存储了是否对某个进程进行内存越界故障检测的信息或指示,根据该配置文件即可明确地确定是否对该进程进行内存越界故障检测。
在又一个实现中,所述内存越界故障检测文件包括所述第一进程的插桩的可执行文件和插桩的共享库,所述方法还包括:分别编译生成所述第一进程的未插桩的目标文件、以及所述第一进程的插桩的可执行文件和插桩的共享库;以及将所述第一进程的未插桩的目标文件存储到所述第一终端,以及将所述第一进程的插桩的可执行文件和插桩的共享库存储到所述共享服务器或所述第二终端。在该实现中,由于插桩的可执行文件和共享库一般较大,因此,对于编译生成的必要的未插桩的目标文件不得不存储到每个终端中,对于专用的插桩的可执行文件和插桩的共享库则存储到共享服务器或资源丰富设备。
在又一个实现中,所述方法还包括:当所述第一终端的类型为资源丰富设备时,从所述第一终端加载所述第一进程的内存越界故障检测目标文件。在该实现中,对于资源丰富设备,其内存越界故障检测文件一般存储在自身的存储区域中,可以直接从自身的存储区域中加载内存越界故障检测目标文件。
在又一个实现中,所述方法还包括:当不对所述第一进程进行内存越界故障检测时,加载所述第一进程的未插桩的目标文件。在该实现中,对于不需要进行内存越界故障检测的进程,可以正常地加载存储自身存储区域的未插桩的目标文件。
第二方面,提供了一种终端设备,包括:确定单元,用于当在第一终端中运行第一进程时,确定对所述第一进程进行内存越界故障检测;第一检测单元,用于检测所述第一终端的类型;下载单元,用于当所述第一终端的类型为资源受限设备时,从共享服务器或第二终端下载所述第一进程的内存越界故障检测目标文件,其中,所述第二终端的类型为资源丰富设备;以及第二检测单元,用于运行所述内存越界故障检测目标文件,对所述第一进程进行内存越界故障检测。
在一个实现中,所述确定单元用于当在所述第一终端中运行所述第一进程时,获取配置文件中对所述第一进程是否进行内存越界故障检测的第一信息;以及当所述第一信息指示对所述第一进程进行内存越界故障检测时,确定对所述第一进程进行内存越界故障检测。
在又一个实现中,所述内存越界故障检测目标文件包括所述第一进程的插桩的可执行文件和插桩的共享库,所述终端设备还包括:编译单元,用于分别编译生成所述第一进程的未插桩的目标文件、以及所述第一进程的插桩的可执行文件和插桩的共享库;以及存储单元,用于将所述第一进程的未插桩的目标文件存储到所述第一终端,以及将所述第一进程的插桩的可执行文件和插桩的共享库存储到所述共享服务器或所述第二终端。
在又一个实现中,所述终端设备还包括:第一加载单元,用于当所述第一终端的类型为资源丰富设备时,从所述第一终端加载所述第一进程的内存越界故障检测目标文件。
在又一个实现中,所述终端设备还包括:第二加载单元,用于当不对所述第一进程进行内存越界故障检测时,加载所述第一进程的未插桩的目标文件。
第三方面,提供了一种终端设备,所述终端设备包括:输入装置、输出装置、存储器和处理器;其中,所述存储器中存储一组程序代码,且所述处理器用于调用所述存储器中存储的程序代码,执行第一方面或第一方面的任一个实现所述的方法。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行第一方面或第一方面的任一个实现所述的方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行第一方面或第一方面的任一个实现所述的方法。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1为分布式互联互通设备环境示意图;
图2为本申请实施例提供的一种内存越界故障检测方法的流程示意图;
图3为编译生成未插桩的目标文件以及编译生成插桩的可执行文件和共享库的示意图;
图4为未插桩的目标文件、插桩的可执行文件和插桩的共享库分别存储到瘦设备和胖设备的示意图;
图5为本申请实施例提供的一种终端设备的结构示意图;
图6为本申请实施例提供的又一种终端设备的结构示意图。
具体实施方式
下面结合本申请实施例中的附图对本申请实施例进行描述。
首先对本申请实施例中涉及的几个概念进行描述:
内存越界故障
内存越界故障,简单地说是指,向系统申请了一块内存,在使用这块内存的时候,超出了合法申请的范围。一旦内存越界故障发生,轻则数据读取错误、业务功能异常,重则死机重启、应用闪退,严重影响用户体验。如果是读数据越界则故障发生在代码出错位置,比较好定位;如果是写数据越界则是埋下大雷,后面再使用这块数据时才会发生故障,此时调用栈基本无法定位根因,问题解决起来很困难。
资源受限设备和资源丰富设备
资源受限设备,是指内存少、存储空间少的设备,也可以称为瘦设备;
资源丰富设备,是指内存充裕、存储空间充裕的设备,也可以称为胖设备,或者资源充裕设备。
分布式互联互通设备环境
如图1所示,多个设备,例如手机、穿戴式设备、电脑、车载终端等在分布式环境中可互联互通,这多个设备之间可以互相进行数据传输。多个设备之间可以采用任何可用于互联的通信方式,包括数据业务、Wi-Fi、蓝牙等。且穿戴式设备等内存少、存储空间少,一般被认为是资源受限设备;电脑、手机等内存充裕、存储空间充裕,一般被认为是资源丰富设备。该分布式互联互通环境中还可以包括服务器,其它终端设备都可以访问该服务器。
AddressSanitizer技术
AddressSanitizer技术是一种内存越界故障检测技术。AddressSanitizer遵循MIT开源协议。该技术是基于指令执行的,通过编译插桩、运行时对内存申请释放函数的封装、内存区域的标注监控,以达成用户使用过程中发现越界问题即可立即定位的能力。
其中,编译插桩是指在“常规”编译出的执行指令中,为了实现内存地址越界检测而额外添加一些指令。
如下所示的编译的未插桩的代码为:
进一步地,进行编译插桩后的代码为:
运行时对内存申请释放函数封装是指在程序运行时,用做过特殊处理的函数替换常规的对应的函数。例如,本来程序要调用函数fun1,AddressSanitizer拦截了对fun1的调用,取而代之做过特殊处理的fun1’,这样就能做一些额外的处理。
内存区域的标注监控可以认为就是前面“编译插桩及运行时库封装”的目的,前面两个动作增加的特殊指令和处理,就是在正常分配的内存周围加一些标识,注明哪些内存区域是可读写的,哪些是不能读写的,这样后面程序代码中一旦读写了不该它读写的内存,AddressSanitizer就会上报故障日志。
在上述AddressSanitizer技术的三个处理操作中,其中编译插桩操作需要调用插桩的可执行文件和共享库,插桩的可执行文件和共享库要占用一定的存储空间,增加的这些指令会使设备性能下降一倍,尤其比较难以在资源受限设备中运用。
针对内存越界故障技术不能很好地在资源受限设备上运用的问题,本申请实施例提供一种内存越界故障检测方法及终端设备,当需要对终端中运行的进程进行内存越界故障检测,且当该终端是资源受限设备时,从共享服务器或资源丰富设备下载第一进程的内存越界故障检测目标文件,运行该内存越界故障检测目标文件,对第一进程进行内存越界故障检测。可以实现对资源受限设备进行全设备全栈式面向进程的轻量扫描,及时检测出内存越界故障,提高了内存越界故障检测技术的应用范围。
请参阅图2,为本申请实施例提供的一种内存越界故障检测方法的流程示意图,示意性地,该方法可以包括以下步骤:
S101、分别编译生成第一进程的未插桩的目标文件、以及所述第一进程的插桩的可执行文件和插桩的共享库。
本实施例中,终端设备进行两次编译:一次是正常编译,编译生成没有插桩的目标文件;一次进行插桩编译,编译生成插桩的内存越界故障检测目标文件,具体地,插桩的内存越界故障检测目标文件包括插桩的可执行文件和共享库。另外,本实施例中,可以具体地针对每一个进程进行内存越界故障检测,因此,可以编译生成多个进程使用的未插桩的目标文件、以及每个进程的插桩的可执行文件和插桩的共享库。
如图3所示的编译生成未插桩的目标文件以及编译生成插桩的可执行文件和共享库的示意图,每个终端设备可以独立进行编译。第一次编译,未有ASAN插桩,编译的bin文件和.so文件都是普通文件,没有ASAN插桩指令。其中,bin文件是进程启动执行的入口文件,每个进程的bin文件是独立的;.so文件可以是多个进程共用的文件,lib/lib64文件夹下有多个.so文件。未插桩的目标文件归档于A路径。A路径为某个终端设备下的存储路径。该终端设备可以是资源丰富设备,也可以是资源受限设备,即未插桩的目标文件可以存储在终端设备自身的存储区域。
第二次编译,针对C/C++代码编译插桩,编译的bin文件和.so文件有ASAN插桩指令,归档于B路径。B路径一般指共享服务器或资源丰富设备下的存储路径。
S102、将所述第一进程的未插桩的目标文件存储到第一终端,以及将所述第一进程的插桩的可执行文件和插桩的共享库存储到共享服务器或第二终端。
如图4所示的未插桩的目标文件以及插桩的可执行文件和共享库分别存储到瘦设备和胖设备的示意图,编译完成后,将未插桩的目标文件存储或升级至A路径,即该终端的存储区域;将插桩的可执行文件和共享库存储或升级到B路径,即共享服务器或第二终端。该第二终端为资源丰富设备。如图4所示,对于瘦设备来说,其只升级或存储未插桩的目标文件;对于胖设备来说,除了升级或存储未插桩的目标文件,还升级或存储插桩的可执行文件和共享库。
以上步骤S101和S102为可选的步骤,图中以虚线表示。在进行内存越界故障检测之前,上述第一进程的未插桩的目标文件、以及所述第一进程的插桩的可执行文件和插桩的共享库可以是已经编译好的。
S103、当在所述第一终端中运行所述第一进程时,确定是否对所述第一进程进行内存越界故障检测。如果是,则执行步骤S104;否则,执行步骤S108。
有些进程需要进行内存越界故障检测,有些进程则不需要进行内存越界故障检测。因此,在第一终端中运行某个进程时,首先确定是否要对该进程进行内存越界故障检测。
具体地,S103包括:
当在所述第一终端中运行所述第一进程时,获取配置文件中对所述第一进程是否进行内存越界故障检测的第一信息;
当所述第一信息指示对所述第一进程进行内存越界故障检测时,确定对所述第一进程进行内存越界故障检测。
具体实现过程中,在第一终端中存储了配置文件,该配置文件配置了需要进行内存故障检测的进程的信息,该信息可以是进程名等。在第一终端中运行第一进程时,获取配置文件中是否包括第一进程的进程名,如果该配置文件包括第一进程的进程名,则确定需要对第一进程进行内存越界故障检测;如果该配置文件未包括第一进程的进程名,则确定不需要对第一进程进行内存越界故障检测。
S104、检测所述第一终端的类型,判断所述第一终端是否为资源受限设备。如果是,则执行步骤S105;否则,执行步骤S107。
由于对于资源丰富设备,插桩的可执行文件和插桩的共享库就存储在本地,对资源丰富设备的进程进行内存越界故障检测,可以直接加载本地的插桩的可执行文件和插桩的共享库,就可执行内存越界故障检测。而对于资源受限设备,其只存储了未插桩的目标文件,不能直接执行内存越界故障检测。因此,需要检测第一终端的类型,判断第一终端是否为资源受限设备。
S105、当所述第一终端的类型为资源受限设备时,从所述共享服务器或所述第二终端下载所述第一进程的内存越界故障检测目标文件,其中,所述第二终端的类型为资源丰富设备。
当第一终端的类型为资源受限设备时,且由于第一终端与其它终端、共享服务器处于分布式互联互通设备环境,且共享服务器或其它资源丰富设备存储了多个设备的内存越界故障检测目标文件(插桩的可执行文件和共享库),则第一终端可以从共享服务器或其它资源丰富设备下载当前进行的第一进程的内存越界故障检测目标文件到本地的缓存。
S106、运行所述内存越界故障检测目标文件,对所述第一进程进行内存越界故障检测。
第一终端可以从共享服务器或其它资源丰富设备下载当前进行的第一进程的内存越界故障检测目标文件到本地的缓存后,可以运行该内存越界故障检测目标文件,对第一进程进行内存越界故障检测。在对第一进程执行完内存越界故障检测后,即可删除下载的第一进程的内存越界故障检测目标文件,对第一终端的性能影响较小。
S107、当所述第一终端的类型为资源丰富设备时,从所述第一终端加载所述第一进程的内存越界故障检测目标文件。
该步骤为可选的步骤,图中以虚线表示。如果第一终端的类型为资源丰富设备,由于资源丰富设备自身存储了各个进程的内存越界故障检测目标文件,在确定要对某个进程进行内存越界故障检测时,可从本地加载该进程的内存越界故障检测目标文件,执行内存越界故障检测。
S108、当不对所述第一进程进行内存越界故障检测时,加载所述第一进程的未插桩的目标文件。
该步骤为可选的步骤,图中以虚线表示。当不对第一进程进行内存越界故障检测时,无论第一终端是资源受限设备或资源丰富设备,每个终端本地存储了未插桩的目标文件,可以直接加载第一进程的未插桩的目标文件即可。
根据本申请实施例提供的一种内存越界故障检测方法,当需要对终端中运行的进程进行内存越界故障检测,且当该终端是资源受限设备时,从共享服务器或资源丰富设备下载第一进程的内存越界故障检测目标文件,运行该内存越界故障检测目标文件,对第一进程进行内存越界故障检测。可以实现对资源受限设备进行面向进程的轻量扫描,及时检测出内存越界故障,提高了内存越界故障检测技术的应用范围。
基于上述实施例中的内存越界故障检测方法的同一构思,如图5所示,本申请实施例还提供一种终端设备100,该终端设备可应用于上述图2所述的内存越界故障检测方法中。该终端设备100包括:确定单元11、第一检测单元12、下载单元13、第二检测单元14;还可以包括编译单元15、存储单元16、第一加载单元17和第二加载单元18。示例性地:
确定单元11,用于当在第一终端中运行第一进程时,确定对所述第一进程进行内存越界故障检测;
第一检测单元12,用于检测所述第一终端的类型;
下载单元13,用于当所述第一终端的类型为资源受限设备时,从共享服务器或第二终端下载所述第一进程的内存越界故障检测目标文件,其中,所述第二终端的类型为资源丰富设备;
第二检测单元14,用于运行所述内存越界故障检测目标文件,对所述第一进程进行内存越界故障检测。
在一个实现中,所述确定单元11用于当在所述第一终端中运行所述第一进程时,获取配置文件中对所述第一进程是否进行内存越界故障检测的第一信息;以及当所述第一信息指示对所述第一进程进行内存越界故障检测时,确定对所述第一进程进行内存越界故障检测。
在又一个实现中,所述内存越界故障检测目标文件包括所述第一进程的插桩的可执行文件和插桩的共享库;
编译单元15,用于分别编译生成所述第一进程的未插桩的目标文件、以及所述第一进程的插桩的可执行文件和插桩的共享库;
存储单元16,用于将所述第一进程的未插桩的目标文件存储到所述第一终端,以及将所述第一进程的插桩的可执行文件和插桩的共享库存储到所述共享服务器或所述第二终端。
在又一个实现中,第一加载单元17,用于当所述第一终端的类型为资源丰富设备时,从所述第一终端加载所述第一进程的内存越界故障检测目标文件。
在又一个实现中,第二加载单元18,用于当不对所述第一进程进行内存越界故障检测时,加载所述第一进程的未插桩的目标文件。
有关上述各个单元更详细的描述可以参考上述图2所述的内存越界故障检测方法的相关描述得到,这里不加赘述。
根据本申请实施例提供的一种终端设备,当需要对终端中运行的进程进行内存越界故障检测,且当该终端是资源受限设备时,从共享服务器或资源丰富设备下载第一进程的内存越界故障检测目标文件,运行该内存越界故障检测目标文件,对第一进程进行内存越界故障检测。可以实现对资源受限设备进行面向进程的轻量扫描,及时检测出内存越界故障,提高了内存越界故障检测技术的应用范围。
图6为本申请实施例提供的又一种终端设备的结构示意图,该装置200包括:包括处理器21,还可包括输入装置22、输出装置23和存储器24。该输入装置22、输出装置23、存储器24和处理器21之间通过总线相互连接。
存储器24包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmable readonly memory,EPROM)、或便携式只读存储器(compact disc read-only memory,CD-ROM),该存储器用于相关指令及数据。
输入装置22用于输入数据和/或信号,以及输出装置23用于输出数据和/或信号。输出装置和输入装置可以是独立的器件,也可以是一个整体的器件。
处理器21可以包括是一个或多个处理器,例如包括一个或多个中央处理器(central processing unit,CPU),在处理器是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
存储器24用于存储网络设备的程序代码和数据。
处理器21用于调用该存储器中的程序代码和数据,执行如下步骤:
当在第一终端中运行第一进程时,确定对所述第一进程进行内存越界故障检测;检测所述第一终端的类型;当所述第一终端的类型为资源受限设备时,从共享服务器或第二终端下载所述第一进程的内存越界故障检测目标文件,其中,所述第二终端的类型为资源丰富设备;以及运行所述内存越界故障检测目标文件,对所述第一进程进行内存越界故障检测。在该方面中,可以实现对资源受限设备进行面向进程的轻量扫描,及时检测出内存越界故障,提高了内存越界故障检测技术的应用范围。
在一个实现中,所述处理器21执行所述当在第一终端中运行第一进程时,确定对所述第一进程进行内存越界故障检测的步骤,包括:当在所述第一终端中运行所述第一进程时,获取配置文件中对所述第一进程是否进行内存越界故障检测的第一信息;以及当所述第一信息指示对所述第一进程进行内存越界故障检测时,确定对所述第一进程进行内存越界故障检测。在该实现中,配置文件中存储了是否对某个进程进行内存越界故障检测的信息或指示,根据该配置文件即可明确地确定是否对该进程进行内存越界故障检测。
在又一个实现中,所述内存越界故障检测文件包括所述第一进程的插桩的可执行文件和插桩的共享库,所述处理器21还执行如下步骤:分别编译生成所述第一进程的未插桩的目标文件、以及所述第一进程的插桩的可执行文件和插桩的共享库;以及将所述第一进程的未插桩的目标文件存储到所述第一终端,以及将所述第一进程的插桩的可执行文件和插桩的共享库存储到所述共享服务器或所述第二终端。在该实现中,由于插桩的可执行文件和共享库一般较大,因此,对于编译生成的必要的未插桩的目标文件不得不存储到每个终端中,对于专用的插桩的可执行文件和插桩的共享库则存储到共享服务器或资源丰富设备。
在又一个实现中,所述处理器21还执行如下步骤:当所述第一终端的类型为资源丰富设备时,从所述第一终端加载所述第一进程的内存越界故障检测目标文件。在该实现中,对于资源丰富设备,其内存越界故障检测目标文件一般存储在自身的存储区域中,可以直接从自身的存储区域中加载内存越界故障检测目标文件。
在又一个实现中,所述处理器21还执行如下步骤:当不对所述第一进程进行内存越界故障检测时,加载所述第一进程的未插桩的目标文件。在该实现中,对于不需要进行内存越界故障检测的进程,可以正常地加载存储自身存储区域的未插桩的目标文件。
可以理解的是,图6仅仅示出了该终端设备的简化设计。在实际应用中,终端设备还可以分别包含必要的其他元件,包含但不限于任意数量的输入/输出装置、处理器、控制器、存储器等,而所有可以实现本申请实施例的终端设备都在本申请的保护范围之内。
根据本申请实施例提供的一种终端设备,当需要对终端中运行的进程进行内存越界故障检测,且当该终端是资源受限设备时,从共享服务器或资源丰富设备下载第一进程的内存越界故障检测目标文件,运行该内存越界故障检测目标文件,对第一进程进行内存越界故障检测。可以实现对资源受限设备进行全设备全栈式面向进程的轻量扫描,及时检测出内存越界故障,提高了内存越界故障检测技术的应用范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。所显示或讨论的相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者通过该计算机可读存储介质进行传输。该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是只读存储器(read-onlymemory,ROM),或随机存储存储器(random access memory,RAM),或磁性介质,例如,软盘、硬盘、磁带、磁碟、或光介质,例如,数字通用光盘(digital versatile disc,DVD)、或者半导体介质,例如,固态硬盘(solid state disk,SSD)等。

Claims (12)

1.一种内存越界故障检测方法,其特征在于,所述方法包括:
当在第一终端中运行第一进程时,确定对所述第一进程进行内存越界故障检测;
检测所述第一终端的类型;
当所述第一终端的类型为资源受限设备时,从共享服务器或第二终端下载所述第一进程的内存越界故障检测目标文件,其中,所述第二终端的类型为资源丰富设备;
运行所述内存越界故障检测目标文件,对所述第一进程进行内存越界故障检测。
2.根据权利要求1所述的方法,其特征在于,所述当在第一终端中运行第一进程时,确定对所述第一进程进行内存越界故障检测,包括:
当在所述第一终端中运行所述第一进程时,获取配置文件中对所述第一进程是否进行内存越界故障检测的第一信息;
当所述第一信息指示对所述第一进程进行内存越界故障检测时,确定对所述第一进程进行内存越界故障检测。
3.根据权利要求1或2所述的方法,其特征在于,所述内存越界故障检测目标文件包括所述第一进程的插桩的可执行文件和插桩的共享库,所述方法还包括:
分别编译生成所述第一进程的未插桩的目标文件、以及所述第一进程的插桩的可执行文件和插桩的共享库;
将所述第一进程的未插桩的目标文件存储到所述第一终端,以及将所述第一进程的插桩的可执行文件和插桩的共享库存储到所述共享服务器或所述第二终端。
4.根据权利要求1~3中任一项所述的方法,其特征在于,所述方法还包括:
当所述第一终端的类型为资源丰富设备时,从所述第一终端加载所述第一进程的内存越界故障检测目标文件。
5.根据权利要求1~4中任一项所述的方法,其特征在于,所述方法还包括:
当不对所述第一进程进行内存越界故障检测时,加载所述第一进程的未插桩的目标文件。
6.一种终端设备,其特征在于,包括:
确定单元,用于当在第一终端中运行第一进程时,确定对所述第一进程进行内存越界故障检测;
第一检测单元,用于检测所述第一终端的类型;
下载单元,用于当所述第一终端的类型为资源受限设备时,从共享服务器或第二终端下载所述第一进程的内存越界故障检测目标文件,其中,所述第二终端的类型为资源丰富设备;
第二检测单元,用于运行所述内存越界故障检测目标文件,对所述第一进程进行内存越界故障检测。
7.根据权利要求6所述的终端设备,其特征在于,所述确定单元用于当在所述第一终端中运行所述第一进程时,获取配置文件中对所述第一进程是否进行内存越界故障检测的第一信息;以及当所述第一信息指示对所述第一进程进行内存越界故障检测时,确定对所述第一进程进行内存越界故障检测。
8.根据权利要求6或7所述的终端设备,其特征在于,所述内存越界故障检测目标文件包括所述第一进程的插桩的可执行文件和插桩的共享库,所述终端设备还包括:
编译单元,用于分别编译生成所述第一进程的未插桩的目标文件、以及所述第一进程的插桩的可执行文件和插桩的共享库;
存储单元,用于将所述第一进程的未插桩的目标文件存储到所述第一终端,以及将所述第一进程的插桩的可执行文件和插桩的共享库存储到所述共享服务器或所述第二终端。
9.根据权利要求6~8中任一项所述的终端设备,其特征在于,所述终端设备还包括:
第一加载单元,用于当所述第一终端的类型为资源丰富设备时,从所述第一终端加载所述第一进程的内存越界故障检测目标文件。
10.根据权利要求6~9中任一项所述的终端设备,其特征在于,所述终端设备还包括:
第二加载单元,用于当不对所述第一进程进行内存越界故障检测时,加载所述第一进程的未插桩的目标文件。
11.一种终端设备,其特征在于,所述终端设备包括:输入装置、输出装置、存储器和处理器;其中,所述存储器中存储一组程序代码,且所述处理器用于调用所述存储器中存储的程序代码,执行如权利要求1~5中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如权利要求1~5中任一项所述的方法。
CN201910713262.5A 2019-08-02 2019-08-02 一种内存越界故障检测方法及终端设备 Pending CN110597707A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910713262.5A CN110597707A (zh) 2019-08-02 2019-08-02 一种内存越界故障检测方法及终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910713262.5A CN110597707A (zh) 2019-08-02 2019-08-02 一种内存越界故障检测方法及终端设备

Publications (1)

Publication Number Publication Date
CN110597707A true CN110597707A (zh) 2019-12-20

Family

ID=68853446

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910713262.5A Pending CN110597707A (zh) 2019-08-02 2019-08-02 一种内存越界故障检测方法及终端设备

Country Status (1)

Country Link
CN (1) CN110597707A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860574A (zh) * 2021-03-15 2021-05-28 北京车和家信息技术有限公司 Linux内核的内存泄漏检测方法和装置、介质、设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101561775A (zh) * 2009-05-12 2009-10-21 华为技术有限公司 内存监控方法和装置
CN108536579A (zh) * 2017-03-01 2018-09-14 维布络有限公司 资源受限设备测试系统和方法
JP2018173703A (ja) * 2017-03-31 2018-11-08 日本電気株式会社 障害解析装置、障害解析方法および障害解析プログラム
CN109165124A (zh) * 2018-08-07 2019-01-08 南京翼辉信息技术有限公司 一种基于故障树的嵌入式系统硬件故障检测及处理方法
CN110059009A (zh) * 2018-04-13 2019-07-26 百度(美国)有限责任公司 用于测试代码文件的方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101561775A (zh) * 2009-05-12 2009-10-21 华为技术有限公司 内存监控方法和装置
CN108536579A (zh) * 2017-03-01 2018-09-14 维布络有限公司 资源受限设备测试系统和方法
JP2018173703A (ja) * 2017-03-31 2018-11-08 日本電気株式会社 障害解析装置、障害解析方法および障害解析プログラム
CN110059009A (zh) * 2018-04-13 2019-07-26 百度(美国)有限责任公司 用于测试代码文件的方法和装置
CN109165124A (zh) * 2018-08-07 2019-01-08 南京翼辉信息技术有限公司 一种基于故障树的嵌入式系统硬件故障检测及处理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860574A (zh) * 2021-03-15 2021-05-28 北京车和家信息技术有限公司 Linux内核的内存泄漏检测方法和装置、介质、设备
CN112860574B (zh) * 2021-03-15 2024-02-20 北京车和家信息技术有限公司 Linux内核的内存泄漏检测方法和装置、介质、设备

Similar Documents

Publication Publication Date Title
CN109062617B (zh) 一种支持多类型设备的平台的应用方法、移动终端
CN107632828B (zh) 多dts文件支持方法、编译装置及嵌入式设备
CN111324396A (zh) 一种区块链智能合约执行方法、装置及设备
CN113568839A (zh) 软件测试和统计测试覆盖率的方法、装置、设备及介质
CN111158741A (zh) 监控业务模块对第三方类库依赖关系变化的方法及装置
CN113076253A (zh) 一种测试方法和测试装置
CN113050984A (zh) 资源调取方法、装置、电子设备及存储介质
CN114895935A (zh) 刷写车辆ecu的方法、装置、电子设备及存储介质
CN114356779A (zh) 编程语言调试方法、装置及终端设备
CN112395098A (zh) 应用程序接口调用方法、装置、存储介质和电子设备
CN110597707A (zh) 一种内存越界故障检测方法及终端设备
CN113138768A (zh) 应用程序包生成方法、装置、电子设备以及可读存储介质
JP2009237610A (ja) コード変換装置及びコード変換方法
CN113127329B (zh) 脚本调试方法、装置及计算机存储介质
CN112965731A (zh) 基于Tinker的Flutter热更新方法、装置、设备及存储介质
CN111666102A (zh) 文件格式转换方法、芯片验证方法、相关装置及网络芯片
CN111488286A (zh) 一种Android模块独立开发的方法及装置
CN115456628A (zh) 基于区块链的智能合约查看方法、装置、存储介质及设备
CN114296986B (zh) 内存泄漏定位方法、装置、介质和电子设备
KR20130020135A (ko) 통합 개발 환경에서의 코드 동시 개발자 리스트 제공 시스템 및 방법
CN113342660B (zh) 文件测试方法、装置、系统、电子设备及可读存储介质
CN111414270B (zh) 一种异常处理方法及装置
CN113467815A (zh) 热更新的应用修复方法、装置、终端设备及存储介质
CN114296754A (zh) 芯片平台升级方法及相关装置
CN109947407B (zh) 一种数据获取方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20191220