CN112905472A - 内核调试系统及方法 - Google Patents
内核调试系统及方法 Download PDFInfo
- Publication number
- CN112905472A CN112905472A CN202110240693.1A CN202110240693A CN112905472A CN 112905472 A CN112905472 A CN 112905472A CN 202110240693 A CN202110240693 A CN 202110240693A CN 112905472 A CN112905472 A CN 112905472A
- Authority
- CN
- China
- Prior art keywords
- kernel
- module
- program code
- target file
- kwasm
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000006870 function Effects 0.000 claims description 42
- 230000015654 memory Effects 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 7
- 238000012423 maintenance Methods 0.000 claims description 4
- 238000007726 management method Methods 0.000 description 28
- 238000004891 communication Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3656—Software debugging using additional hardware using a specific debug interface
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种内核调试系统及方法。该内核调试系统包括:用户接口模块,该用户接口模块被配置成编辑程序代码,以及输出程序代码的执行结果;编译模块,该编译模块被配置成将程序代码编译为目标文件;Kwasm引擎,该Kwasm引擎直接安装在操作系统的系统内核中,并且被配置成在内核态解释并执行目标文件,以得到程序代码的执行结果。基于该内核调试系统,使得用户可以像编写普通应用程序一样编写程序代码,即可使其运行于系统内核执行,而不需要关注系统内核的细节。
Description
技术领域
本申请涉及软件调试领域,尤其涉及一种内核调试系统及方法。
背景技术
在Linux系统中,往往只有专业人员才能修改和编译内核源码。然而,对内核不是非常熟悉的开发人员如果需要调试内核的某部分功能或者在内核运行状态下读取内核数据以进行测试或分析,则通常需要修改并全新编译内核,或者创建新的内核模块。对于修改并全新编译内核的情况,还需要更新目标系统的内核。对于创建新的内核模块的情况,则还需要将该新的内核模块与系统运行的内核源码进行匹配,因此这种方法对内核源码依赖很深,对编译环境要求较高。目前常用的内核调试方法可包括例如通过修改内核源码来进行内核调试的方法、Kgdb内核调试方法、Perf内核调试方法、内核ftrace功能调试方法等。但是,这些调试方法都较为专业、复杂,如果使用不当可能导致系统宕机。
因此,有必要提供一种简便易用的内核调试系统和方法,使得用户可以像编写普通应用程序一样编写程序代码,即可使其运行于系统内核执行,而不需要关注系统内核的细节。
发明内容
鉴于以上技术问题,本申请提供了一种内核调试系统和方法,使得用户可以像编写普通应用程序一样编写程序代码,即可使其运行于系统内核执行,而不需要关注系统内核的细节,而仅需了解所调用的内核接口即可。
在本申请的第一方面,提供了一种内核调试系统,包括:用户接口模块,所述用户接口模块被配置成编辑程序代码,以及输出程序代码的执行结果;编译模块,所述编译模块被配置成将所述程序代码编译为目标文件;Kwasm引擎,所述Kwasm引擎直接安装在操作系统的系统内核中,并且被配置成在内核态解释并执行所述目标文件,以得到所述执行结果。
在一种实现中,所述操作系统为Linux操作系统。
在一种实现中,所述目标文件为64位wasm格式的目标文件。
在一种实现中,所述Kwasm引擎包括:接收模块,所述接收模块被配置成接收操作指令,并将所述操作指令转发给管理模块,其中所述操作指令包括与所述目标文件相关联的操作指令;管理模块,所述管理模块被配置成响应于接收到所述操作指令,而提供对所述操作指令的辅助管理;解释执行模块,所述解释执行模块被配置成在内核态解释并执行所述目标文件,以生成所述执行结果;发送模块,所述发送模块被配置成将所述执行结果发送到所述用户接口模块。
在一种实现中,所述解释执行模块是在预定的wasm解释器的基础上实现的,但是所述解释执行模块所依赖的底层接口被配置为内核接口。
在一种实现中,所述解释执行模块被配置成支持对64位wasm格式的目标文件进行解释和执行。
在一种实现中,所述解释执行模块被配置成不支持浮点操作函数。
在一种实现中,所述Kwasm引擎还包括符号表生成模块,所述符号表生成模块被配置成基于系统符号表和内核头文件生成导出函数符号表。
在一种实现中,所述辅助管理包括:系统状态维护、文件管理、内存管理和消息队列管理。
在本申请的第二方面,提供了一种内核调试方法,所述内核调试方法是利用本申请的第一方面所述的内核调试系统来执行的,所述内核调试方法包括:经由用户接口模块编辑程序代码;经由编译模块将所述程序代码编译为目标文件;经由Kwasm引擎在内核态解释并执行所述目标文件,并将所述程序代码的执行结果发送到所述用户接口模块,以供进行显示。,
附图说明
图1示出了根据本申请的实施例的内核调试系统的结构框图;
图2示出了根据本申请的实施例的Kwasm引擎的结构示意图;
图3示出了根据本申请的实施例的管理模块的结构框图;
图4示出了根据本申请的实施例的内核调试方法的流程图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似改进,因此本发明不受下面公开的具体实施例的限制。
如图1所示,在一个实施例中,本申请提供了一种内核调试系统100。该内核调试系统100包括用户接口模块101、编译模块102和Kwasm引擎103(即用于嵌入内核的WebAssembly解释执行系统)。
用户接口模块101被配置成编辑程序代码(例如,用C语言编写的程序代码代码),以及输出该程序代码的执行结果。在一种实现中,用户接口模块101可以是用于显示和编辑开发人员编写的程序代码,以及显示相应的执行结果的用户界面。值得一提的是,在本文中,编辑程序代码可以指的是对程序代码进行编写或修改,包括输入新的程序代码或者修改之前已经输入的程序代码等。
编译模块102被配置成将程序代码编译为目标文件。目前,大部分中央处理单元(CPU)都是64位的,相应的系统内核(例如,Kernel)也是64位的地址范围,因此在一种实现中,该目标文件被配置为64位wasm格式(WebAssembly格式)的目标文件,从而保证wasm代码访问内核接口的操作可被正确执行。在一种实现中,可采用Clang 12.0以上版本的编译器来对64位wasm格式的目标文件进行编译。应了解,Clang是一个C语言、C++、Objective-C语言的轻量级编译器。当然,在本申请中,也可以采用其他编译器,只要其可以将程序代码编译为所需格式的目标文件即可。
在本申请中,Kwasm引擎103被实现为直接安装在系统内核中的一个服务,其被配置成在内核态解释并执行目标文件,以得到程序代码的执行结果。后面将会结合图2对Kwasm引擎103更进一步详细的描述。在本申请中,内核态实际上是相对于用户态来说的。具体而言,内核态指的是电子设备的中央处理单元(CPU)运行于较高的特权级别,具有较高的系统权限,可操作更多的系统资源,如中断向量表、特殊寄存器等,而用户态则指的是中央处理单元运行于最低的特权级别,例如普通的应用程序运行于用户态,当需要操作系统资源时,用户态程序需要通过操作系统调用进入内核态,由内核提供的接口实现指定资源的操作。
在一种实现中,如图1所示,用户接口模块101和编译模块102均实现在上位机中,kwasm引擎103直接安装在下位机(或目标机)上的操作系统(例如,Linux系统)的系统内核(Kernal)中。在本申请中,上位机指的是用于发出操作命令的电子设备,下位机指的是用于处理操作命令的电子设备,下位机上一般安装有Linux之类的操作系统。在本申请中,电子设备可表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。虽然在图1中将用户接口模块101和编译模块102示为实现在上位机中,并且将kwasm引擎103示为直接安装在下位机中,但是应理解,用户接口模块101、编译模块102和安装有kwasm引擎103的操作系统也可实现在同一电子设备中,而不背离本申请所要求保护的范围。
如图2所示,在一实施例中,Kwasm引擎103可包括接收模块201、发送模块202、管理模块203和解释执行模块204。
接收模块201被配置成接收操作指令,并将该操作指令转发给管理模块203,其中所述操作指令包括与目标文件相关联的操作指令。具体地,在本申请中,操作指令可包括执行目标文件、查询Kwasm引擎中具有哪些目标文件、传输目标文件等等。在一种实现中,接收模块201可例如经由串行接口、USB接口或网络接口等通信接口与上位机连接,以接收由上位机发送的目标文件。接收模块201可被配置成经由protobuf(Google Protocol Buffers,谷歌协议缓冲区)通信协议以自预定义的通信字段从上位机接收该目标文件。在本申请中,自定义的通信字段可用于对不同的操作指令进行区分(例如,将上位机与Kwasm引擎之间的不同通信功能进行区分),使得Kwasm引擎可以知晓该操作指令为例如执行某个wasm64目标文件、还是查询Kwasm引擎中具有哪些wasm 64目标文件、还是只是传输某个wasm 64目标文件等等。应了解,protobuf通信协议是一种能够将跨语言/机器,实现接口数据结构的转换的通信协议,其较为成熟通用,而且带宽占用不高。当然,接收模块201也可被配置成经由其他通信协议,例如以json格式来从上位机接收目标文件。
发送模块202被配置成将程序代码的执行结果发送到用户接口模块101。在一种实现中,发送模块202也可经由串行接口、USB接口或网络接口等通信接口与上位机连接,以将相应的执行结果发送给上位机,以供经由用户接口模块101进行显示。发送模块202可被配置成经由protobuf通信协议将执行结果发送给上位机。值得一提的是,当所要发送的执行结果的数据包的长度过长(例如,超过通信接口(例如,串行接口、USB接口或网络接口)的发送限制)时,发送模块202还可被将数据包分割成多个片进行发送。
值得一提的是,虽然在附图2中将接收模块201和发送模块202描述为两个分开的模块,但是应理解,接收模块201和发送模块202也可集成在同一个模块中,而不背离本申请的保护范围。
管理模块203被配置成响应于接收到操作指令,提供对所述操作指令的辅助管理。在一种实现中,辅助管理可包括系统状态维护、文件管理、内存管理和消息队列管理。因此,如图3所示,在一个实施例中,管理模块203可相应地包括系统状态维护模块301、文件管理模块302、内存管理模块303和消息队列管理模块304。
系统状态维护模块301被配置成执行系统状态管理功能,具体可包括在Kwasm引擎响应于收到相应的操作指令而启动时初始化该Kwasm引擎、在Kwasm引擎响应于收到相应的操作指令而退出时释放该Kwasm引擎的资源、以及在Kwasm引擎运行时维护该Kwasm引擎的状态等等。
文件管理模块302被配置成执行文件管理功能,具体可包括响应于相应的操作指令,将目标文件下发到Kwasm引擎,即下发到操作系统的指定目标下进行保存(例如,仅作为示例,该指定目录可以为例如/home/kwasm/),使得kwasm引擎可以从该目录读取该目标文件并对其进行执行。值得一提的是,一旦目标文件被下发到操作系统的指定目标下进行保存,该目标文件就可被Kwasm引擎反复执行,而无需在每次执行之前都进行重新下发。文件管理还可包括响应于相应的操作指令,对已下发的目标文件进行读取、删除、查询等。
由于导出函数符号表数量庞大且不固定,因此在生成导出函数符号表时,一般需要动态扩充内存资源,而且还会申请很多零散的内存,以用于例如存储符号名称等,通常情况下不同的符号名称长度都不一样。下文中会结合符号表生成模块205对导出函数符号表进行更详细的描述。由此,在本申请中,内存管理模块303被配置成主要用于执行以下内存管理功能:提供内存池的功能,用于动态分配所需的内存并对所分配的内存进行集中管理,以保证资源的有效使用及释放。
消息队列管理模块被配置成执行消息队列管理功能,具体可包括:在从接收模块201接收到操作指令后,将该操作指令存放到消息队列中,使得Kwasm引擎的主线程可守护操作指令的消息队列。这种守护可例如为在操作指令到达后根据操作指令的ID不同地对其进行处理,诸如将删除文件的操作指令提供给文件管理来进行执行,将执行目标文件的操作指令提供给解释执行模块204来进行执行等等。
解释执行模块204被配置成在内核态解释并执行目标文件,以生成相应的执行结果。在一种实现中,解释执行模块是在预定的wasm解释器的基础上实现的,但是该解释执行模块所依赖的底层接口被配置为内核接口。在本申请中,该预定的wasm解释器可以是任何现有的wasm解释器(例如,开源wasm解释器),也可以是将来待开发的wasm解释器。应了解,现有的开源wasm解释器是运行于用户态的程序,无法直接嵌入到操作系统的系统内核中,即不能直接安装在系统内核中。为了使得这种开源wasm解释器能够直接安装在系统内核中,本申请在其基础上进行了实质性的改进,从而实现了解释执行模块204。
在一方面,通过对现有的开源wasm解释器进行改进,使得最终实现的解释执行模块204所依赖的底层接口被配置为内核接口。开源wasm解释器通常都在用户态执行,其所以来的底层接口大部分为诸如libc之类的基础库,但是操作系统的系统内核并不支持这种用户态的基础库。因此,根据本申请的实施例的解释执行模块204去除了开源wasm解释器对这种基础库的依赖,将所需依赖的底层接口(例如,所有C库接口)均改为系统内核所提供的对应接口(即,内核接口)。在一种情况下,在内核系统包括相应的内核接口的情况下,可直接替换底层接口,例如将malloc(由C标准库提供的内存分配接口)函数直接改为vmalloc(内核提供的内存分配接口),将free(释放)(C库的内存释放接口)直接该为vfree(内核提供的内存释放接口)。在另一种情况下,在内核系统并不包括相应的内核接口的情况下,可对这种底层接口进行开发适配,即重新开发相应的内核接口,例如open(打开)为C库提供的打开文件的接口,但在内核中,无相应接口对应,则可根据内核提供的已知接口组合为open功能的接口。
在另一方面,通过对现有的开源wasm解释器进行改进,使得最终实现的解释执行模块204被配置成支持对64位wasm格式的目标文件进行解释和执行。现有的开源解释器均仅支持32位wasm文件格式,但是系统内核一般是运行在64位的中央处理单元(CPU)中的,也就是说系统内核的地址空间是64位的,因此现有的开源wasm解释器无法访问系统内核的内核地址。因此,需要将这种开源解释器修改为支持64位wasm格式,使得内核接口可以被正常使用。为了将开源解释器修改为支持64位wasm格式,可将对地址的所有操作都改为按照64位来进行处理,例如将读取地址的长度扩展到64位,将存储类型按照64位空间进行存储,另外对在原解释器中固定作为32位识别的部分(主要是各种指针类型)均按照64位来进行处理。例如,仅作为示例,在遇到地址处理的情况下,可将I32的计算方法改为I64的计算方法,可具体到读取wasm64字节码长度扩展、指令压栈地址更新、指令出栈地址更新、参数传递等各方面。
在又一方面,通过对现有的开源wasm解释器进行改进,使得最终实现的解释执行模块还被配置成不支持浮点操作函数。系统内核并不支持浮点操作,因此现有的开源wasm解释器中所有与浮点相关的函数均需删除,并将相应的浮点指令均设置为不支持。
继续参考图2,在一实施例中,Kwasm引擎103还可包括符号表生成模块205。符号表生成模块205被配置成基于系统符号表和内核头文件生成导出函数符号表。该导出函数符号表是在系统运行时,内核导出的接口函数与实际内核地址的对应表,因此通过该导出函数符号表,使得在执行目标文件的过程中可以快速地找到需要调用的内核导出函数(即,内核代码中定义的接口函数)。内核头文件指的是在系统内核的编译过程中生成的头文件,其可包含函数原型定义,即内核可提供的供用户调用的函数定义。系统符号表指的是在系统内核运行后在操作系统中生成的实际符号表,该符号表只包含函数的名称与地址以及符号类型。符号表生成模块205可匹配系统符号表和内核头文件,从而生成最终的导出函数符号表。在一个实现中,该导出函数符号表是具有三个元素的各个项的表格,该三个元素分别为:a、函数名称(即,内核导出函数的名称),b、函数的内存映射地址(即,内核导出函数的内参映射地址),以及c、函数原型(即,内核导出函数的原型定义)。解释执行模块204在解释并执行目标文件的过程中,如果遇到需要调用相应的内核函数的情况,就会查询导出函数符号表,以将目标文件中引用的内核函数映射到具体的内存地址(包括将相关的实际参数传递给在该内存地址的内核函数),并跳转到该内核函数代码段进行执行,从而实现了对该内核函数(即,内核导出的接口函数)的调用。
通过在系统内核中安装以上所述的Kwasm引擎,相当于在系统内核中开了一扇窗,从而使得开发人员可以简单方便地对系统内核进行调试,而不需要关注系统内核的细节,进而有助于提高内核调试的效率。
如图4所示,在一个实施例中,本申请还提供了一种内核调试方法,该内核调试方法是使用以上内核调试系统实现的。具体地,该内核调试方法可包括步骤401-403。
在步骤401,通过用户接口模块编辑程序代码(例如,由开发人员在该用户接口模块上输入的程序代码)。
在步骤402,利用编译模块将程序代码编译为目标文件。
在步骤403,经由Kwasm引擎在内核态解释并执行该目标文件,并将该程序代码的执行结果发送到用户接口模块,以供进行显示。如之前所描述的,Kwasm引擎是安装在系统内核中的,因此在该方法中,目标文件实际上是运行于内核态的,因此其在运行过程中可以调用内核导出的接口函数。
根据以上流程可以看出,本申请的内核调试方法的操作流程简单易用,开发人员只需在用户接口模块上输入测试代码即可使其运行于系统内核,从而大大提高了调试内核代码的效率。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种内核调试系统,其特征在于,包括:
用户接口模块,所述用户接口模块被配置成编辑程序代码,以及输出程序代码的执行结果;
编译模块,所述编译模块被配置成将所述程序代码编译为目标文件;
Kwasm引擎,所述Kwasm引擎直接安装在操作系统的系统内核中,并且被配置成在内核态解释并执行所述目标文件,以得到所述执行结果。
2.根据权利要求1所述的内核调试系统,其特征在于,所述操作系统为Linux操作系统。
3.根据权利要求1所述的内核调试系统,其特征在于,所述目标文件为64位wasm格式的目标文件。
4.根据权利要求1所述的内核调试系统,其特征在于,所述Kwasm引擎包括:
接收模块,所述接收模块被配置成接收操作指令,并将所述操作指令转发给管理模块,其中所述操作指令包括与所述目标文件相关联的操作指令;
管理模块,所述管理模块被配置成响应于接收到所述操作指令,而提供对所述操作指令的辅助管理;
解释执行模块,所述解释执行模块被配置成在内核态解释并执行所述目标文件,以生成所述执行结果;
发送模块,所述发送模块被配置成将所述执行结果发送到所述用户接口模块。
5.根据权利要求4所述的内核调试系统,其特征在于,所述解释执行模块是在预定的wasm解释器的基础上实现的,但是所述解释执行模块所依赖的底层接口被配置为内核接口。
6.根据权利要求5所述的内核调试系统,其特征在于,所述解释执行模块被配置成支持对64位wasm格式的目标文件进行解释和执行。
7.根据权利要求5所述的内核调试系统,其特征在于,所述解释执行模块被配置成不支持浮点操作函数。
8.根据权利要求4所述的内核调试系统,其特征在于,所述Kwasm引擎还包括符号表生成模块,所述符号表生成模块被配置成基于系统符号表和内核头文件生成导出函数符号表。
9.根据权利要求4所述的内核调试系统,其特征在于,所述辅助管理包括:系统状态维护、文件管理、内存管理和消息队列管理。
10.一种内核调试方法,其特征在于,所述内核调试方法是利用权利要求1-9中的任一项所述的内核调试系统来执行的,所述内核调试方法包括:
经由用户接口模块编辑程序代码;
经由编译模块将所述程序代码编译为目标文件;
经由Kwasm引擎在内核态解释并执行所述目标文件,并将程序代码的执行结果发送到所述用户接口模块,以供进行显示。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110240693.1A CN112905472A (zh) | 2021-03-04 | 2021-03-04 | 内核调试系统及方法 |
US17/686,126 US11768757B2 (en) | 2021-03-04 | 2022-03-03 | Kernel debugging system and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110240693.1A CN112905472A (zh) | 2021-03-04 | 2021-03-04 | 内核调试系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112905472A true CN112905472A (zh) | 2021-06-04 |
Family
ID=76108253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110240693.1A Pending CN112905472A (zh) | 2021-03-04 | 2021-03-04 | 内核调试系统及方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11768757B2 (zh) |
CN (1) | CN112905472A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114327776A (zh) * | 2021-12-30 | 2022-04-12 | 支付宝(杭州)信息技术有限公司 | 用于智能合约的调试方法、调试设备和调试系统 |
US20230024949A1 (en) | 2021-07-19 | 2023-01-26 | Samsung Electronics Co., Ltd. | Universal mechanism to access and control a computational device |
CN116340188A (zh) * | 2023-05-26 | 2023-06-27 | 深流微智能科技(深圳)有限公司 | Gpu芯片渲染任务的调试方法及系统 |
CN117076338A (zh) * | 2023-10-18 | 2023-11-17 | 麒麟软件有限公司 | 基于kprobe的linux内核动态调试方法及系统 |
CN117827277A (zh) * | 2024-03-05 | 2024-04-05 | 浙江省北大信息技术高等研究院 | 操作系统的多内核适配装置、方法及工业物联网操作系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795726B (zh) * | 2023-08-25 | 2023-11-28 | 麒麟软件有限公司 | 一种在线调试Linux内核的方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096598A (zh) * | 2010-12-30 | 2011-06-15 | 广州市聚晖电子科技有限公司 | 一种虚拟机系统及其实现方法 |
CN104050080A (zh) * | 2014-06-09 | 2014-09-17 | 汉柏科技有限公司 | 用户态调试linux内核的方法及系统 |
CN105094910A (zh) * | 2015-07-31 | 2015-11-25 | 上海斐讯数据通信技术有限公司 | 一种驱动函数用户态调试系统和方法 |
CN109753288A (zh) * | 2019-01-14 | 2019-05-14 | 杭州云象网络技术有限公司 | 一种适用于形式化验证的智能合约编译方法 |
CN111045793A (zh) * | 2020-03-13 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 一种在虚拟机中执行功能模块的方法和装置 |
WO2021002953A1 (en) * | 2019-07-03 | 2021-01-07 | Microsoft Technology Licensing, Llc | Execution environment and gatekeeper arrangement |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002014841A (ja) * | 2000-06-30 | 2002-01-18 | Esol Co Ltd | デバッグカーネルシステム |
US7424418B1 (en) * | 2003-12-31 | 2008-09-09 | Sun Microsystems, Inc. | Method for simulation with optimized kernels and debugging with unoptimized kernels |
US20050216895A1 (en) * | 2004-03-23 | 2005-09-29 | Tran Hieu T | Method and apparatus for remote debugging of kernel and application software |
US7818623B2 (en) * | 2005-10-25 | 2010-10-19 | Hewlett-Packard Development Company, L.P. | Kernel debugging in a cluster computing system |
US20200301676A1 (en) * | 2019-03-19 | 2020-09-24 | ThunderTech Inc. | Framework for GPU Code Generation and Debugging |
-
2021
- 2021-03-04 CN CN202110240693.1A patent/CN112905472A/zh active Pending
-
2022
- 2022-03-03 US US17/686,126 patent/US11768757B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096598A (zh) * | 2010-12-30 | 2011-06-15 | 广州市聚晖电子科技有限公司 | 一种虚拟机系统及其实现方法 |
CN104050080A (zh) * | 2014-06-09 | 2014-09-17 | 汉柏科技有限公司 | 用户态调试linux内核的方法及系统 |
CN105094910A (zh) * | 2015-07-31 | 2015-11-25 | 上海斐讯数据通信技术有限公司 | 一种驱动函数用户态调试系统和方法 |
CN109753288A (zh) * | 2019-01-14 | 2019-05-14 | 杭州云象网络技术有限公司 | 一种适用于形式化验证的智能合约编译方法 |
WO2021002953A1 (en) * | 2019-07-03 | 2021-01-07 | Microsoft Technology Licensing, Llc | Execution environment and gatekeeper arrangement |
CN111045793A (zh) * | 2020-03-13 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 一种在虚拟机中执行功能模块的方法和装置 |
Non-Patent Citations (4)
Title |
---|
BO CHEN等: "Automated Bug Detection and Replay for COTS Linux Kernel Modules with Concolic Execution", 《2020 IEEE 27TH INTERNATIONAL CONFERENCE ON SOFTWARE ANALYSIS, EVOLUTION AND REENGINEERING (SANER)》, pages 172 - 183 * |
MIKELOVERUST: "比原生更快:在 Linux 内核中运行 WebAssembly", Retrieved from the Internet <URL:https://cloud.tencent.com/developer/article/1459893> * |
张萌;柏桂枝;: "内核态与用户态混合调试代理技术研究", 指挥控制与仿真, no. 01, pages 111 - 120 * |
彭晓晖 等: "Web使能的物端计算系统", 《计算机研究与发展》, vol. 55, no. 03, pages 572 - 584 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230024949A1 (en) | 2021-07-19 | 2023-01-26 | Samsung Electronics Co., Ltd. | Universal mechanism to access and control a computational device |
US11966343B2 (en) | 2021-07-19 | 2024-04-23 | Samsung Electronics Co., Ltd. | Universal mechanism to access and control a computational device |
CN114327776A (zh) * | 2021-12-30 | 2022-04-12 | 支付宝(杭州)信息技术有限公司 | 用于智能合约的调试方法、调试设备和调试系统 |
CN116340188A (zh) * | 2023-05-26 | 2023-06-27 | 深流微智能科技(深圳)有限公司 | Gpu芯片渲染任务的调试方法及系统 |
CN116340188B (zh) * | 2023-05-26 | 2023-08-04 | 深流微智能科技(深圳)有限公司 | Gpu芯片渲染任务的调试方法及系统 |
CN117076338A (zh) * | 2023-10-18 | 2023-11-17 | 麒麟软件有限公司 | 基于kprobe的linux内核动态调试方法及系统 |
CN117076338B (zh) * | 2023-10-18 | 2024-01-30 | 麒麟软件有限公司 | 基于kprobe的linux内核动态调试方法及系统 |
CN117827277A (zh) * | 2024-03-05 | 2024-04-05 | 浙江省北大信息技术高等研究院 | 操作系统的多内核适配装置、方法及工业物联网操作系统 |
Also Published As
Publication number | Publication date |
---|---|
US20220283928A1 (en) | 2022-09-08 |
US11768757B2 (en) | 2023-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11768757B2 (en) | Kernel debugging system and method | |
CN108628635B (zh) | 获取参数名和局部变量名的方法、装置、设备及存储介质 | |
US7587612B2 (en) | Generating and communicating information on locations of program sections in memory | |
US11720344B2 (en) | Code hot-update method and device, storage medium, processor, and terminal | |
US8458681B1 (en) | Method and system for optimizing the object code of a program | |
US20140108761A1 (en) | Memory allocation with identification of requesting loadable kernel module | |
JP6458959B2 (ja) | 協調設計されたプロセッサ用動的言語アクセラレータ | |
US8645938B2 (en) | System and method for replacing code | |
KR20080047444A (ko) | 확장 가능한 메타 데이터 | |
US10268462B2 (en) | Emulation device, emulation method, and recording medium storing emulation program | |
CN101030241A (zh) | 基于Keil C51的软件保护开发的方法和系统 | |
KR102326280B1 (ko) | 데이터 처리 방법, 장치, 기기 및 매체 | |
CN106909441B (zh) | 一种基于jvm的磁盘直接i/o访问的方法 | |
US10891214B2 (en) | Transferring a debug configuration amongst carrier threads for debugging a carried thread | |
EP2941694B1 (en) | Capability based device driver framework | |
JP2991242B2 (ja) | マルチプロセッサコンピュータシステム使用方法 | |
CN117573338A (zh) | 一种资源分配方法、装置及电子设备 | |
CN114781322B (zh) | Cpu芯片仿真加速中针对无mmu环境的内存状态恢复方法 | |
KR101083271B1 (ko) | 액티브엑스 컨트롤 변환 시스템 및 방법 | |
CN116685946A (zh) | 在不停止应用的执行的情况下的更新的共享库的重新加载 | |
CN115604331A (zh) | 一种数据的处理系统、方法以及装置 | |
JP2022542007A (ja) | テスト・ベクタを使用した高水準コンストラクトの最適化の自動検証 | |
CN114253615B (zh) | 一种引导程序设置方法、装置、电子设备及存储介质 | |
US6904516B2 (en) | Mechanism for enabling efficient execution of an instruction | |
US10891213B2 (en) | Converting between a carried thread and a carrier thread for debugging the carried thread |
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 |