CN114327648B - 一种驱动调试方法、装置、电子设备及存储介质 - Google Patents
一种驱动调试方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114327648B CN114327648B CN202111546935.6A CN202111546935A CN114327648B CN 114327648 B CN114327648 B CN 114327648B CN 202111546935 A CN202111546935 A CN 202111546935A CN 114327648 B CN114327648 B CN 114327648B
- Authority
- CN
- China
- Prior art keywords
- operating system
- program
- debugged
- simulation
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000012545 processing Methods 0.000 claims abstract description 83
- 238000004088 simulation Methods 0.000 claims abstract description 60
- 230000002159 abnormal effect Effects 0.000 claims abstract description 31
- 230000006870 function Effects 0.000 claims description 41
- 230000005856 abnormality Effects 0.000 claims description 32
- 230000026676 system process Effects 0.000 claims description 2
- 230000004044 response Effects 0.000 description 6
- 238000011161 development Methods 0.000 description 4
- 238000012827 research and development Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000013307 optical fiber Substances 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种驱动调试方法、装置、电子设备及存储介质,该方法包括:在当前操作系统的应用层创建模拟操作系统;所述模拟操作系统能够模拟所述当前操作系统的接口;将待调试程序加载进所述模拟操作系统;所述待调试程序为可执行程序;控制所述带待调试程序在所述模拟操作系统内模拟运行;接收中央处理器回传的异常信息;对所述异常信息进行处理,并将处理结果回传所述中央处理器;根据所述异常信息的处理记录生成工作日志。本申请提供的驱动调试方法,能够在当前操作系统的应用层创建一个模拟操作系统,使得待调试程序在模拟操作系统中进行运行。这样,仅需要一台计算机,便能够完成待调试程序的调试工作,避免了需要使用两台计算的繁琐操作。
Description
技术领域
本发明涉及驱动调试领域,尤其涉及一种驱动调试方法、装置、电子设备及存储介质。
背景技术
在现有的开发调试环境配置中,调驱动时需要建立两台机器之间的连接,用到串口或者网络,但是现有的技术中存在的问题是驱动调试开发复杂,环境配置复杂,电脑在开发应用程序出错的时候需要重启,比较耽误时间,另一方面在开发驱动的时候在被调试的机器上需要安装联机调试的sdk,jdk,然后配置开发环境,开发环境的建立很繁琐。
发明内容
有鉴于此,本发明提供一种驱动调试方法、装置、电子设备及存储介质,至少部分解决现有技术中存在的问题。
本申请提供一种驱动调试方法,包括:
在当前操作系统的应用层创建模拟操作系统;所述模拟操作系统能够模拟所述当前操作系统的接口;
将待调试程序加载进所述模拟操作系统;所述待调试程序为可执行程序;
控制所述带待调试程序在所述模拟操作系统内模拟运行;
接收中央处理器回传的异常信息;
对所述异常信息进行处理,并将处理结果回传所述中央处理器;
根据所述异常信息的处理记录生成工作日志。
在本申请的一种示例性实施例中,所述控制所述带待调试程序在所述模拟操作系统内模拟运行,包括:
控制所述待调试程序开始运行;
接收所述待调试程序的调用请求,以模拟数据响应所述调用请求;
其中,所述调用请求包括接口调用请求和/或硬件调用请求。
在本申请的一种示例性实施例中,在所述在当前操作系统的应用层创建模拟操作系统之后,所述方法还包括:
获取当前操作系统的原始链表,根据所述模拟操作系统修改所述原始链表,得到修改后链表;
控制所述中央处理器以所述修改后链表进行执行;以使所述中央处理器在发现异常时,将所述异常对应的异常信息发送至所述模拟操作系统。
在本申请的一种示例性实施例中,所述对所述异常信息进行处理,并将处理结果回传所述中央处理器,包括:
将所述异常信息输入异常处理函数;
获取所述异常处理函数的处理结果,并将处理结果回传所述中央处理器;
其中,所述异常处理函数的输入口与所述修改后链表的信息对应。
在本申请的一种示例性实施例中,在所述将所述异常信息输入异常处理函数之后,所述方法还包括:
在所述异常处理函数无法完成对所述异常信息的处理的情况下,将所述异常信息发送至所述当前操作系统。
在本申请的一种示例性实施例中,所述异常信息包括异常地址和/或异常类型;
所述异常地址所述中央处理器根据异常通过堆栈回溯后定位到的。
在本申请的一种示例性实施例中,在所述根据所述异常信息的处理记录生成工作日志之后,所述方法还包括:
根据所述工作日志确定所述待处理程序是否符合通过要求;
在符合所述通过要求的情况下,将所述待调试程序加载至所述当前操作系统的内核层,以及控制所述待调试程序在所述内核层运行。
根据本申请的一个方面,提供一种驱动调试装置,包括:
创建模块,用于在当前操作系统的应用层创建模拟操作系统;所述模拟操作系统能够模拟所述当前操作系统的接口;
加载模块,用于将待调试程序加载进所述模拟操作系统;所述待调试程序为可执行程序;
运行模块,用于控制所述带待调试程序在所述模拟操作系统内模拟运行;
接收模块,用于接收中央处理器回传的异常信息;
处理模块,用于对所述异常信息进行处理,并将处理结果回传所述中央处理器;
生成模块,用于根据所述异常信息的处理记录生成工作日志。
根据本申请的一个方面,提供一种电子设备,包括处理器和存储器;
所述处理器通过调用所述存储器存储的程序或指令,用于执行上述任一项所述方法的步骤。
根据本申请的一个方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行上述任一项所述方法的步骤。
本申请提供的一种驱动调试方法,能够在当前操作系统的应用层创建一个模拟操作系统,使得待调试程序在模拟操作系统中进行运行。这样,仅需要一台计算机,便能够完成待调试程序的调试工作,避免了需要使用两台计算的繁琐操作。同时,由于模拟操作系统是运行在当前操作系统的应用层的,其响应速度更快,使得工作日志输出变快,且能够直接对其进行调试,使得操作更加便捷。由于待调试程序在模拟操作系统中使用的接口,都是模拟操作系统模拟出的虚拟接口,这样待调试程序在运行时,实际上并不会调用计算机实际的硬件(如硬盘、显卡等),使得即使遇到了会导致系统崩溃的异常出现,也只是模拟操作系统崩溃,并不会导致当前操作系统的崩溃。使得即使系统崩溃也不回出现蓝屏等死机现象,故而不用进行计算机的重启,进一步加快的待调试程序的调试效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本实施例提供的一种驱动调试方法的流程图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合;并且,基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本申请,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
如图一所示,本实施例提供一种驱动调试方法,该方法包括以下步骤:
步骤S100,在当前操作系统的应用层创建模拟操作系统;所述模拟操作系统能够模拟所述当前操作系统的接口;
步骤S200,将待调试程序加载进所述模拟操作系统;所述待调试程序为可执行程序;
步骤S300,控制所述带待调试程序在所述模拟操作系统内模拟运行;
步骤S400,接收中央处理器回传的异常信息;
步骤S500,对所述异常信息进行处理,并将处理结果回传所述中央处理器;
步骤S600,根据所述异常信息的处理记录生成工作日志。
本实施例在实际应用时,可依托于一个可执行的计算机程序(例如虚拟化工具),用户可直接使用虚拟化工具的功能直接进行模拟操作系统的建立,使得模拟操作系统在虚拟化工具的控制和监控之下。当然,用户也可通过直接建立模拟操作系统,并使用监控函数或直接赋予模拟操作系统监控功能等方式实现。
本实施例中,以使用虚拟化工具在当前操作系统创建模拟操作系统为例进行说明。虚拟化工具可以包括应用层加载器和内核层加载器。其中,应用层加载器用于在当前操作系统的应用层建立模拟操作系统。同时也具有将待调试程序加载进模拟操作系统的功能。
本实施例创建的模拟操作系统,能够根据当前操作系统的端口数据进程环境变量和线程环境变量等模拟出对应的数据和变量信息。使得待调试系统能够直接在模拟操作系统中运行。
本实施例提供的一种驱动调试方法,能够在当前操作系统的应用层创建一个模拟操作系统,使得待调试程序在模拟操作系统中进行运行。这样,仅需要一台计算机,便能够完成待调试程序的调试工作,避免了需要使用两台计算的繁琐操作。同时,由于模拟操作系统是运行在当前操作系统的应用层的,其响应速度更快,使得工作日志输出变快,且能够直接对其进行调试,使得操作更加便捷。由于待调试程序在模拟操作系统中使用的接口,都是模拟操作系统模拟出的虚拟接口,这样待调试程序在运行时,实际上并不会调用计算机实际的硬件(如硬盘、显卡等),使得即使遇到了会导致系统崩溃的异常出现,也只是模拟操作系统崩溃,并不会导致当前操作系统的崩溃。使得即使系统崩溃也不回出现蓝屏等死机现象,故而不用进行计算机的重启,只需要直接重新创建模拟操作系统即可(可理解为再次开始执行本方法),由于是在应用层建立的模拟操作系统,根据操作系统的特性应用层直接创建模拟操作系统就相当于重启了一个可执行程序一样,并不涉及计算机的重启等,故而速度很快,进一步加快的待调试程序的调试效率。
在本申请的一种示例性实施例中,所述步骤S300,具体包括:
步骤S310,控制所述待调试程序开始运行;
步骤S320,接收所述待调试程序的调用请求,以模拟数据响应所述调用请求;
其中,所述调用请求包括接口调用请求和/或硬件调用请求。
本实施例中,所述调用请求可以指代待调试程序所发出的任意请求或指令,不仅仅限制于调用类,而是泛指待调试程序发出的需要程序以外的软件、系统或硬件等予以响应的指令。
由于待调试程序是在模拟操作系统中进行运行的,其调用接口和硬件的指令都是直接发送至模拟操作系统的。模拟操作系统在接收到这些调用指令后,并不会真正的去调用相应的接口和硬件,而是会根据调用指令,模拟相关的数据和操作,并回传相应的信息。具体的,模拟操作系统可以根据待调试程序发出的请求或指令,以及自身的环境变量以及当前操作的环境变量等信息,作出响应的模拟,生成响应的数据进行回传。环境变量可以包括线程环境变量和进程环境变量等。
当然,由于模拟操作系统的工作还是在当前操作系统内完成的,故而,在运行时还是会使用中央处理器(CPU)这类硬件,例如对待调试程序的模拟运行等,都需要中央处理器进行实际运算。本实施例中所说的待调试程序和模拟操作系统并不会调用所在计算机的真实硬件,实际指代的是为了待调试程序在真实运行时,调用硬件和接口等的操作。
本实施例通过上述方法,使得待调试程序能够顺利在的模拟操作系统中进行运行,由于其运行使用的都是模拟数据,并不会实际去调用响应的硬件。故而,即使发生无法处理的异常,也不会导致所在的计算机发生系统崩溃等问题,避免了在调试过程中,反复重启计算机的问题,提升了调试效率。
在本申请的一种示例性实施例中,在步骤S100之后,所述方法还包括:
步骤S110,获取当前操作系统的原始链表,根据所述模拟操作系统修改所述原始链表,得到修改后链表。
步骤S120,控制所述中央处理器以所述修改后链表进行执行;以使所述中央处理器在发现异常时,将所述异常对应的异常信息发送至所述模拟操作系统。
在正常的操作系统内,在中央处理器处理过程中发现异常时,会根据链表去进行异常的响应和处理。但是,这样的话,想要重新定位到异常对应的待调试程序中的导致异常发生的代码字段,会非常困难。在一般的处理方法中,都是通过响应的代码函数,在异常发生后,重新对待调试程序的代码段进行检测,或重新对中央处理器的相关数据进行分析,才有可能获知异常的发生原因等。而本实施例中,提供了一种更加便捷的方式来获取异常信息。具体为,通过根据模拟操作系统的环境变量和/或虚拟化工具的参数信息等信息,修改中央处理器执行的链表,使得中央处理器能够在执行修改后链表时,在发现异常的情况下,先将异常信息发送至模拟操作系统或虚拟化工具,使得模拟操作系统或虚拟化工具能够第一时间获知异常信息并进行定位,此处定位指的是定位到待调试程序引起异常的相关代码。进一步说明为,本实施例会将在链表的最后一层修改成模拟操作系统或虚拟化工具的异常处理函数,使其优先进入我们的异常处理函数进行处理。此时,若异常处理函数能够正常对异常进行处理,则会将处理后的信息以及处理正常的代码或指令重新发送至中央处理器,使得待调试程序能够继续运行。
具体的异常信息处理方法如下:
在本申请的一种示例性实施例中,所述步骤S500,具体包括:
步骤S510,将所述异常信息输入异常处理函数;
步骤S520,获取所述异常处理函数的处理结果,并将处理结果回传所述中央处理器;
其中,所述异常处理函数的输入口与所述修改后链表的信息对应。
具体的,异常处理函数可以表现为一个函数集合或集成的异常处理模块,其中可包含多个用于对异常进行处理的子函数。每一子函数可以对应一个或一种异常的处理。该函数集合或异常处理模块,可以是根据待调试程序的功能以及类型等信息,对应设置的,可以专门用于对待调试程序的异常进行处理。当然,为了能够将异常信息发送至正确的子函数,该函数集合或异常处理模块中,可设置响应的用于分析异常类别和属性的子函数或子模块,以使得每一异常信息能够顺利进入对应的子还书或子模块。
在本申请的一种示例性实施例中,在所述步骤S510之后,所述方法还包括:
步骤S511,在所述异常处理函数无法完成对所述异常信息的处理的情况下,将所述异常信息发送至所述当前操作系统。
由于异常的发生可能会是多种且无法准确预测的,研发人员很难对所有异常进行穷举并设置响应的异常处理函数或异常处理模块。同时,由于还存在较为常见的异常,若将这些异常对应的处理函数都添加到函数集合或异常处理模块中,会使得体量大大增加。本实施例中,为了进一步减少上述问题的影响。
在异常处理函数无法对异常信息进行处理或没有设置对一个的处理函数的情况下,会将异常信息发送至当前操作系统(当前操作系统中存有一些异常相应的处理函数,此为现有技术)。这样,这类问题可以使用当前操作系统自身功能进行处理。也就减轻了有些异常无法直接处理的问题,也减小了函数集合或异常处理模块的体量,以及减小了研发人员的工作量。
值得说明的是,当前操作系统在处理接收到的异常信息时,只是对响应的异常进行响应,并不涉及到待调试程序的实际要做的动作。故而也不会发生计算机死机等问题。
在本申请的一种示例性实施例中,所述异常信息包括异常地址和/或异常类型;
所述异常地址所述中央处理器根据异常通过堆栈回溯后定位到的。
在前文的叙述中可以得知,在一般的驱动调试时,定位异常出现位置、地址或节点时,是通过调试程序的相关代码语句完成的。但是这样处理会存在代码编写难度大、定位难度大或不精准等问题。而中央处理器本身具有堆栈回溯的功能(能够对异常对异常发生的位置、地址或节点进行定位),但该功能是中央处理器在执行链表时触发的,且通常是用于操作系统本身的异常而设置的,并不会直接对其他程序的异常进行堆栈回溯。
而本实施例中,通过修改当前操作系统的链表,使得中央处理器在执行修改后链表时,能够直接启动堆栈回溯功能,对异常发生的位置、地址或节点等进行定位和/或分析,并将得到的结果加入到异常信息中发回模拟操作系统。故而,使得本发放能够借用中央处理器的自身功能对异常进行定位。使得异常处理的速度和效率更高,也降低了研发人员对代码编辑的难度。
在本申请的一种示例性实施例中,在所述步骤S600之后,所述方法还包括:
步骤S700,根据所述工作日志确定所述待处理程序是否符合通过要求。
步骤S800,在符合所述通过要求的情况下,将所述待调试程序加载至所述当前操作系统的内核层,以及控制所述待调试程序在所述内核层运行。
步骤S900,在不符合所述通过要求的情况下,启动调试程序的指示。
工作日志是用于研发人员查看待调试程序在运行过程了执行了哪些操作的,当然,若存在已经处理过的异常,也会记录相应的异常信息。研发人员可以通过工作日志定位到一些操作以及异常的发生位置(包括已处理和/或未处理的),从而对相应的代码进行修改和调整等。由于本实施例中,待调试程序在一开始是运行在应用层的,且使用的是模拟数据。有些问题会存在在应用层无法发现的问题,且即使没有问题,在正常的操作流程中,驱动类程序也是要运行在内核层的。故而,本实施例中,在通过工作日志确定待调试程序符合所述通过要求的情况下,会使用内核层加载器(虚拟化工具内部设置有应用层加载器和内核层加载器)将待调试程序直接加载进内核层运行。而不需要研发人员再重新调整待调程序的设置使其运行在内核层,进一步提升了研发审人员的调试效率。
需要补充说明的是,本实施例提供的方法还可以用于检测待调试程序中,是否具有恶意代码。由于内核层是特权层,如果直接在内核层进行运行,来不及发现和处理恶意代码。而本实施例中,由于在应用层进行模拟运行,很多问题直接在应用层就能被发现出来,且由于并没有实际运行,也不会产生破坏。例如,可以通过待调试程序的工作日志,查看其是否调用了本不该调用的硬件或地址,或做了一些反常的动作。这些工作日志,受到操作系统的架构影响,在应用层输出远比在内核层输出容易。故而可以用于发现,一些在内核层较难检测到的异常或恶意行为,同时还大大加快了研发人员的调试效率。
根据本申请的一个方面,提供一种驱动调试装置,包括:
创建模块,用于在当前操作系统的应用层创建模拟操作系统;所述模拟操作系统能够模拟所述当前操作系统的接口;
加载模块,用于将待调试程序加载进所述模拟操作系统;所述待调试程序为可执行程序;
运行模块,用于控制所述带待调试程序在所述模拟操作系统内模拟运行;
接收模块,用于接收中央处理器回传的异常信息;
处理模块,用于对所述异常信息进行处理,并将处理结果回传所述中央处理器;
生成模块,用于根据所述异常信息的处理记录生成工作日志。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
根据本发明的这种实施方式的电子设备。电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
电子设备以通用计算设备的形式表现。电子设备的组件可以包括但不限于:上述至少一个处理器、上述至少一个储存器、连接不同系统组件(包括储存器和处理器)的总线。
其中,所述储存器存储有程序代码,所述程序代码可以被所述处理器执行,使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
储存器可以包括易失性储存器形式的可读介质,例如随机存取储存器(RAM)和/或高速缓存储存器,还可以进一步包括只读储存器(ROM)。
储存器还可以包括具有一组(至少一个)程序模块的程序/实用工具,这样的程序模块包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线可以为表示几类总线结构中的一种或多种,包括储存器总线或者储存器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
电子设备也可以与一个或多个外部设备(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备交互的设备通信,和/或与使得该电子设备能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口进行。并且,电子设备还可以通过网络适配器与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器通过总线与电子设备的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (9)
1.一种驱动调试方法,其特征在于,包括:
在当前操作系统的应用层创建模拟操作系统;所述模拟操作系统能够模拟所述当前操作系统的接口;
将待调试程序加载进所述模拟操作系统;所述待调试程序为可执行程序;
控制所述待调试程序在所述模拟操作系统内模拟运行;
所述模拟操作系统接收中央处理器回传的异常信息;
所述模拟操作系统对所述异常信息进行处理,并将处理结果回传所述中央处理器;
根据所述异常信息的处理记录生成工作日志;
在所述在当前操作系统的应用层创建模拟操作系统之后,所述方法还包括:
获取当前操作系统的原始链表,根据所述模拟操作系统修改所述原始链表,得到修改后链表;其中,所述模拟操作系统的异常处理函数的输入口与所述修改后链表的信息对应;
控制所述中央处理器以所述修改后链表进行执行;以使所述中央处理器在发现异常时,将所述异常对应的异常信息发送至所述模拟操作系统。
2.根据权利要求1所述的驱动调试方法,其特征在于,所述控制所述待调试程序在所述模拟操作系统内模拟运行,包括:
控制所述待调试程序开始运行;
接收所述待调试程序的调用请求,以模拟数据响应所述调用请求;
其中,所述调用请求包括接口调用请求和/或硬件调用请求。
3.根据权利要求1所述的驱动调试方法,其特征在于,所述对所述异常信息进行处理,并将处理结果回传所述中央处理器,包括:
将所述异常信息输入异常处理函数;
获取所述异常处理函数的处理结果,并将处理结果回传所述中央处理器。
4.根据权利要求3所述的驱动调试方法,其特征在于,在所述将所述异常信息输入异常处理函数之后,所述方法还包括:
在所述异常处理函数无法完成对所述异常信息的处理的情况下,将所述异常信息发送至所述当前操作系统。
5.根据权利要求1-4任一项所述的驱动调试方法,其特征在于,所述异常信息包括异常地址和/或异常类型;
所述异常地址所述中央处理器根据异常通过堆栈回溯后定位到的。
6.根据权利要求1-4任一项所述的驱动调试方法,其特征在于,在所述根据所述异常信息的处理记录生成工作日志之后,所述方法还包括:
根据所述工作日志确定所述待调试程序是否符合通过要求;
在符合所述通过要求的情况下,将所述待调试程序加载至所述当前操作系统的内核层,以及控制所述待调试程序在所述内核层运行。
7.一种驱动调试装置,其特征在于,包括:
创建模块,用于在当前操作系统的应用层创建模拟操作系统;所述模拟操作系统能够模拟所述当前操作系统的接口;
加载模块,用于将待调试程序加载进所述模拟操作系统;所述待调试程序为可执行程序;
运行模块,用于控制所述待调试程序在所述模拟操作系统内模拟运行;
接收模块,用于接收中央处理器回传的异常信息;
处理模块,用于对所述异常信息进行处理,并将处理结果回传所述中央处理器;
生成模块,用于根据所述异常信息的处理记录生成工作日志;
所述加载模块,还用于在所述在当前操作系统的应用层创建模拟操作系统之后,获取当前操作系统的原始链表,根据所述模拟操作系统修改所述原始链表,得到修改后链表;其中,所述模拟操作系统的异常处理函数的输入口与所述修改后链表的信息对应;
控制所述中央处理器以所述修改后链表进行执行;以使所述中央处理器在发现异常时,将所述异常对应的异常信息发送至所述模拟操作系统。
8.一种电子设备,其特征在于,包括处理器和存储器;
所述处理器通过调用所述存储器存储的程序或指令,用于执行如权利要求1至6任一项所述方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如权利要求1至6任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111546935.6A CN114327648B (zh) | 2021-12-16 | 2021-12-16 | 一种驱动调试方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111546935.6A CN114327648B (zh) | 2021-12-16 | 2021-12-16 | 一种驱动调试方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114327648A CN114327648A (zh) | 2022-04-12 |
CN114327648B true CN114327648B (zh) | 2024-02-02 |
Family
ID=81053048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111546935.6A Active CN114327648B (zh) | 2021-12-16 | 2021-12-16 | 一种驱动调试方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114327648B (zh) |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1047931A (zh) * | 1989-05-17 | 1990-12-19 | 国际商业机器公司 | 不采用一个或二个操作系统的服务而在不同处理器中运行的应用程序之间直接传送信息的方法及装置 |
US6081665A (en) * | 1997-12-19 | 2000-06-27 | Newmonics Inc. | Method for efficient soft real-time execution of portable byte code computer programs |
CN1645339A (zh) * | 2005-01-31 | 2005-07-27 | 浙江大学 | 在嵌入式系统模拟器上调试应用程序的方法 |
CN101430662A (zh) * | 2008-12-09 | 2009-05-13 | 东信和平智能卡股份有限公司 | Java语言程序与虚拟机程序共同调试的方法 |
CN101887393A (zh) * | 2010-07-01 | 2010-11-17 | 中兴通讯股份有限公司 | 基于半虚拟化技术的设备故障复现方法及系统 |
CN102214137A (zh) * | 2010-04-06 | 2011-10-12 | 华为技术有限公司 | 调试方法和调试设备 |
CN103853591A (zh) * | 2012-11-30 | 2014-06-11 | 国际商业机器公司 | 用于虚拟机管理器获取异常指令的装置和控制方法 |
US8776028B1 (en) * | 2009-04-04 | 2014-07-08 | Parallels IP Holdings GmbH | Virtual execution environment for software delivery and feedback |
CN107450962A (zh) * | 2017-07-03 | 2017-12-08 | 北京东土科技股份有限公司 | 一种虚拟化运行环境下的异常处理方法、装置及系统 |
CN111209193A (zh) * | 2019-12-30 | 2020-05-29 | 北京健康之家科技有限公司 | 程序的调试方法及装置 |
US10726127B1 (en) * | 2015-06-30 | 2020-07-28 | Fireeye, Inc. | System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer |
CN111930472A (zh) * | 2020-08-19 | 2020-11-13 | 曙光信息产业(北京)有限公司 | 一种代码调试方法、装置、电子设备及存储介质 |
CN112463286A (zh) * | 2019-09-09 | 2021-03-09 | 北京奇虎科技有限公司 | 用于虚拟机操作系统的异常事件监控方法及系统 |
CN112764981A (zh) * | 2021-01-22 | 2021-05-07 | 山东云海国创云计算装备产业创新中心有限公司 | 一种协同测试系统及方法 |
CN113342702A (zh) * | 2021-08-04 | 2021-09-03 | 武汉天喻信息产业股份有限公司 | 一种应用程序测试方法、装置、设备及可读存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7574709B2 (en) * | 2004-04-30 | 2009-08-11 | Microsoft Corporation | VEX-virtual extension framework |
US20060070027A1 (en) * | 2004-09-24 | 2006-03-30 | Ralf Schmelter | Enhancing exception information in virtual machines |
US8701088B2 (en) * | 2010-05-28 | 2014-04-15 | Red Hat, Inc. | Generating backtracing information for software debugging of software programs running on virtual machines |
US8612937B2 (en) * | 2011-08-25 | 2013-12-17 | International Business Corporation | Synchronously debugging a software program using a plurality of virtual machines |
US8892802B2 (en) * | 2012-01-01 | 2014-11-18 | International Business Machines Corporation | Enhancing interrupt handling in a virtual environment |
US20140282414A1 (en) * | 2013-03-14 | 2014-09-18 | Cadence Design Systems, Inc. | Method and system for debugging of a program |
US9208015B2 (en) * | 2013-06-18 | 2015-12-08 | Vmware, Inc. | Hypervisor remedial action for a virtual machine in response to an error message from the virtual machine |
US9772870B2 (en) * | 2015-01-29 | 2017-09-26 | Red Hat Israel, Ltd. | Delivering interrupts to virtual machines executing privileged virtual machine functions |
-
2021
- 2021-12-16 CN CN202111546935.6A patent/CN114327648B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1047931A (zh) * | 1989-05-17 | 1990-12-19 | 国际商业机器公司 | 不采用一个或二个操作系统的服务而在不同处理器中运行的应用程序之间直接传送信息的方法及装置 |
US6081665A (en) * | 1997-12-19 | 2000-06-27 | Newmonics Inc. | Method for efficient soft real-time execution of portable byte code computer programs |
CN1645339A (zh) * | 2005-01-31 | 2005-07-27 | 浙江大学 | 在嵌入式系统模拟器上调试应用程序的方法 |
CN101430662A (zh) * | 2008-12-09 | 2009-05-13 | 东信和平智能卡股份有限公司 | Java语言程序与虚拟机程序共同调试的方法 |
US8776028B1 (en) * | 2009-04-04 | 2014-07-08 | Parallels IP Holdings GmbH | Virtual execution environment for software delivery and feedback |
CN102214137A (zh) * | 2010-04-06 | 2011-10-12 | 华为技术有限公司 | 调试方法和调试设备 |
CN101887393A (zh) * | 2010-07-01 | 2010-11-17 | 中兴通讯股份有限公司 | 基于半虚拟化技术的设备故障复现方法及系统 |
CN103853591A (zh) * | 2012-11-30 | 2014-06-11 | 国际商业机器公司 | 用于虚拟机管理器获取异常指令的装置和控制方法 |
US10726127B1 (en) * | 2015-06-30 | 2020-07-28 | Fireeye, Inc. | System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer |
CN107450962A (zh) * | 2017-07-03 | 2017-12-08 | 北京东土科技股份有限公司 | 一种虚拟化运行环境下的异常处理方法、装置及系统 |
CN112463286A (zh) * | 2019-09-09 | 2021-03-09 | 北京奇虎科技有限公司 | 用于虚拟机操作系统的异常事件监控方法及系统 |
CN111209193A (zh) * | 2019-12-30 | 2020-05-29 | 北京健康之家科技有限公司 | 程序的调试方法及装置 |
CN111930472A (zh) * | 2020-08-19 | 2020-11-13 | 曙光信息产业(北京)有限公司 | 一种代码调试方法、装置、电子设备及存储介质 |
CN112764981A (zh) * | 2021-01-22 | 2021-05-07 | 山东云海国创云计算装备产业创新中心有限公司 | 一种协同测试系统及方法 |
CN113342702A (zh) * | 2021-08-04 | 2021-09-03 | 武汉天喻信息产业股份有限公司 | 一种应用程序测试方法、装置、设备及可读存储介质 |
Non-Patent Citations (2)
Title |
---|
一种基于应用开发平台的内核调试环境;石怀东, 杨子江, 董金祥;计算机应用研究(第01期);全文 * |
基于软件模拟的虚拟机系统故障插入工具;车建华;何钦铭;陈建海;王备;;浙江大学学报(工学版)(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114327648A (zh) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7209034B2 (ja) | エッジコンピューティングテスト方法、装置、機器及び読み取り可能な記憶媒体 | |
CN109783342B (zh) | 脚本调试方法、设备及计算机存储介质 | |
KR102268355B1 (ko) | 클라우드 배치 기반구조 검증 엔진 | |
US8671393B2 (en) | Collaborative software debugging in a distributed system with client-specific dynamic breakpoints | |
CN102667730B (zh) | 设计时调试 | |
EP2915047B1 (en) | System and method for debugging domain specific languages | |
US20120084758A1 (en) | Collaborative Software Debugging In A Distributed System With Client-Specific Variable Evaluation | |
US9009673B2 (en) | Collaborative software debugging in a distributed system with collaborative step over operation | |
US20120278790A1 (en) | Collaborative Software Debugging In A Distributed System With Real-Time Variable Modification Indicators | |
US8806438B2 (en) | Collaborative software debugging in a distributed system with variable-specific messages | |
WO2012177395A1 (en) | N-way runtime interoperative debugging | |
US20140282428A1 (en) | Embedding and executing trace functions in code to gather trace data | |
CN111176629A (zh) | 一种应用开发的方法和装置 | |
US7546585B2 (en) | Method, system and computer program product for testing computer programs | |
US20120272218A1 (en) | Collaborative Software Debugging In A Distributed System With Stacked Run-To-Cursor Commands | |
CN114138644A (zh) | Bmc调试方法及监控方法、系统、装置、设备、介质 | |
US20120102467A1 (en) | Collaborative Software Debugging In A Distributed System With Client-Specific Display Location Upon Event Notification | |
CN113127329B (zh) | 脚本调试方法、装置及计算机存储介质 | |
CN114327648B (zh) | 一种驱动调试方法、装置、电子设备及存储介质 | |
CN115729679A (zh) | 任务处理方法及装置、计算机可读存储介质、电子设备 | |
CN111078570B (zh) | 基于界面框架的参数格式检测方法、装置、设备和介质 | |
CN114328090A (zh) | 一种程序监控方法、装置、电子设备及存储介质 | |
CN112559336A (zh) | 自适应调试异构计算芯片的方法、装置、系统及主板芯片 | |
CN114266037B (zh) | 一种样本检测方法、装置、电子设备及存储介质 | |
KR102600294B1 (ko) | 차량용 플랫폼을 위한 arinc 기반 운영체제 헬스 모니터링 설정 코드 자동 생성 장치 및 방법 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |