CN1779652A - 一种调试操作系统内核态程序的方法及装置 - Google Patents

一种调试操作系统内核态程序的方法及装置 Download PDF

Info

Publication number
CN1779652A
CN1779652A CN 200410009851 CN200410009851A CN1779652A CN 1779652 A CN1779652 A CN 1779652A CN 200410009851 CN200410009851 CN 200410009851 CN 200410009851 A CN200410009851 A CN 200410009851A CN 1779652 A CN1779652 A CN 1779652A
Authority
CN
China
Prior art keywords
kernel
debugging
thread
stubs
foreground
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
Application number
CN 200410009851
Other languages
English (en)
Other versions
CN100359486C (zh
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.)
Electronic Innovation Co.,Ltd.
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CNB2004100098519A priority Critical patent/CN100359486C/zh
Publication of CN1779652A publication Critical patent/CN1779652A/zh
Application granted granted Critical
Publication of CN100359486C publication Critical patent/CN100359486C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种调试操作系统内核态程序的方法及装置,方法包括:通过设置运行在内核态的调试桩模块和运行在用户态的前台调试代理模块,使所述前台调试代理模块与所述调试桩模块进行通信,所述调试桩模块接收来自所述前台调试代理模块的调试信息、控制内核线程的运行并获取内核线程的异常信息;所述内核线程将所述异常信息发送给所述调试桩模块,所述调试桩模块将所述异常信息发送给所述前台调试代理模块并由所述前台调试代理模块返回给调试器,从而使调试器进行对内核态程序的调试。本发明解决了普通调试器不能调试运行在操作系统内核态的程序的缺点。

Description

一种调试操作系统内核态程序的方法及装置
技术领域
本发明涉及一种操作系统内核态程序的调试方法及装置,特别是涉及一种可以使用普通调试器对内核态程序进行调试的方法及装置。
背景技术
操作系统为了安全的考虑为程序设计了两种运行态:用户态和内核态。普通应用程序运行在用户态,部分特殊程序和操作系统本身运行在内核态。目前的调试器设计来调试用户态的程序,对于内核态的程序,只能使用打印或专用芯片调试接口来进行调试,其缺点是:
1)使用打印方法其实是没有调试功能,完全根据经验仿制打印语句,而且每次必须重新编译,造成调试效率低下。
2)使用专用芯片调试接口的使用方法与芯片相关,各不相同,有较长的学习周期。
3)芯片调试接口只能进行原始的语句调试,不能感知进程状态,内存使用等信息,使用很不方便。
以上的种种不便使内核态程序的调试很不方便,也导致了开发的困难。因此一般做法是尽量减少内核态程序的编写,只将驱动等简单流程的程序放入内核态,而其它部分放在用户态运行,期望以简单的内核态程序来弥补调试的困难,但这不是根本的解决之道,而且对于性能要求较高的实时应用来说,应尽量将程序放入内核态,以减少不同运行状态之间切换的开销,因此,迫切需要一种能方便在内核态进行程序调试的方法。
发明内容
本发明所要解决的技术问题是提供一种调试操作系统内核态程序的方法及装置,解决普通调试器不能调试运行在操作系统内核态的程序的缺点。
为达到上述目的,本发明提供了一种调试操作系统内核态程序的方法,其特点在于,通过设置运行在内核态的调试桩模块和运行在用户态的前台调试代理模块,使所述前台调试代理模块与所述调试桩模块进行通信,所述调试桩模块接收来自所述前台调试代理模块的调试信息、控制内核线程的运行并获取内核线程的异常信息;所述内核线程将所述异常信息发送给所述调试桩模块,所述调试桩模块将所述异常信息发送给所述前台调试代理模块并由所述前台调试代理模块返回给调试器,从而使调试器进行对内核态程序的调试。
上述的方法,其特点在于,所述内核线程的运行控制包括:断点异常处理、单步异常处理、内核信号的处理、读/写内核的内存以及读/写内核的寄存器。
上述的方法,其特点在于,所述异常信息包括断点异常信息和/或单步异常信息。
上述的方法,其特点在于,所述断点异常处理包括:遇到一个断点之后,触发一次异常,判断该异常是普通的内核异常还是真正断点异常,如果是普通的内核异常,则转入普通的内核异常处理程序;如果是断点异常则执行正常的断点处理程序。
上述的方法,其特点在于,所述断点异常处理进一步包括:如果被调试内核线程停止在普通内核空间,则所述异常不是真正断点异常,仿真一次单步的执行,使线程先从普通内核空间返回到内核应用程序空间中;如果被调试内核线程停止在内核应用程序空间,则所述异常是真正断点异常;如果是内核线程本身发生异常,则所述异常是真正断点异常。
上述的方法,其特点在于,所述单步异常处理包括:判断异常是普通的内核异常还是真正单步异常,如果是普通的内核异常,则转入普通的内核异常处理程序;如果是真正单步异常则执行正常的单步异常处理程序。
上述的方法,其特点在于,所述单步异常处理进一步包括:如果线程运行在普通内核空间,则该异常不是真正单步异常,退出该异常处理,返回线程所在的原程序;如果该线程是内核线程,则该异常是真正单步异常,转入正常的单步异常处理程序。
上述的方法,其特点在于,所述内核信号处理包括:打开被调试的内核线程的断点异常信号、单步异常信号和停止信号的信号屏蔽,使得内核线程在接收所述三种信号的时候能够处理该信号;增加信号处理时机,在调试的时候,使内核线程从普通内核空间跳转到内核线程空间的时候进行一次信号处理。
上述的方法,其特点在于,所述读/写内核的内存空间包括:内核调试桩判断该次读/写是否发生在调试状态,是则由内核调试桩接管该次读写内存的任务。
上述的方法,其特点在于,所述内核调试桩读内核的内存空间包括:对访问的地址进行检查看判断所述地址是否在内核空间的范围之内,是则执行下一步,否则进行异常处理;如果读取操作要拷贝的长度为L,则L=m×4+n×2+k×1,其中m表示该长度有多少个4字节,n表示减去所有4字节之后还剩下多少个2字节,k表示减去所有4字节和2字节后还剩下多少个1字节,根据起始地址依次拷贝m个四字节,n个2字节,k个1字节;如果出错,则进行异常处理。
上述的方法,其特点在于,所述读/写内核的寄存器包括:内核调试桩判断该次读写寄存器是发生在调试状态后,执行如下步骤:给任务控制块新增加一个成员变量,在进入异常或者中断的时候将当前异常发生时候的堆栈指针的值保存到该成员变量中;在读取寄存器的时候以该成员变量的值作为基地址来读取发生异常前的各个寄存器的值;在退出异常或者中断的时候,清空该成员变量;在读写堆栈指针寄存器的时候进行特殊的处理,将当前的成员变量值加上堆栈指针寄存器在寄存器结构的位置作为当前堆栈指针寄存器的值。
上述的方法,其特点在于,所述控制内核线程的运行并取得内核线程的异常信息,是通过在系统的关键函数处加入调试桩模块的代码来实现。
上述的方法,其特点在于,进一步包括如下步骤:步骤一,通过系统调用的方式,所述前台调试代理模块发送调试信息给所述调试桩模块,所述调试桩模块接收所述调试信息;步骤二,所述调试桩模块对所述调试信息进行相应处理;步骤三,进行断点异常处理;步骤四,进行单步异常处理;步骤五,进行内核信号处理;步骤六,读写内核内存空间;步骤七,读写内核的寄存器;步骤八,将所述异常信息、内存内容或寄存器内容返回给前台调试代理模块。
为了更好的实现本发明的目的,本发明还提供了一种调试操作系统内核态程序的装置,其特点在于,包括:调试器、前台调试代理模块、调试桩模块、内核应用程序模块和内核线程模块;所述调试器连接所述前台调试代理模块,所述前台调试代理模块连接所述调试桩模块和所述内核应用程序模块,所述内核线程模块连接所述调试桩模块和所述内核应用程序模块;所述调试桩模块、内核线程模块和内核应用程序模块运行在内核态,运行在用户态的前台调试代理模块与所述调试桩模块进行通信,所述调试桩模块接收来自所述前台调试代理模块的调试信息、控制内核线程的运行并取得内核线程的异常信息;所述内核线程模块将所述异常信息发送给所述调试桩模块,所述调试桩模块将所述状态信息返回给所述前台调试代理模块并由所述前台调试代理模块返回给调试器,从而使调试器进行对内核态程序的调试。
本发明的技术效果在于:
本发明所述方法设计了一运行在内核态的内核调试桩,调试器通过内核调试桩控制内核线程并返回信息,从而解决了调试器不能调试内核线程的重大难题,使得调试内核线程跟调试用户进程或者用户线程一样方便。且该调试桩是以独立的形式存在,与操作系统关联较少,可以移植到各种通用操作系统之上。
下面结合附图进一步详细说明本发明的具体实施例。
附图说明
图1是调试系统架构示意图;
图2调试桩组成结构图;
图3断点异常处理流程图;
图4单步异常处理流程图。
具体实施方式
本发明为了克服普通调试器不能调试运行在操作系统内核态程序的缺点,提出了新的调试架构,如图1所示,调试系统架构具体包括:设计一个内核调试桩11,该调试桩11运行在内核态。前台调试代理12同调试桩11进行通信,该调试桩11控制内核线程13的运行。内核线程13在遇到异常事件的时候将异常信息反馈给调试桩11,调试桩11收到该异常信息后将该信息返回给前台调试代理12,前台调试代理12收到该消息返回给调试器14。从而可以用普通的用户态调试器14调试核心态的程序,方便内核态程序的开发。
本发明的方法具体包括以下几个步骤:
步骤一:前台调试代理发送调试信息给内核调试桩。内核调试桩接收用户态前台调试代理发送过来的信息。信息发送是通过系统调用的方式来完成的。
步骤二:内核调试桩根据命令信息进行相应处理。处理前台调试代理发送过来的信息。
步骤三:断点异常处理:
在遇到一个断点之后会触发一次断点异常,由于这次异常处理发生在内核态,因此我们接管这次异常。判断它是一次断点异常还是一次普通的内核异常。如果是普通的内核异常,则转入普通的内核异常处理程序中去,否则转入我们的断点异常处理程序中来。具体步骤如下:
在异常处理中首先要判断被调试内核线程是否停止在普通内核空间,如果是的话,要仿真一次单步的执行,让其先从普通内核空间返回到内核应用程序空间中。也就是说只有发生在内核应用程序的断点异常才是真正的断点异常,否则跳到单步处理。
如果是内核线程发生该异常的话,则认为是一次断点异常,而不是内核异常。因此须转到正常的断点处理程序中。
步骤四:单步异常处理:
同上述步骤三一样,如果是普通的内核异常,则转入普通内核异常处理程序中去,否则由内核调试桩接管该异常,具体步骤如下:
在该异常处理中首先要判断是否运行在普通内核空间,如果是的话,则退出该异常处理,连续运行该程序。
否则的话,判断该线程是不是内核线程,如果是的话,转入正常的单步异常处理程序。
步骤五:内核信号处理:
在我们这个方法中,最终的调试手段的实现都是通过信号来完成的,因为在断点异常或者单步异常发生后,都会发送一个断点异常或者单步异常信号给它自己,然后在退出异常处理的时候处理该信号,唤醒父进程。
我们首先需要打开被调试的内核线程的断点异常、单步异常信号、停止信号等3个信号屏蔽,使得内核线程在接收到这些信号的时候能够处理该信号。
增加了信号处理时机,在调试的时候,内核线程从普通内核空间跳转到内核线程空间的时候会进行一次信号处理。
步骤六:读写内核内存空间。首先内核调试桩判断该次读写是否发生在调试状态,如果是的话,则内核调试桩接管该次读写内存的任务,内核调试桩读取内核内存空间分以下步骤:
首先对访问的地址进行检查看是否在内核空间的范围之内。
如果拷贝长度为L的话,则L=m*4+n*2+k*1,m表示该长度有多少个4字节,n表示减去那么多4字节之后还剩下多少个2字节,k依次类推。
根据起始地址依次拷贝m个四字节,n个2字节,k个1字节。
如果出错,则进行异常处理。
步骤七:读写内核的寄存器。首先内核调试桩判断该次读写寄存器是否发生在调试状态,如果是的话,则内核调试桩接管这次读写寄存器的任务,内核调试桩读写寄存器的步骤如下:
首先,给任务控制块新增加一个成员变量,在进入异常或者中断的时候将当前异常发生时候的堆栈指针的值保存到该成员变量中。
在读取寄存器的时候以该成员变量的值作为基地址来读取发生异常前的各个寄存器的值。
在退出异常或者中断的时候,清空该成员变量。
在读写堆栈指针寄存器的时候进行特殊的处理,将当前的成员变量值加上堆栈指针寄存器在寄存器结构的位置就是当前堆栈指针寄存器的值。
步骤八:将异常信息或者内存内容或者寄存器内容返回给前台调试代理。
下面结合附图,以本发明在Linux操作系统上的应用为列来做进一步的详细说明:
Linux操作系统的内核态程序以使用模块加载的形式进入内核运行,因此内核态应用程序以内核模块的形式存在。如图1,图2所示原理,内核调试桩11内还包括命令处理模块111和异常处理模块112,内核调试桩11的功能是:1)获知内核态程序运行状态;2)提供对内存和寄存器的访问3)控制内核态程序的运行,以下分别叙述具体实现:
获知内核态程序运行状态
Linux内核调试桩进入内核后,首先在系统异常处理,系统关键函数(如进程创建,删除等)处加上自己的处理代码,这段处理代码就是异常处理代码,具体的可以分为断点异常处理代码和单步异常处理代码;
其中的断点异常处理流程图如图3所示,包括:
步骤301,发生断点后,判断是否处在普通内核,是则执行步骤305,否则执行步骤302;
步骤302,判断线程是否为内核线程且处在跟踪状态,是则执行步骤307,否则执行步骤303;
步骤303,判断是否处在普通内核空间,是则执行步骤304,否则执行步骤307;
步骤304,转入内核异常处理,转到步骤308;
步骤305,置退出普通内核标识;
步骤306,模拟一次单步的运行,转到步骤308;
步骤307,发送异常信号给被跟踪的进程;
步骤308,返回原程序。
单步异常处理流程如图4所示,包括
步骤401,判断线程是否运行在普通内核空间,是则执行步骤405,否则执行步骤402;
步骤402,判断该线程是否为用户进程,是则执行步骤403,否则执行步骤404;
步骤403,对硬件断点进行处理;
步骤404,发送单步信号给当前内核线程,转到步骤406;
步骤405,禁止单步执行;
步骤406,返回原程序。
在图3的断点异常或图4的单步异常发生后,会进入我们设置的处理代码中,在处理代码的末尾我们会发送一信号返回到调试桩,然后进行以下处理:
if(当前处理的程序是被调试的程序)
{
纪录当前程序执行状态
if(是异常处理)暂停程序运行,并通知调试器
}
跳转回原本处理函数
通过以上操作,内核桩模块可以在被调试内核态程序出现异常时通知调试器进行调试,而在程序新创建和删除时,可以获知其状态,供调试器查询。
对内存和寄存器的访问
分为两个,第一对内存的访问:首先前台调试代理发送读写内存的请求给调试桩,调试桩收到该请求之后,该请求格式定义如下:
#define PTRACE_PEEKTEXT  1
#define PTRACE_POKETEXT  4
分别表示读取指定内存空间以及写指定内存的空间,该调试桩收到该请求之后首先判断该地址是否在内核空间之内,如果是,则认为是访问内核应用程序空间,启动调试桩的安全拷贝功能,安全拷贝流程如图3所示。
第二个是对寄存器的访问,调试桩收到读写寄存器的请求之后,取得发生异常时候保存的,该值是在内核发生异常或者中断的时候保存的,我们新开了一个空间,专门用来保存该堆栈指针的值,这个空间在任务控制块的末尾开的,
task_struct{…………….
    void*kth;
    int *kth_esp_stack;
}
kth_esp_stack保存的是异常发生的时候保存现场之后的地址值,但根据用户态现场堆栈保存规律,得出内核线程运行时候的堆栈指针值是(*kth_esp_stack)+0x34,这样就根据该基地址加上各寄存器的偏移量得出各个寄存器的值。
控制内核态程序的运行,前台调试代理通过发送以下调试命令给调试桩控制被调试程序的运行,命令如下表所示:
#define PTRACE_CONT        7连续运行线程
#define PTRACE_KILL        8杀死线程
#define PTRACE_SINGLESTEP  9单步线程
#define PTRACE_ATTACH      0x10跟棕一个线程
#define PTRACE_DETACH      0x11对一个线程解除跟踪
调试代理桩收到以上命令之后:
switch(命令)
{
case继续运行线程命令:
    调用调试桩继续运行命令接口
case对指定线程跟踪:
    调用调试桩跟踪指定线程接口
…………………….
}
这样就实现了对指定内核程序的控制功能。
由上可知,本发明方法设计了一运行在内核态的内核调试桩,调试器通过内核调试桩控制内核线程并返回信息,从而解决了调试器不能调试内核线程的重大难题,使得调试内核线程跟调试用户进程或者用户线程一样方便。且该调试桩是以独立的形式存在,与操作系统关联较少,可以移植到各种通用操作系统之上。
以上所述仅为本发明的较佳实施例,并非用来限定本发明的实施范围;凡是依本发明所作的等效变化与修改,都被本发明的专利范围所涵盖。

Claims (14)

1、一种调试操作系统内核态程序的方法,其特征在于,通过设置运行在内核态的调试桩模块和运行在用户态的前台调试代理模块,使所述前台调试代理模块与所述调试桩模块进行通信,所述调试桩模块接收来自所述前台调试代理模块的调试信息、控制内核线程的运行并获取内核线程的异常信息;所述内核线程将所述异常信息发送给所述调试桩模块,所述调试桩模块将所述异常信息发送给所述前台调试代理模块并由所述前台调试代理模块返回给调试器,从而使调试器进行对内核态程序的调试。
2、根据权利要求1所述的方法,其特征在于,所述内核线程的运行控制包括:断点异常处理、单步异常处理、内核信号的处理、读/写内核的内存以及读/写内核的寄存器。
3、根据权利要求2所述的方法,其特征在于,所述异常信息包括断点异常信息和/或单步异常信息。
4、根据权利要求3所述的方法,其特征在于,所述断点异常处理包括:遇到一个断点之后,触发一次异常,判断该异常是普通的内核异常还是真正断点异常,如果是普通的内核异常,则转入普通的内核异常处理程序;如果是断点异常则执行正常的断点处理程序。
5、根据权利要求4所述的方法,其特征在于,所述断点异常处理进一步包括:
如果被调试内核线程停止在普通内核空间,则所述异常不是真正断点异常,仿真一次单步的执行,使线程先从普通内核空间返回到内核应用程序空间中;
如果被调试内核线程停止在内核应用程序空间,则所述异常是真正断点异常;
如果是内核线程本身发生异常,则所述异常是真正断点异常。
6、根据权利要求3所述的方法,其特征在于,所述单步异常处理包括:判断异常是普通的内核异常还是真正单步异常,如果是普通的内核异常,则转入普通的内核异常处理程序;如果是真正单步异常则执行正常的单步异常处理程序。
7、根据权利要求6所述的方法,其特征在于,所述单步异常处理进一步包括:如果线程运行在普通内核空间,则该异常不是真正单步异常,退出该异常处理,返回线程所在的原程序;如果该线程是内核线程,则该异常是真正单步异常,转入正常的单步异常处理程序。
8、根据权利要求2、3、4、5、6或7所述的方法,其特征在于,所述内核信号处理包括:打开被调试的内核线程的断点异常信号、单步异常信号和停止信号的信号屏蔽,使得内核线程在接收所述三种信号的时候能够处理该信号;增加信号处理时机,在调试的时候,使内核线程从普通内核空间跳转到内核线程空间的时候进行一次信号处理。
9、根据权利要求8所述的方法,其特征在于,所述读/写内核的内存空间包括:内核调试桩判断该次读/写是否发生在调试状态,是则由内核调试桩接管该次读写内存的任务。
10、根据权利要求9所述的方法,其特征在于,所述内核调试桩读内核的内存空间包括:
对访问的地址进行检查看判断所述地址是否在内核空间的范围之内,是则执行下一步,否则进行异常处理;
如果读取操作要拷贝的长度为L,则L=m×4+n×2+k×1,其中m表示该长度有多少个4字节,n表示减去所有4字节之后还剩下多少个2字节,k表示减去所有4字节和2字节后还剩下多少个1字节,根据起始地址依次拷贝m个四字节,n个2字节,k个1字节;
如果出错,则进行异常处理。
11、根据权利要求8所述的方法,其特征在于,所述读/写内核的寄存器包括:内核调试桩判断该次读写寄存器是发生在调试状态后,执行如下步骤:
给任务控制块新增加一个成员变量,在进入异常或者中断的时候将当前异常发生时候的堆栈指针的值保存到该成员变量中;
在读取寄存器的时候以该成员变量的值作为基地址来读取发生异常前的各个寄存器的值;
在退出异常或者中断的时候,清空该成员变量;
在读写堆栈指针寄存器的时候进行特殊的处理,将当前的成员变量值加上堆栈指针寄存器在寄存器结构的位置作为当前堆栈指针寄存器的值。
12、根据权利要求8所述的方法,其特征在于,所述控制内核线程的运行并取得内核线程的异常信息,是通过在系统的关键函数处加入调试桩模块的代码来实现。
13、根据权利要求1所述的方法,其特征在于,进一步包括如下步骤:
步骤一,通过系统调用的方式,所述前台调试代理模块发送调试信息给所述调试桩模块,所述调试桩模块接收所述调试信息;
步骤二,所述调试桩模块对所述调试信息进行相应处理;
步骤三,进行断点异常处理;
步骤四,进行单步异常处理;
步骤五,进行内核信号处理;
步骤六,读写内核内存空间;
步骤七,读写内核的寄存器;
步骤八,将所述异常信息、内存内容或寄存器内容返回给前台调试代理模块。
14、一种调试操作系统内核态程序的装置,其特征在于,包括:调试器、前台调试代理模块、调试桩模块、内核应用程序模块和内核线程模块;
所述调试器连接所述前台调试代理模块,所述前台调试代理模块连接所述调试桩模块和所述内核应用程序模块,所述内核线程模块连接所述调试桩模块和所述内核应用程序模块;
所述调试桩模块、内核线程模块和内核应用程序模块运行在内核态,运行在用户态的前台调试代理模块与所述调试桩模块进行通信,所述调试桩模块接收来自所述前台调试代理模块的调试信息、控制内核线程的运行并取得内核线程的异常信息;所述内核线程模块将所述异常信息发送给所述调试桩模块,所述调试桩模块将所述状态信息返回给所述前台调试代理模块并由所述前台调试代理模块返回给调试器,从而使调试器进行对内核态程序的调试。
CNB2004100098519A 2004-11-24 2004-11-24 一种调试操作系统内核态程序的方法及装置 Active CN100359486C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2004100098519A CN100359486C (zh) 2004-11-24 2004-11-24 一种调试操作系统内核态程序的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2004100098519A CN100359486C (zh) 2004-11-24 2004-11-24 一种调试操作系统内核态程序的方法及装置

Publications (2)

Publication Number Publication Date
CN1779652A true CN1779652A (zh) 2006-05-31
CN100359486C CN100359486C (zh) 2008-01-02

Family

ID=36769988

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100098519A Active CN100359486C (zh) 2004-11-24 2004-11-24 一种调试操作系统内核态程序的方法及装置

Country Status (1)

Country Link
CN (1) CN100359486C (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063366A (zh) * 2009-11-18 2011-05-18 中兴通讯股份有限公司 调试进程的方法和系统
CN101446918B (zh) * 2008-12-10 2011-12-28 中兴通讯股份有限公司 一种实现用户态调试器调试单个函数的方法及系统
CN102346708A (zh) * 2010-08-03 2012-02-08 中兴通讯股份有限公司 一种调试器及其调试方法
CN102467447A (zh) * 2010-11-16 2012-05-23 鸿富锦精密工业(深圳)有限公司 驱动程序调试系统及方法
CN102486758A (zh) * 2010-12-01 2012-06-06 中兴通讯股份有限公司 一种访问协处理器寄存器的方法及装置
CN103793325A (zh) * 2014-01-24 2014-05-14 深圳市同洲电子股份有限公司 一种内核调试方法及系统
CN105224454A (zh) * 2015-09-25 2016-01-06 华为技术有限公司 一种调试方法、多核处理器和调试设备
CN105354136A (zh) * 2015-09-25 2016-02-24 华为技术有限公司 一种调试方法、多核处理器和调试设备
CN106201892A (zh) * 2016-07-20 2016-12-07 中国航空工业集团公司航空动力控制系统研究所 用于嵌入式软件的异常中断源定位检测方法
CN107451046A (zh) * 2016-05-30 2017-12-08 腾讯科技(深圳)有限公司 一种检测线程的方法及终端
CN109144873A (zh) * 2018-08-22 2019-01-04 郑州云海信息技术有限公司 一种linux内核处理方法及装置
CN110109761A (zh) * 2019-05-11 2019-08-09 肖银皓 一种用户态管理操作系统内核内存方法及系统
CN110597705A (zh) * 2019-07-30 2019-12-20 广东工业大学 一种可重复获取测试数据的程序调试方法及装置
CN112463662A (zh) * 2020-12-16 2021-03-09 福州创实讯联信息技术有限公司 一种用户态控制i2c设备的方法与终端
CN114035855A (zh) * 2021-09-30 2022-02-11 鸣芯信息科技(上海)有限公司 固件的调试方法、装置、终端及存储介质
CN115098402A (zh) * 2022-07-25 2022-09-23 摩尔线程智能科技(北京)有限责任公司 调试方法以及调试装置
CN115220978A (zh) * 2022-09-19 2022-10-21 瀚博半导体(上海)有限公司 包括在线调试模式的芯片启动方法和装置、芯片和设备
CN116089316A (zh) * 2023-04-07 2023-05-09 武汉凌久微电子有限公司 一种基于动态断点的内核驱动数据调试方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4993027A (en) * 1988-09-09 1991-02-12 Pace, Incorporated Method and apparatus for determining microprocessor kernal faults
EP0720093B1 (en) * 1994-12-28 2001-11-14 Kabushiki Kaisha Toshiba Microprocessor and debug system
US6964035B2 (en) * 2001-07-03 2005-11-08 Hewlett-Packard Development Company, L.P. Debugging an operating system kernel with debugger support in a network interface card

Cited By (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101446918B (zh) * 2008-12-10 2011-12-28 中兴通讯股份有限公司 一种实现用户态调试器调试单个函数的方法及系统
CN102063366A (zh) * 2009-11-18 2011-05-18 中兴通讯股份有限公司 调试进程的方法和系统
CN102346708A (zh) * 2010-08-03 2012-02-08 中兴通讯股份有限公司 一种调试器及其调试方法
WO2012016438A1 (zh) * 2010-08-03 2012-02-09 中兴通讯股份有限公司 一种调试器及其调试方法
CN102346708B (zh) * 2010-08-03 2014-07-16 中兴通讯股份有限公司 一种调试器及其调试方法
CN102467447A (zh) * 2010-11-16 2012-05-23 鸿富锦精密工业(深圳)有限公司 驱动程序调试系统及方法
US8990776B2 (en) 2010-11-16 2015-03-24 Zhongshan Innocloud Intellectual Property Services Co., Ltd. Computing device and device driver debugging method
CN102486758A (zh) * 2010-12-01 2012-06-06 中兴通讯股份有限公司 一种访问协处理器寄存器的方法及装置
CN102486758B (zh) * 2010-12-01 2015-01-28 中兴通讯股份有限公司 一种访问协处理器寄存器的方法及装置
CN103793325A (zh) * 2014-01-24 2014-05-14 深圳市同洲电子股份有限公司 一种内核调试方法及系统
CN105224454B (zh) * 2015-09-25 2018-06-05 华为技术有限公司 一种调试方法、多核处理器和调试设备
CN105354136B (zh) * 2015-09-25 2018-06-15 华为技术有限公司 一种调试方法、多核处理器和调试设备
CN105354136A (zh) * 2015-09-25 2016-02-24 华为技术有限公司 一种调试方法、多核处理器和调试设备
WO2017050286A1 (zh) * 2015-09-25 2017-03-30 华为技术有限公司 一种调试方法、多核处理器和调试设备
WO2017050287A1 (zh) * 2015-09-25 2017-03-30 华为技术有限公司 一种调试方法、多核处理器和调试设备
US10503629B2 (en) 2015-09-25 2019-12-10 Huawei Technologies Co., Ltd. Debugging method, multi-core processor, and debugging device
CN105224454A (zh) * 2015-09-25 2016-01-06 华为技术有限公司 一种调试方法、多核处理器和调试设备
US10409709B2 (en) 2015-09-25 2019-09-10 Huawei Technologies Co., Ltd. Debugging method, multi-core processor and debugging device
CN107451046A (zh) * 2016-05-30 2017-12-08 腾讯科技(深圳)有限公司 一种检测线程的方法及终端
CN106201892B (zh) * 2016-07-20 2019-02-01 中国航空工业集团公司航空动力控制系统研究所 用于嵌入式软件的异常中断源定位检测方法
CN106201892A (zh) * 2016-07-20 2016-12-07 中国航空工业集团公司航空动力控制系统研究所 用于嵌入式软件的异常中断源定位检测方法
CN109144873A (zh) * 2018-08-22 2019-01-04 郑州云海信息技术有限公司 一种linux内核处理方法及装置
CN109144873B (zh) * 2018-08-22 2022-05-06 郑州云海信息技术有限公司 一种linux内核处理方法及装置
CN110109761A (zh) * 2019-05-11 2019-08-09 肖银皓 一种用户态管理操作系统内核内存方法及系统
CN110109761B (zh) * 2019-05-11 2021-06-04 广东财经大学 一种用户态管理操作系统内核内存方法及系统
CN110597705A (zh) * 2019-07-30 2019-12-20 广东工业大学 一种可重复获取测试数据的程序调试方法及装置
CN110597705B (zh) * 2019-07-30 2023-01-20 广东工业大学 一种可重复获取测试数据的程序调试方法及装置
CN112463662A (zh) * 2020-12-16 2021-03-09 福州创实讯联信息技术有限公司 一种用户态控制i2c设备的方法与终端
CN112463662B (zh) * 2020-12-16 2024-04-05 福州创实讯联信息技术有限公司 一种用户态控制i2c设备的方法与终端
CN114035855A (zh) * 2021-09-30 2022-02-11 鸣芯信息科技(上海)有限公司 固件的调试方法、装置、终端及存储介质
CN114035855B (zh) * 2021-09-30 2023-10-27 鸣芯信息科技(上海)有限公司 固件的调试方法、装置、终端及存储介质
CN115098402A (zh) * 2022-07-25 2022-09-23 摩尔线程智能科技(北京)有限责任公司 调试方法以及调试装置
CN115220978A (zh) * 2022-09-19 2022-10-21 瀚博半导体(上海)有限公司 包括在线调试模式的芯片启动方法和装置、芯片和设备
CN116089316A (zh) * 2023-04-07 2023-05-09 武汉凌久微电子有限公司 一种基于动态断点的内核驱动数据调试方法
CN116089316B (zh) * 2023-04-07 2023-06-09 武汉凌久微电子有限公司 一种基于动态断点的内核驱动数据调试方法

Also Published As

Publication number Publication date
CN100359486C (zh) 2008-01-02

Similar Documents

Publication Publication Date Title
CN1779652A (zh) 一种调试操作系统内核态程序的方法及装置
US10996947B2 (en) Diagnosing production applications
CN1108560C (zh) 用于存储与多种编程语言相关的执行数据的方法和装置
CN107077414B (zh) 用于生产调试的诊断工作流程
Bhansali et al. Framework for instruction-level tracing and analysis of program executions
US7613753B2 (en) Platform and method for functional programming (FP) processing
US10664384B2 (en) Javascript debugging using just my code
CN1912849A (zh) 微处理器的片上动态跟踪方法
Kolb et al. A case study in refactoring a legacy component for reuse in a product line
CN101067798A (zh) 一种动态探针方法及其在嵌入式系统中的应用
CN1725187A (zh) 在计算机上当软件崩溃时保存用户数据的方法及装置
CN1838088A (zh) 探测具有限制性调用约定代码的方法
US20130036331A1 (en) Debugging method and debugging device
CN101976187A (zh) 反编译过程中的堆栈跟踪方法、装置及反编译器
CN1637737A (zh) 具有配置初始化功能的内电路配置结构
La Torre et al. Sequentializing parameterized programs
CN1866219A (zh) 基于自动化测试脚本对被测对象进行测试的方法和系统
CN1564137A (zh) 一种嵌入式系统多任务并发调试的方法
CN1892616A (zh) 在微处理器用户态随机验证中实现核心态程序验证的方法
CN1148656C (zh) 面向线程的调试
CN105095079A (zh) 一种热点模块指令跟踪的方法及设备
CN1637736A (zh) 具有非挥发性配置储存装置的内电路配置结构
Watson Writing high-performance. NET code
CN100336033C (zh) 单芯片多处理器结构模拟系统
US20130117732A1 (en) Technique to improve performance of software breakpoint handling

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: 20211221

Address after: Illinois, America

Patentee after: Electronic Innovation Co.,Ltd.

Address before: Delaware

Patentee before: Electronic Innovation Co.,Ltd.

Effective date of registration: 20211221

Address after: Delaware

Patentee after: Electronic Innovation Co.,Ltd.

Address before: 518057 Zhongxing building, science and technology south road, Nanshan District hi tech Industrial Park, Guangdong, Shenzhen

Patentee before: ZTE Corp.

CI03 Correction of invention patent
CI03 Correction of invention patent

Correction item: transfer of patent right

Correct: Electronic innovation China Co.,Ltd.

False: Electronic Innovation Co.,Ltd.

Number: 53-02

Volume: 37