CN102722438A - 一种内核调试的方法和设备 - Google Patents
一种内核调试的方法和设备 Download PDFInfo
- Publication number
- CN102722438A CN102722438A CN2012101784411A CN201210178441A CN102722438A CN 102722438 A CN102722438 A CN 102722438A CN 2012101784411 A CN2012101784411 A CN 2012101784411A CN 201210178441 A CN201210178441 A CN 201210178441A CN 102722438 A CN102722438 A CN 102722438A
- Authority
- CN
- China
- Prior art keywords
- information
- kernel
- debugged
- function
- kernel information
- 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.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种内核调试的方法和设备,其主要内容包括:通过确定待调试的内核信息的映射文件信息,其中,映射文件信息中包含了待调试的内核信息中每一函数以及每一函数的调用地址,对确定的映射文件信息进行调试,避免了现有技术中对Linux内核进行调试跟踪存在调试方式复杂和调试效率低的问题,提高了Linux内核调试的效率和降低了Linux内核调试的难度。
Description
技术领域
本发明涉及网络安全领域,尤其涉及一种内核调试的方法和设备。
背景技术
调试是软件开发和软件分析中一个必不可少的环节,相对于应用系统的开发和分析也同样如此。但是,Linux系统的开发者为了保证Linux内核代码的正确性,没有在Linux内核源代码中编入调试器,使得对Linux系统的内核进行调试一直是该领域一个相对棘手的问题。
为了解决Linux系统中内核代码的调试问题,出现了三种调试方法:
第一种调试方法:printk()打印信息方法。这种方法主要是通过在linux系统的内核代码中特定位置加入printk()函数,并通过printk()函数调用将相关的内核信息打印在屏幕上或者通过日志输出,通常这种方式结合Kprobes使用。
第二种调试方式:使用KGDB搭建的linux系统的内核调试环境。这种方法像调试普通的应用程序一样,在linux系统内核中执行设置断点、检查变量值、单步跟踪程序运行等操作。在使用KGDB调试linux系统内核时,需要两台机器,一台作为开发机,另一台作为目标机,两台机器之间通过串口或者以太网相连,将目标linux系统内核安装在虚拟机中,进行调试。
第三种调试方式:使用SkyEye搭建的linux系统的内核调试环境。这样方式下,SkyEye是一个开源软件项目,目标是在通用的Linux系统和Window系统平台上模拟常见的嵌入式计算机系统,实现一个指令级的硬件模拟平台,可模拟多种嵌入式开发板,支持多种CUP指令集,利用GUN的GDB项目,把GDB和ARM结合起来,进行linux系统的内核调试。
上述三种linux系统内核调试方法,各存在其缺陷:
第一种方式:通过printk()打印信息来调试Linux系统的内核。在需要对Linux系统内核源码进行改写时,在能够改写源码的编译环境下比较实用,但是对于已经编译完成且不能修改源码的Linux内核,则不能使用该方法通常这种方法被看作是一种代码错误跟踪技术,不能为源码级的Linux系统的内核进行调试。
第二种方式:通过KGDB内核调试方法来调试Linux系统的内核。需要在内核编译时编译一些配置,由于低版本Linux系统的内核中不具备这些配置信息,将不支持该调试方法;但是该方法在被使用时由于Linux系统内核配置信息较复杂,不能对内核进行全程调试;也不能应用于系统开始的初始化引导过程的调试。
第三种方式:通过SkyEye来调试Linux系统的内核。目前SkyEye主要支持基于ARM内核的系统,对于非ARM架构下编译的系统内核不能进行调试,存在使用的局限性。
综上所述,采用上述调试方法对Linux内核进行调试跟踪存在调试方式复杂和调试效率低的问题。
发明内容
本发明实施例提供了一种内核调试的方法和设备,用于解决现有技术中对Linux内核进行调试跟踪存在调试方式复杂和调试效率低的问题。
一种内核调试的方法,所述方法包括:
判断待调试的内核信息是否存在映射文件信息;
若存在,则确定该待调试的内核信息对应的映射文件信息,并对该映射文件信息中的指令信息进行调试;
否则,确定该待调试的内核信息的参考内核信息,并将参考内核信息中每一函数的调用地址作为该函数对应在待调试的内核信息中函数的调用地址,得到待调试的内核信息中各函数的调用地址;
将待调试的内核信息中各函数以及函数的调用地址作为待调试的内核信息的映射文件信息,并对该映射文件信息中的指令信息进行调试。
一种内核调试设备,所述设备包括:
判断模块,用于判断待调试的内核信息是否存在映射文件信息;
确定映射文件信息模块,用于在判断结果为存在映射文件信息时,确定该待调试的内核信息对应的映射文件信息;
确定调用地址模块,用于在判断结果为不存在映射文件信息时,确定该待调试的内核信息的参考内核信息,并将参考内核信息中每一函数的调用地址作为该函数对应在待调试的内核信息中函数的调用地址,得到待调试的内核信息中各函数的调用地址;
生成映射文件信息模块,用于将待调试的内核信息中各函数以及函数的调用地址作为待调试的内核信息的映射文件信息;
内核调试模块,用于对映射文件信息中的指令信息进行调试。
本发明有益效果如下:
本发明实施例在确定没有映射文件信息时,根据确定的参考内核的映射文件信息,确定待调试的内核信息中各函数以及函数的调用地址,生成待调试的内核信息的映射文件信息,并对该映射文件信息中的指令信息进行调试;在确定有映射文件信息时,直接对映射文件信息中的指令信息进行调试,避免了现有技术中对Linux内核进行调试跟踪存在调试方式复杂和调试效率低的问题,提高了Linux内核调试的效率和降低了Linux内核调试的难度。
附图说明
图1为本发明实施例一的一种内核调试的方法的流程示意图;
图2为本发明实施例二的一种内核调试的方法的流程示意图;
图3为获取待调试的内核信息的系统版本信息的流程示意图;
图4为生成一个函数调用树的结构示意图;
图5为本实施例三的一种内核调试设备的结构示意图;
图6为QEMU调试系统的结构示意图。
具体实施方式
为了实现本发明的目的,本发明实施例提供了一种内核调试的方法和设备,通过判断待调试的内核信息是否存在映射文件信息;针对存在映射文件信息的,确定该待调试的内核信息对应的映射文件信息,并对该映射文件信息中的指令信息进行调试;针对不存在映射文件信息的,确定该待调试的内核信息的参考内核信息,并将参考内核信息中每一函数的调用地址作为该函数对应在待调试的内核信息中函数的调用地址,得到待调试的内核信息中各函数的调用地址,将待调试的内核信息中各函数以及函数的调用地址作为待调试的内核信息映射文件信息;对映射文件信息中的指令信息进行调试。
与现有技术相比,通过确定待调试的内核信息的映射文件信息,其中,映射文件信息中包含了待调试的内核信息中每一函数以及每一函数的调用地址,对确定的映射文件信息进行调试,避免了现有技术中对Linux内核进行调试跟踪存在调试方式复杂和调试效率低的问题,提高了Linux内核调试的效率和降低了Linux内核调试的难度。
下面结合说明书附图对本发明各实施例中的内容进行详细描述。
实施例一:
如图1所示,为本发明实施例一的一种内核调试的方法的流程示意图。所述方法包括:
步骤101:判断待调试的内核信息是否存在映射文件信息,若是,则执行步骤104;若否,则执行步骤102。
在本步骤101中,由于在对Linux内核进行调试时,待调试的内核信息分为两种:一种是待调试的内核信息中每一函数以及每一函数的调用地址是知道的,即有系统函数调用地址;另一种是待调试的内核信息中每一函数以及每一函数的调用地址是不知道的,即无系统函数调用地址。
其中,对于有系统函数调用地址的待调试的内核信息,在Linux内核编译完成后,会生成一个System.map的内核符号映射文件,该文件记录了待调试的内核信息的全局函数或变量在加载进内存后的调用地址。
通过该System.map记录的地址,可以在对待调试的内核信息在启动运行阶段对相应的函数进行符号断点,比较有利于后续的调试工作。
对于无系统函数调用地址的待调试的内核信息,由于在此种情况下,内核分析者只有一个单独的包含了待调试的内核信息的磁盘镜像文件或者内核压缩镜像,没有System.map或者vmlinuz等辅助调试分析资料,不能获得对应的内核符号信息,为内核分析人员在对待调试的内核进行调试时,需要花费大量的时间来确定待调试的内核信息中相应函数的符号加载地址。
所述映射文件信息是指包含了内核信息的每一函数以及每一函数的调用地址,可以是System.map,也可以是内核符号映射文件,这里不做具体限定。
需要说明的是,本发明方案中涉及的待调试的内核信息可以是Linux系统的内核代码组成的内核信息,也可以是类Linux系统的内核代码组成的内核信息,这里不做具体限定。
步骤102:确定该待调试的内核信息的参考内核信息,并将参考内核信息中每一函数的调用地址作为该函数对应在待调试的内核信息中函数的调用地址,得到待调试的内核信息中各函数的调用地址。
在步骤102中,由于待调试的内核信息没有映射文件信息,因此,需要为该待调试的内核信息生成一个映射文件信息。
没有映射文件信息的待调试的内核信息就像个黑盒子,无法知道该待调试的内核信息中每一函数加载在内存中的可调用地址,因此,通过以下方式确定待调试的内核信息的各函数的调用地址:
第一步:确定待调试的内核信息的参考内核信息。
第二步:根据参考内核信息的映射文件信息,确定参考内核信息中每一函数以及每一函数的调用地址。
第三步:将确定的参考内核信息中每一函数的调用地址作为该函数对应在待调试的内核信息中函数的调用地址,得到待调试的内核信息中各函数的调用地址。
步骤103:将待调试的内核信息中各函数以及函数的调用地址作为待调试的内核信息映射的文件信息。
在步骤103中,根据步骤102确定的待调试的内核信息中每一函数的调用地址,将待调试的内核信息中各函数以及函数的调用地址作为待调试的内核的映射文件信息。
步骤104:对映射文件信息中的指令信息进行调试。
在步骤104中,在对映射文件信息中的指令信息进行调试时,需要翻译映射文件信息中的每一条指令信息,因此,可采用读取一条指令信息,对该指令信息进行翻译,并对翻译后的指令信息进行调试;当该指令信息调试完成后,再读取下一条指令信息,执行翻译和调试的操作,直至重复调试完映射文件信息中的所有指令信息。
这样不仅节省了调试系统的缓存资源,还提高了调试的准确度,实现对Linux内核的全程跟踪调试。
通过实施例一的方案,在确定没有映射文件信息时,根据确定的参考内核的映射文件信息,确定待调试的内核信息中各函数以及函数的调用地址,生成待调试的内核信息的映射文件信息,并对该映射文件信息中的指令信息进行调试;在确定有映射文件信息时,直接对映射文件信息中的指令信息进行调试,避免了现有技术中对Linux内核进行调试跟踪存在调试方式复杂和调试效率低的问题,提高了Linux内核调试的效率和降低了Linux内核调试的难度。
实施例二:
如图2所示,为本实施例二的一种内核调试的方法的流程示意图。本实施例二是对实施例一中步骤102的详细描述。所述方法包括:
步骤201:在调试环境下运行待调试的内核信息,确定待调试的内核信息的版本号和函数编译器。
在步骤201中,由于不同版本的Linux内核编译后的内核文件会存在差异,为了得到准确度较高的待调试的内核信息的映射文件信息,需要首先定位待调试的内核信息的版本号和函数编译器。
但是,通常待调试的内核信息是经过内核压缩得到的内核压缩镜像文件信息,在对内核信息进行调试时,需要先获取该待调试的内核信息的版本号和函数编译器,具体执行以下操作,如图3所示,为获取待调试的内核信息的系统版本信息的流程示意图:
第一步:需要先将该待调试的内核信息运行。
第二步:在待调试的内核信息运行的过程中,搜索与版本号相关的关键字信息,以及与函数编译器相关的关键字信息。
第三步:根据搜索得到的关键字信息分别确定待调试的内核信息的版本号和函数编译器。
需要说明的是,搜索的关键字信息可以是Linux和gcc。
步骤202:将与确定的版本号最接近的版本号对应的内核信息作为待调试的内核信息的参考内核信息。
在步骤202中,由于接近的Linux版本的内核编码具有近似性,因此,可以根据步骤201确定的待调试的内核信息的版本号和函数编译器,将与确定的版本号最接近的版本号对应的内核信息作为待调试的内核信息的参考内核信息。
步骤203:针对参考内核信息中的各函数执行以下操作:
将参考内核信息中每一函数的调用地址作为该函数对应在待调试的内核信息中函数的调用地址,得到待调试的内核信息中各函数的调用地址。
具体地,得到待调试的内核信息中各函数的调用地址,通过以下方式实现:
步骤2031:利用确定的函数编译器对参考内核信息进行分析,得到参考内核信息中的函数调用树,其中,任一函数调用树的一个节点表示一个函数,函数中的一段代码作为该函数的特征码。
在步骤2031中,函数编译器采用递归向下的分析方法,根据Linux内核的控制流对参考内核信息中的函数进行解析,并记录每一条内核信息在运行时的内核指令。在解析的过程中,以参考内核信息中各函数为单元,根据各函数之间的调用关系,生成一个函数调用树,如图4所示,为生成一个函数调用树的结构示意图,其中,函数调用树的每个节点都表示一个函数,在这个节点上存储该函数的调用参数、返回参数等信息,同时截取该函数的一段特征代码作为该函数的特征码。
需要说明的是,所述调用关系可以是子调用树、父调用点、兄弟调用点等。
步骤2032:利用确定的函数编译器对待调试的内核信息进行分析,得到待调试的内核信息中的函数调用树,其中,任一函数调用树的一个节点表示一个函数,函数中的一段代码作为该函数的特征码。
在步骤2032中,对待调试的内核信息进行分析的方式与步骤2031的方法相同,利用步骤2031的方法确定了待调试的内核信息中各函数之间的调用关系。
步骤2033:比较由参考内核信息得到的函数调用树和由待调试的内核信息得到的函数调用树,分析两个函数调用树中各个节点对应的函数,确定参考内核信息中函数和待调试的内核信息中函数之间的对应关系。
具体地,通过节点上存储的函数信息确定参考内核信息与待调试的内核信息中相似节点之间的对应关系。
较优地,所述节点上存储的函数信息包括:执行该函数的指令特征码、该函数的子调用树、该函数的父调用点、该函数的兄弟调用点、调用参数和返回参数等信息。
较优地,还可以直接通过函数特征码来确定参考内核信息与待调试的内核信息中函数之间的对应关系,即参考内核信息和待调试的内核信息中有相同特征码的函数为具有对应关系的函数。
步骤2034:根据参考内核信息中各函数和调用地址之间的对应关系,确定参考内核信息中各函数的调用地址。
在步骤2034中,在确定参考内核信息的函数调用树后,根据参考内核信息的映射文件信息,查找参考内核信息中各函数和函数的调用地址之间的对应关系,确定参考内核信息中各函数的调用地址。
步骤2035:将参考内核中每一函数的调用地址作为该函数对应在待调试的内核信息中函数的调用地址,其中,参考内核信息和待调试的内核信息中有相同特征码的函数为具有对应关系的函数。
在步骤2035中,根据步骤2033中确定的参考内核信息中各函数与待调试的内核信息中各函数之间的对应关系,将参考内核中每一个函数的调用地址作为该函数对应在待调试的内核信息中函数的调用地址。
通过实施例二的方式,函数编译器在对待调试的内核信息进行解析时,采用了动态递归向下的分析方法,克服了静态分析方法存在不能解决动态地址跳转的问题,利用动态递归向下的分析方法可以准确地确定待调试的内核中各函数之间的调用关系。
实施例三:
如图5所示,为本实施例三的一种内核调试设备的结构示意图,所述内核调试设备包括:判断模块11、确定映射文件信息模块12、确定调用地址模块13、生成映射文件信息模块14和内核调试模块15。其中,
判断模块11,用于判断待调试的内核信息是否存在映射文件信息;
确定映射文件信息模块12,用于在判断结果为存在映射文件信息时,确定该待调试的内核信息对应的映射文件信息;
确定调用地址模块13,用于在判断结果为不存在映射文件信息时,确定该待调试的内核信息的参考内核信息,并将参考内核信息中每一函数的调用地址作为该函数对应在待调试的内核信息中函数的调用地址,得到待调试的内核信息中各函数的调用地址;
生成映射文件信息模块14,用于将待调试的内核信息中各函数以及函数的调用地址作为待调试的内核信息的映射文件信息;
内核调试模块15,用于对映射文件信息中的指令信息进行调试。
具体地,所述确定调用地址模块13,具体包括:确定单元21、查找参考内核信息单元22、生成函数调用树单元23和确定调用地址单元24,其中,
确定单元21,用于在调试环境下运行待调试的内核信息,确定待调试的内核信息的版本号和函数编译器;
查找参考内核信息单元22,用于将与确定的版本号最接近的版本号对应的内核信息作为待调试的内核信息的参考内核信息;
生成函数调用树单元23,用于利用确定的函数编译器分别对参考内核信息和待调试的内核信息进行分析,得到参考内核信息中的函数调用树和待调试的内核信息中的函数调用树,其中,任一函数调用树的一个节点表示一个函数,函数中的一段代码作为该函数的特征码;
确定调用地址单元24,用于根据参考内核信息中各函数和调用地址之间的对应关系,确定参考内核信息中各函数的调用地址,并将参考内核中每一函数的调用地址作为该函数对应在待调试的内核信息中函数的调用地址,其中,参考内核信息和待调试的内核信息中有相同特征码的函数为具有对应关系的函数。
所述内核调试模块15,具体用于依次对映射文件信息中的每一条指令信息,执行以下操作:
对该指令信息进行翻译,并对翻译后的指令信息进行调试。
需要说明的是,该内核调试设备可以是集成在QEMU调试系统中。
如图6所示,为QEMU调试系统的结构示意图。该QEMU调试系统包括:被调试分析内核单元31、执行控制单元32、调试子系统单元33、控制台34和调试接口。其中,内核调试设备可以集成在被调试分析内核单元中。
执行控制单元根据控制台发送的控制指令对被调试分析内核单元中的待调试的内核信息进行调试。
控制台输入不同的控制指令,执行控制单元根据接收到的控制指令进行相应的调试操作。
其中,控制台的控制指令可以为以下几种:
A.memsearch addr content:
表示在虚拟内存中搜索从地址addr开始的content内容;
B.pmemsearch addr content:
表示在物理内存中搜索content内容;
C.no-anti-debugging:
表示屏蔽针对虚拟机的反调试措施;
D.memmodify addr content:
表示将从虚拟地址addr开始的内容修改为content;
E.memmodify addr content:
表示将从物理地址addr开始的内容修改为content;
F.bp condition:
表示当条件condition满足时,在当前位置下断点;
G.condition为条件判断,使用示例:
eax==0x0804300||eip==0x08048000:
表示当寄存器eax等于0x0804300或eip等于0x08048000时下断点;
[esp-1][4]==0x68000000:
表示当esp-1处的内存地址的开始4个字节的值等于0x68000000时下断点;
H.bp addr condition:
表示当执行到地址addr是,若条件condition满足时,则下断点condition同上
I.c:
表示继续执行。
需要说明的是,控制台的控制指令不限于以上列举的控制指令。
调试子系统单元通过调试接口与远程调试器进行信息交互。
需要说明的是,调试接口结合QEMU本身处理器模拟功能,进行硬件级调试方式,进行从BIOS加电到内核加载运行的全程调试跟踪。
调试子系统支持GOB远程调试协议,可进行远程调试。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (6)
1.一种内核调试的方法,其特征在于,所述方法包括:
判断待调试的内核信息是否存在映射文件信息;
若存在,则确定该待调试的内核信息对应的映射文件信息,并对该映射文件信息中的指令信息进行调试;
否则,确定该待调试的内核信息的参考内核信息,并将参考内核信息中每一函数的调用地址作为该函数对应在待调试的内核信息中函数的调用地址,得到待调试的内核信息中各函数的调用地址;
将待调试的内核信息中各函数以及函数的调用地址作为待调试的内核信息的映射文件信息,并对该映射文件信息中的指令信息进行调试。
2.如权利要求1所述的方法,其特征在于,确定该待调试的内核信息的参考内核信息,并将参考内核信息中每一函数的调用地址作为该函数对应在待调试的内核信息中函数的调用地址,具体包括:
在调试环境下运行待调试的内核信息,确定待调试的内核信息的版本号和函数编译器;
将与确定的版本号最接近的版本号对应的内核信息作为待调试的内核信息的参考内核信息;
利用确定的函数编译器分别对参考内核信息和待调试的内核信息进行分析,得到参考内核信息中的函数调用树和待调试的内核信息中的函数调用树,其中,任一函数调用树的一个节点表示一个函数,函数中的一段代码作为该函数的特征码;
根据参考内核信息中各函数和调用地址之间的对应关系,确定参考内核信息中各函数的调用地址,并将参考内核中每一函数的调用地址作为该函数对应在待调试的内核信息中函数的调用地址,其中,参考内核信息和待调试的内核信息中有相同特征码的函数为具有对应关系的函数。
3.如权利要求1或2所述的方法,其特征在于,对该映射文件信息中的指令信息进行调试,具体包括:
依次对映射文件信息中的每一条指令信息,执行以下操作:
对该指令信息进行翻译,并对翻译后的指令信息进行调试。
4.一种内核调试设备,其特征在于,所述设备包括:
判断模块,用于判断待调试的内核信息是否存在映射文件信息;
确定映射文件信息模块,用于在判断结果为存在映射文件信息时,确定该待调试的内核信息对应的映射文件信息;
确定调用地址模块,用于在判断结果为不存在映射文件信息时,确定该待调试的内核信息的参考内核信息,并将参考内核信息中每一函数的调用地址作为该函数对应在待调试的内核信息中函数的调用地址,得到待调试的内核信息中各函数的调用地址;
生成映射文件信息模块,用于将待调试的内核信息中各函数以及函数的调用地址作为待调试的内核信息的映射文件信息;
内核调试模块,用于对映射文件信息中的指令信息进行调试。
5.如权利要求4所述的内核调试设备,其特征在于,所述确定调用地址模块,具体包括:
确定单元,用于在调试环境下运行待调试的内核信息,确定待调试的内核信息的版本号和函数编译器;
查找参考内核信息单元,用于将与确定的版本号最接近的版本号对应的内核信息作为待调试的内核信息的参考内核信息;
生成函数调用树单元,用于利用确定的函数编译器分别对参考内核信息和待调试的内核信息进行分析,得到参考内核信息中的函数调用树和待调试的内核信息中的函数调用树,其中,任一函数调用树的一个节点表示一个函数,函数中的一段代码作为该函数的特征码;
确定调用地址单元,用于根据参考内核信息中各函数和调用地址之间的对应关系,确定参考内核信息中各函数的调用地址,并将参考内核中每一函数的调用地址作为该函数对应在待调试的内核信息中函数的调用地址,其中,参考内核信息和待调试的内核信息中有相同特征码的函数为具有对应关系的函数。
6.如权利要求4或5所述的内核调试设备,其特征在于,
所述内核调试模块,具体用于依次对映射文件信息中的每一条指令信息,执行以下操作:
对该指令信息进行翻译,并对翻译后的指令信息进行调试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210178441.1A CN102722438B (zh) | 2012-06-01 | 2012-06-01 | 一种内核调试的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210178441.1A CN102722438B (zh) | 2012-06-01 | 2012-06-01 | 一种内核调试的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102722438A true CN102722438A (zh) | 2012-10-10 |
CN102722438B CN102722438B (zh) | 2014-11-12 |
Family
ID=46948212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210178441.1A Active CN102722438B (zh) | 2012-06-01 | 2012-06-01 | 一种内核调试的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102722438B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103516561A (zh) * | 2013-09-13 | 2014-01-15 | 汉柏科技有限公司 | 一种网络系统的调试方法 |
CN103853603A (zh) * | 2012-12-07 | 2014-06-11 | 腾讯科技(深圳)有限公司 | 一种函数调用关系的获取方法和装置 |
CN104077220A (zh) * | 2014-06-10 | 2014-10-01 | 中标软件有限公司 | Mips架构操作系统内核的调试方法和装置 |
CN104780249A (zh) * | 2014-01-14 | 2015-07-15 | 纬创资通股份有限公司 | 移动电话及内核调试讯息的输出方法 |
CN104915209A (zh) * | 2015-06-15 | 2015-09-16 | 上海斐讯数据通信技术有限公司 | 一种linux内核跟踪调试与修复问题的方法 |
CN116089316A (zh) * | 2023-04-07 | 2023-05-09 | 武汉凌久微电子有限公司 | 一种基于动态断点的内核驱动数据调试方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060174226A1 (en) * | 2005-02-03 | 2006-08-03 | Sytex, Inc. | Methods, Test Systems And Computer-Readable Medium For Dynamically Modifying Flow Of Executable Code |
CN101281488A (zh) * | 2007-04-06 | 2008-10-08 | 上海宇梦通信科技有限公司 | Linux操作系统的内核调试方法 |
-
2012
- 2012-06-01 CN CN201210178441.1A patent/CN102722438B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060174226A1 (en) * | 2005-02-03 | 2006-08-03 | Sytex, Inc. | Methods, Test Systems And Computer-Readable Medium For Dynamically Modifying Flow Of Executable Code |
CN101281488A (zh) * | 2007-04-06 | 2008-10-08 | 上海宇梦通信科技有限公司 | Linux操作系统的内核调试方法 |
Non-Patent Citations (1)
Title |
---|
张磊,王学慧: "《Linux内核调试技术》", 《计算机工程》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853603A (zh) * | 2012-12-07 | 2014-06-11 | 腾讯科技(深圳)有限公司 | 一种函数调用关系的获取方法和装置 |
CN103853603B (zh) * | 2012-12-07 | 2018-03-13 | 腾讯科技(深圳)有限公司 | 一种函数调用关系的获取方法和装置 |
CN103516561A (zh) * | 2013-09-13 | 2014-01-15 | 汉柏科技有限公司 | 一种网络系统的调试方法 |
CN103516561B (zh) * | 2013-09-13 | 2017-11-28 | 汉柏科技有限公司 | 一种网络系统的调试方法 |
CN104780249A (zh) * | 2014-01-14 | 2015-07-15 | 纬创资通股份有限公司 | 移动电话及内核调试讯息的输出方法 |
CN104077220A (zh) * | 2014-06-10 | 2014-10-01 | 中标软件有限公司 | Mips架构操作系统内核的调试方法和装置 |
CN104915209A (zh) * | 2015-06-15 | 2015-09-16 | 上海斐讯数据通信技术有限公司 | 一种linux内核跟踪调试与修复问题的方法 |
CN116089316A (zh) * | 2023-04-07 | 2023-05-09 | 武汉凌久微电子有限公司 | 一种基于动态断点的内核驱动数据调试方法 |
CN116089316B (zh) * | 2023-04-07 | 2023-06-09 | 武汉凌久微电子有限公司 | 一种基于动态断点的内核驱动数据调试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102722438B (zh) | 2014-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11151018B2 (en) | Method and apparatus for testing a code file | |
US9658907B2 (en) | Development tools for refactoring computer code | |
CN102722438B (zh) | 一种内核调试的方法和设备 | |
EP3491527B1 (en) | Debugging tool for a jit compiler | |
CN104407980A (zh) | 移动应用自动化测试装置和方法 | |
CN103389939B (zh) | 一种针对堆可控分配漏洞的检测方法及系统 | |
CN105701006B (zh) | 用于程序调试中的变量跟踪的方法和系统 | |
CN112100072B (zh) | 应用程序代码的静态检测方法、装置、设备及介质 | |
CN101084485A (zh) | 用于改善片上仿真系统中高级语言的仿真速度的装置和方法 | |
CN101739339A (zh) | 一种基于程序动态依赖关系的软件故障定位方法 | |
CN103136107A (zh) | 一种嵌入式程序动态分配内存的变量调试方法 | |
CN104346274A (zh) | 程序调试器及一种程序的调试方法 | |
CN104699523B (zh) | 用于硬件平台所开发的应用程序的调试方法和系统 | |
CN110058861B (zh) | 源码处理方法及装置、存储介质、电子设备 | |
CN105354045A (zh) | 补丁的制作方法及装置、补丁的激活方法及装置 | |
CN104134039A (zh) | 病毒查杀方法、客户端、服务器以及病毒查杀系统 | |
CN111142935A (zh) | 跨平台运行应用程序的方法、装置、计算机系统和介质 | |
CN104156311A (zh) | 一种基于cpu模拟器的嵌入式c语言目标码级单元测试方法 | |
Romano et al. | An empirical study of bugs in webassembly compilers | |
US20070277165A1 (en) | Debugging Interpreted Input | |
US20080127118A1 (en) | Method and system for dynamic patching of software | |
CN113632067A (zh) | 利用跟踪代码的记录执行来仿真非跟踪代码 | |
US9117017B2 (en) | Debugger with previous version feature | |
CN116893960A (zh) | 代码质量检测方法、装置、计算机设备和存储介质 | |
CN109144849B (zh) | 一种嵌入式软件调测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200317 Address after: 610015 No.1, floor 2, building 6, No.39 Renhe street, hi tech Zone, Chengdu City, Sichuan Province Patentee after: Shenzhou Lvmeng Chengdu Technology Co., Ltd Address before: 100089 Beijing city Haidian District Road No. 4 North wa Yitai three storey building Patentee before: NSFOCUS INFORMATION TECHNOLOGY Co.,Ltd. |