CN103617116A - 基于输入输出模拟的交互式设备驱动调试方法及装置 - Google Patents
基于输入输出模拟的交互式设备驱动调试方法及装置 Download PDFInfo
- Publication number
- CN103617116A CN103617116A CN201310565938.3A CN201310565938A CN103617116A CN 103617116 A CN103617116 A CN 103617116A CN 201310565938 A CN201310565938 A CN 201310565938A CN 103617116 A CN103617116 A CN 103617116A
- Authority
- CN
- China
- Prior art keywords
- input
- equipment
- configuration information
- mistake
- device based
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及计算机安全防范技术领域,公开了一种基于输入输出模拟的交互式设备驱动调试方法,包括步骤:S1:在驱动正常工作时,记录驱动输出至设备的配置信息及设备返回的输入信息,所述输入信息包含设备寄存器返回的状态信息;S2:将所述配置信息及设备返回的输入信息存储在日志文件中;S3:出现错误需要调试时,从所述日志文件中提取所述配置信息和所述输入信息,替代设备与驱动交互,对错误进行重放,以辅助进行驱动调试。还提供了一种基于输入输出模拟的交互式设备驱动调试装置。本发明支持对错误进行重放,方便进行错误定位和修正,支持设备驱动的离线调试,提高了驱动开发和移植效率,同时降低程序员的工作量,提高驱动的可靠性。
Description
技术领域
本发明涉及计算机安全防范技术领域,具体涉及一种基于输入输出模拟的交互式设备驱动调试方法及装置。
背景技术
在通用操作系统中,驱动代码占据系统大量代码,常常由于设备手册描述不细致等各种原因使得驱动中含有大量错误,多份报告中指出,Linux中,驱动代码占据系统代码的70%,其中驱动部分的错误是其它部分的5-7倍。即使,在商业化的Windows XP系统中,85%的崩溃也是由于驱动错误引起。
而在驱动开发中,常常由于缺少设备和调试手段,开发的驱动测试较少,使得在使用时常常隐藏大量错误。另外,开发大型驱动时,常常存在模块分工协作,若依赖于硬件的测试则会大大影响驱动的开发效率,出现错误的查错效率较低,出现问题时无法准确判断错误出现的位置。驱动移植同样是一件较为复杂的工作,在不同的系统上,由于系统调用等实现功能可能存在细微区别,因此移植后可能出现系统相关的错误,如DMA起始地址不能对齐等。
总之,现有的调试方法无法有效地对驱动程序进行调试,找出错误位置。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何实现对驱动程序的有效调试,准确找出错误位置。
(二)技术方案
为解决上述技术问题,本发明提供了一种基于输入输出模拟的交互式设备驱动调试方法,包括步骤:
S1:在驱动正常工作时,记录驱动输出至设备的配置信息及设备返回的输入信息;
S2:将所述配置信息及设备返回的输入信息存储在日志文件中;
S3:出现错误需要调试时,从所述日志文件中提取所述输出的配置信息和所述设备输入信息,替代设备与驱动交互,对错误进行重放,以辅助进行驱动调试。
其中,所述步骤S2之后和S3之前还包括:在所述日志文件中注入指定的错误。
其中,所述步骤S2具体包括:将所述配置信息及设备返回的输入信息转换成与操作系统无关的标准日志信息,并存储在所述日志文件中。
其中,所述的输出至设备的配置信息包括:设备寄存器配置信息,所述输入信息包含设备寄存器返回的状态信息。
其中,所述错误包括:偶发性错误、缺少设备或设备无法正常工作。
本发明还提供了一种基于输入输出模拟的交互式设备驱动调试装置,包括:
跟踪记录模块,用于在驱动正常工作时,记录驱动输出至设备的配置信息及设备返回的输入信息;
日志存储模块,用于将所述配置信息及设备返回的输入信息存储在日志文件中;
重现调试模块,用于出现错误需要调试时,从所述日志文件中提取所述配置信息和所述输入信息,替代设备与驱动交互,对错误进行重放,以辅助进行驱动调试。
其中,还包括错误注入模块:用于在所述日志文件中注入指定的错误。
其中,所述日志存储模块具体用于将所述配置信息及设备返回的输入信息转换成与操作系统无关的标准日志信息,并存储在所述日志文件中。
其中,所述的输出至设备的配置信息包括:设备寄存器配置信息,所述输入信息包含设备寄存器返回的状态信息。
其中,所述错误包括:偶发性错误、缺少设备或设备无法正常工作。
(三)有益效果
本发明基于输入输出模拟的交互式设备驱动调试方法,通过记录日志,在发生错误时利用日志信息对错误进行重放,同时对驱动进行调试,方便进行错误定位和修正,支持设备的离线调试,提高了驱动开发和移植效率,同时降低程序员的工作量,提高驱动的可靠性。
附图说明
图1是本发明实施例的一种基于输入输出模拟的交互式设备驱动调试方法流程图;
图2是本发明实施例的一种基于输入输出模拟的交互式设备驱动调试装置结构示意图;
图3是图2中的装置与设备和驱动之间的关系图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本实施例的基于输入输出模拟的交互式设备驱动调试方法如图1所示,包括:
步骤S110,在驱动正常工作时,记录驱动输出至设备的配置信息及设备返回的输入信息。配置信息包括:设备寄存器配置信息(配置到设备的寄存器中的信息),输入信息包括:设备寄存器返回的状态信息。由于与驱动交互的设备不同,配置信息也不同,具体配置信息视具体设备而定。
步骤S120,将所述配置信息及设备返回的输入信息存储在日志文件中。
步骤S130,出现错误需要调试时,从所述日志文件中提取所述配置信息和所述输入信息,替代设备与驱动交互,对错误进行重放,以辅助进行驱动调试。
进一步地,为了检测驱动的容错性,还包括对订制错误进行测试,因此在步骤S120之后和S130之前还包括:在所述日志文件中注入指定的错误。
进一步地,为了支持跨系统移植和调试,便于在一个新的平台上开发和测试新的驱动,因此步骤S120中将所述配置信息及设备返回的输入信息转换成与操作系统无关的标准日志信息(即该标准日志信息能够被任何现有的操作系统识别和读取),并存储在所述日志文件中。
其中,错误包括:偶发性错误、缺少设备或设备无法正常工作。对于偶发性错误可以通过记录的日志信息进行重放,重现出现的偶发性错误。对于设备无法正常工作的错误,该种情况常常由于驱动的配置不正确引起,此时将驱动和记录的正确日志信息进行回放对比,即可找到不正确的交互信息。对于缺少对应的设备的错误,进行联合调试,此时利用日志重现驱动和设备的交互过程,从而实现设备的离线调试。
本发明基于输入输出模拟的交互式设备驱动调试方法,通过记录日志,在方式错误时利用日志信息对错误进行重放,同时对驱动进行调试,方便进行错误定位和修正,支持设备的离线调试,提高了驱动开发和移植效率,同时降低程序员的工作量,提高驱动的可靠性。
本发明还提供了一种基于输入输出模拟的交互式设备驱动调试装置,其结构示意图如图2所示包括:跟踪记录模块210、日志存储模块220和重现调试模块230。
跟踪记录模块210用于在驱动正常工作时,记录驱动输出至设备的配置信息及设备返回的输入信息,所述输入信息包含设备寄存器返回的状态信息;
日志存储模块220用于将所述配置信息及设备返回的输入信息存储在日志文件中;
重现调试模块230用于出现错误需要调试时,从所述日志文件中提取所述配置信息和所述输入信息,替代设备与驱动交互,对错误进行重放,以辅助进行驱动调试。
进一步地,还包括错误注入模块240用于在所述日志文件中注入指定的错误。
其中,所述日志存储模块具体用于将所述配置信息及设备返回的输入信息转换成与操作系统无关的标准日志信息,并存储在所述日志文件中。
其中,所述错误包括:偶发性错误、缺少设备或设备无法正常工作。
上述基于输入输出模拟的交互式设备驱动调试装置与设备和驱动的关系图如图3所示。下面以USB键盘为输入设备为例进行说明:
在驱动正常工作时,跟踪记录模块记录驱动输出给键盘的配置信息,键盘返回的输入信息。键盘初始化时,记录驱动输出给键盘的配置信息,当键盘初始化成功后,需要记录USB总线提供给键盘正常工作时的输入信息以及驱动输出给键盘的配置信息,配置信息包括,驱动申请的扫描码存储缓冲区基址(该信息将配制到设备寄存器中)。出现键盘中断时,记录键盘返回的扫描码及发生的时刻、扫描码。
将配置信息、键盘返回的输入信息通过“日志模块”转换为日志记录,方便移植到其它平台和机器。键盘扫描码按照《时间、命令、注释、接口、参数、返回值》的自定义格式写入到日志文件中。
当缺少的键盘设备时,“重现模块”使用从日志记录文件中信息提取相应的驱动配置信息和设备的输入信息,并通过定时器辅助模拟器按下时返回键盘扫描码给键盘驱动。
错误注入模块通过在日志中注入异常日志,通过“重新模块”将异常信息传递给驱动,检查驱动的容错性。如调整与USB总线的交互结果,是得键盘驱动在实现input_register_device功能时出现错误,检查驱动是否检测并处理了该错误。
在上述实施例中,所述输出信息主要指驱动输出到键盘的配置信息,而输入信息主要包括键盘返回给驱动的扫描码数据和寄存器状态等信息。结合上述描述,针对更为复杂的输入输出设备,同样可以实现设备驱动的模拟调试和测试。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
Claims (10)
1.一种基于输入输出模拟的交互式设备驱动调试方法,其特征在于,包括步骤:
S1:在驱动正常工作时,记录驱动输出至设备的配置信息及设备返回的输入信息;
S2:将所述配置信息及设备返回的输入信息存储在日志文件中;
S3:出现错误需要调试时,从所述日志文件中提取所述输出的配置信息和所述设备输入信息,替代设备与驱动交互,对错误进行重放,以辅助进行驱动调试。
2.根据权利要求1所述的基于输入输出模拟的交互式设备驱动调试方法,其特征在于,所述步骤S2之后和S3之前还包括:在所述日志文件中注入指定的错误。
3.根据权利要求1所述的基于输入输出模拟的交互式设备驱动调试方法,其特征在于,所述步骤S2具体包括:将所述配置信息及设备返回的输入信息转换成与操作系统无关的标准日志信息,并存储在所述日志文件中。
4.根据权利要求1所述的基于输入输出模拟的交互式设备驱动调试方法,其特征在于,所述的输出至设备的配置信息包括:设备寄存器配置信息,所述输入信息包含设备寄存器返回的状态信息。
5.根据权利要求1~4中任一项所述的基于输入输出模拟的交互式设备驱动调试方法,其特征在于,所述错误包括:偶发性错误、缺少设备或设备无法正常工作。
6.一种基于输入输出模拟的交互式设备驱动调试装置,其特征在于,包括:
跟踪记录模块,用于在驱动正常工作时,记录驱动输出至设备的配置信息及设备返回的输入信息;
日志存储模块,用于将所述配置信息及设备返回的输入信息存储在日志文件中;
重现调试模块,用于出现错误需要调试时,从所述日志文件中提取所述配置信息和所述输入信息,替代设备与驱动交互,对错误进行重放,以辅助进行驱动调试。
7.根据权利要求6所述的基于输入输出模拟的交互式设备驱动调试装置,其特征在于,还包括错误注入模块:用于在所述日志文件中注入指定的错误。
8.根据权利要求6所述的基于输入输出模拟的交互式设备驱动调试装置,其特征在于,所述日志存储模块具体用于将所述配置信息及设备返回的输入信息转换成与操作系统无关的标准日志信息,并存储在所述日志文件中。
9.根据权利要求6所述的基于输入输出模拟的交互式设备驱动调试装置,其特征在于,所述的输出至设备的配置信息包括:设备寄存器配置信息,所述输入信息包含设备寄存器返回的状态信息。
10.根据权利要求6~9中任一项所述的基于输入输出模拟的交互式设备驱动调试装置,其特征在于,所述错误包括:偶发性错误、缺少设备或设备无法正常工作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310565938.3A CN103617116A (zh) | 2013-11-13 | 2013-11-13 | 基于输入输出模拟的交互式设备驱动调试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310565938.3A CN103617116A (zh) | 2013-11-13 | 2013-11-13 | 基于输入输出模拟的交互式设备驱动调试方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103617116A true CN103617116A (zh) | 2014-03-05 |
Family
ID=50167819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310565938.3A Pending CN103617116A (zh) | 2013-11-13 | 2013-11-13 | 基于输入输出模拟的交互式设备驱动调试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103617116A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110347589A (zh) * | 2019-06-11 | 2019-10-18 | 烽火通信科技股份有限公司 | 一种软件单元测试自动化检测方法及系统 |
CN110704286A (zh) * | 2019-08-30 | 2020-01-17 | 中国人民财产保险股份有限公司 | 一种日志处理方法、装置及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1971536A (zh) * | 2005-11-24 | 2007-05-30 | 鸿富锦精密工业(深圳)有限公司 | 基本输入输出系统的纠错系统及方法 |
CN102262581A (zh) * | 2010-05-25 | 2011-11-30 | 康佳集团股份有限公司 | 一种windows mobile驱动调试方法 |
US20120124556A1 (en) * | 2010-11-16 | 2012-05-17 | Hon Hai Precision Industry Co., Ltd. | Computing device and device driver debugging method |
-
2013
- 2013-11-13 CN CN201310565938.3A patent/CN103617116A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1971536A (zh) * | 2005-11-24 | 2007-05-30 | 鸿富锦精密工业(深圳)有限公司 | 基本输入输出系统的纠错系统及方法 |
CN102262581A (zh) * | 2010-05-25 | 2011-11-30 | 康佳集团股份有限公司 | 一种windows mobile驱动调试方法 |
US20120124556A1 (en) * | 2010-11-16 | 2012-05-17 | Hon Hai Precision Industry Co., Ltd. | Computing device and device driver debugging method |
Non-Patent Citations (1)
Title |
---|
刘虎球等: "面向驱动配置的自动日志插入方法研究", 《计算机学报》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110347589A (zh) * | 2019-06-11 | 2019-10-18 | 烽火通信科技股份有限公司 | 一种软件单元测试自动化检测方法及系统 |
CN110704286A (zh) * | 2019-08-30 | 2020-01-17 | 中国人民财产保险股份有限公司 | 一种日志处理方法、装置及电子设备 |
CN110704286B (zh) * | 2019-08-30 | 2023-03-31 | 中国人民财产保险股份有限公司 | 一种日志处理方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102184138B (zh) | 一种软件错误自动重现和定位的方法及系统 | |
CN101339534B (zh) | 一种软件测试的方法及装置 | |
CN102117234B (zh) | 移动终端在软件升级失败时恢复原有软件的方法 | |
CN103150188B (zh) | 非x86指令集计算机的x86兼容显卡快速初始化方法 | |
CN102567193A (zh) | 测试用例转化为自动化测试脚本的方法及系统 | |
US20120254662A1 (en) | Automated test system and automated test method | |
CN103186461A (zh) | 一种现场数据的保存方法和恢复方法以及相关装置 | |
CN101634960A (zh) | 一种修改bios参数及重新生成校验和的方法 | |
CN103049371A (zh) | Android应用程序测试方法和测试装置 | |
CN103559121A (zh) | 基于日志注入的驱动配置调试方法 | |
CN103853147B (zh) | 一种嵌入式系统的在线调试系统 | |
TW201616356A (zh) | 偵錯韌體/軟體以產生追蹤資料之系統與方法、記錄媒體及電腦程式產品 | |
US7783927B2 (en) | Intelligent processing tools | |
CN107274933A (zh) | 一种测试固态硬盘的方法及装置 | |
CN101452393A (zh) | 基于pci总线的dsp2812程序在线升级方法 | |
CN112216340A (zh) | 硬盘测试方法、装置、存储介质及电子设备 | |
CN103617116A (zh) | 基于输入输出模拟的交互式设备驱动调试方法及装置 | |
CN110865573A (zh) | 一种基于python的控制系统 | |
CN101206613A (zh) | 高速基本输入/输出系统调试卡 | |
TW200415461A (en) | Program debugging method | |
CN102855166A (zh) | 主板测试系统及方法 | |
CN115858049A (zh) | Rpa流程组件化编排方法、装置、设备和介质 | |
CN115827373A (zh) | 应用程序崩溃类问题的记录及定位方法、系统、终端设备及存储介质 | |
CN114124750A (zh) | 通信模块的测试方法、系统、设备及存储介质 | |
CN105607957A (zh) | 一种基于opc da的数据采集与监控系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140305 |
|
RJ01 | Rejection of invention patent application after publication |