内核调试系统及方法技术方案

技术编号:28707855 阅读:18 留言:0更新日期:2021-06-05 23:15
本申请涉及一种内核调试系统及方法。该内核调试系统包括:用户接口模块,该用户接口模块被配置成编辑程序代码,以及输出程序代码的执行结果;编译模块,该编译模块被配置成将程序代码编译为目标文件;Kwasm引擎,该Kwasm引擎直接安装在操作系统的系统内核中,并且被配置成在内核态解释并执行目标文件,以得到程序代码的执行结果。基于该内核调试系统,使得用户可以像编写普通应用程序一样编写程序代码,即可使其运行于系统内核执行,而不需要关注系统内核的细节。统内核的细节。统内核的细节。

【技术实现步骤摘要】
内核调试系统及方法


[0001]本申请涉及软件调试领域,尤其涉及一种内核调试系统及方法。

技术介绍

[0002]在Linux系统中,往往只有专业人员才能修改和编译内核源码。然而,对内核不是非常熟悉的开发人员如果需要调试内核的某部分功能或者在内核运行状态下读取内核数据以进行测试或分析,则通常需要修改并全新编译内核,或者创建新的内核模块。对于修改并全新编译内核的情况,还需要更新目标系统的内核。对于创建新的内核模块的情况,则还需要将该新的内核模块与系统运行的内核源码进行匹配,因此这种方法对内核源码依赖很深,对编译环境要求较高。目前常用的内核调试方法可包括例如通过修改内核源码来进行内核调试的方法、Kgdb内核调试方法、Perf内核调试方法、内核ftrace功能调试方法等。但是,这些调试方法都较为专业、复杂,如果使用不当可能导致系统宕机。
[0003]因此,有必要提供一种简便易用的内核调试系统和方法,使得用户可以像编写普通应用程序一样编写程序代码,即可使其运行于系统内核执行,而不需要关注系统内核的细节。

技术实现思路

[0004]鉴于以上技术问题,本申请提供了一种内核调试系统和方法,使得用户可以像编写普通应用程序一样编写程序代码,即可使其运行于系统内核执行,而不需要关注系统内核的细节,而仅需了解所调用的内核接口即可。
[0005]在本申请的第一方面,提供了一种内核调试系统,包括:用户接口模块,所述用户接口模块被配置成编辑程序代码,以及输出程序代码的执行结果;编译模块,所述编译模块被配置成将所述程序代码编译为目标文件;Kwasm引擎,所述Kwasm引擎直接安装在操作系统的系统内核中,并且被配置成在内核态解释并执行所述目标文件,以得到所述执行结果。
[0006]在一种实现中,所述操作系统为Linux操作系统。
[0007]在一种实现中,所述目标文件为64位wasm格式的目标文件。
[0008]在一种实现中,所述Kwasm引擎包括:接收模块,所述接收模块被配置成接收操作指令,并将所述操作指令转发给管理模块,其中所述操作指令包括与所述目标文件相关联的操作指令;管理模块,所述管理模块被配置成响应于接收到所述操作指令,而提供对所述操作指令的辅助管理;解释执行模块,所述解释执行模块被配置成在内核态解释并执行所述目标文件,以生成所述执行结果;发送模块,所述发送模块被配置成将所述执行结果发送到所述用户接口模块。
[0009]在一种实现中,所述解释执行模块是在预定的wasm解释器的基础上实现的,但是所述解释执行模块所依赖的底层接口被配置为内核接口。
[0010]在一种实现中,所述解释执行模块被配置成支持对64位wasm格式的目标文件进行解释和执行。
[0011]在一种实现中,所述解释执行模块被配置成不支持浮点操作函数。
[0012]在一种实现中,所述Kwasm引擎还包括符号表生成模块,所述符号表生成模块被配置成基于系统符号表和内核头文件生成导出函数符号表。
[0013]在一种实现中,所述辅助管理包括:系统状态维护、文件管理、内存管理和消息队列管理。
[0014]在本申请的第二方面,提供了一种内核调试方法,所述内核调试方法是利用本申请的第一方面所述的内核调试系统来执行的,所述内核调试方法包括:经由用户接口模块编辑程序代码;经由编译模块将所述程序代码编译为目标文件;经由Kwasm引擎在内核态解释并执行所述目标文件,并将所述程序代码的执行结果发送到所述用户接口模块,以供进行显示。,
附图说明
[0015]图1示出了根据本申请的实施例的内核调试系统的结构框图;
[0016]图2示出了根据本申请的实施例的Kwasm引擎的结构示意图;
[0017]图3示出了根据本申请的实施例的管理模块的结构框图;
[0018]图4示出了根据本申请的实施例的内核调试方法的流程图。
具体实施方式
[0019]为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图对本专利技术的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本专利技术。但是本专利技术能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本专利技术内涵的情况下做类似改进,因此本专利技术不受下面公开的具体实施例的限制。
[0020]如图1所示,在一个实施例中,本申请提供了一种内核调试系统100。该内核调试系统100包括用户接口模块101、编译模块102和Kwasm引擎103(即用于嵌入内核的WebAssembly解释执行系统)。
[0021]用户接口模块101被配置成编辑程序代码(例如,用C语言编写的程序代码代码),以及输出该程序代码的执行结果。在一种实现中,用户接口模块101可以是用于显示和编辑开发人员编写的程序代码,以及显示相应的执行结果的用户界面。值得一提的是,在本文中,编辑程序代码可以指的是对程序代码进行编写或修改,包括输入新的程序代码或者修改之前已经输入的程序代码等。
[0022]编译模块102被配置成将程序代码编译为目标文件。目前,大部分中央处理单元(CPU)都是64位的,相应的系统内核(例如,Kernel)也是64位的地址范围,因此在一种实现中,该目标文件被配置为64位wasm格式(WebAssembly格式)的目标文件,从而保证wasm代码访问内核接口的操作可被正确执行。在一种实现中,可采用Clang 12.0以上版本的编译器来对64位wasm格式的目标文件进行编译。应了解,Clang是一个C语言、C++、Objective

C语言的轻量级编译器。当然,在本申请中,也可以采用其他编译器,只要其可以将程序代码编译为所需格式的目标文件即可。
[0023]在本申请中,Kwasm引擎103被实现为直接安装在系统内核中的一个服务,其被配置成在内核态解释并执行目标文件,以得到程序代码的执行结果。后面将会结合图2对
Kwasm引擎103更进一步详细的描述。在本申请中,内核态实际上是相对于用户态来说的。具体而言,内核态指的是电子设备的中央处理单元(CPU)运行于较高的特权级别,具有较高的系统权限,可操作更多的系统资源,如中断向量表、特殊寄存器等,而用户态则指的是中央处理单元运行于最低的特权级别,例如普通的应用程序运行于用户态,当需要操作系统资源时,用户态程序需要通过操作系统调用进入内核态,由内核提供的接口实现指定资源的操作。
[0024]在一种实现中,如图1所示,用户接口模块101和编译模块102均实现在上位机中,kwasm引擎103直接安装在下位机(或目标机)上的操作系统(例如,Linux系统)的系统内核(Kernal)中。在本申请中,上位机指的是用于发出操作命令的电子设备,下位机指的是用于处理操作命令的电子设备,下位机上一般安装有Linux之类的操作系统。在本申请中,电子设备可表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内核调试系统,其特征在于,包括:用户接口模块,所述用户接口模块被配置成编辑程序代码,以及输出程序代码的执行结果;编译模块,所述编译模块被配置成将所述程序代码编译为目标文件;Kwasm引擎,所述Kwasm引擎直接安装在操作系统的系统内核中,并且被配置成在内核态解释并执行所述目标文件,以得到所述执行结果。2.根据权利要求1所述的内核调试系统,其特征在于,所述操作系统为Linux操作系统。3.根据权利要求1所述的内核调试系统,其特征在于,所述目标文件为64位wasm格式的目标文件。4.根据权利要求1所述的内核调试系统,其特征在于,所述Kwasm引擎包括:接收模块,所述接收模块被配置成接收操作指令,并将所述操作指令转发给管理模块,其中所述操作指令包括与所述目标文件相关联的操作指令;管理模块,所述管理模块被配置成响应于接收到所述操作指令,而提供对所述操作指令的辅助管理;解释执行模块,所述解释执行模块被配置成在内核态解释并执行所述目标文件,以生成所述执行结果;发送模块,所述发送模块被配置成将所述执行结果发送到所述用户接口模块。5.根据权利要求4所述的内核调试系统,...

【专利技术属性】
技术研发人员:刘海英
申请(专利权)人:黑芝麻智能科技上海有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1