CN105094910A - 一种驱动函数用户态调试***和方法 - Google Patents
一种驱动函数用户态调试***和方法 Download PDFInfo
- Publication number
- CN105094910A CN105094910A CN201510465665.4A CN201510465665A CN105094910A CN 105094910 A CN105094910 A CN 105094910A CN 201510465665 A CN201510465665 A CN 201510465665A CN 105094910 A CN105094910 A CN 105094910A
- Authority
- CN
- China
- Prior art keywords
- function
- user
- analysis processing
- module
- user instruction
- 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 34
- 230000006870 function Effects 0.000 claims abstract description 212
- 238000012545 processing Methods 0.000 claims abstract description 64
- 230000005540 biological transmission Effects 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种驱动函数用户态调试***和方法,基于Linux***,所述驱动函数的用户态调试***包括指令接收模块和分析处理内核模块;所述接收模块用于接收用户指令,并将所述用户指令写入所述分析处理内核模块;其中,用户指令包括驱动函数名和函数参数,所述分析处理内核模块用于将字符设备注册在内核上,并解析处理所述用户指令,获取驱动函数的内存地址,通过内存地址和函数参数调用所述用户指令对应的驱动函数。通过本发明的驱动函数用户态调试***和方法,驱动函数开发人员不用修改程序代码,不重新编译程序,不重新运行程序,就可在BUG现场直接收集数据和查找BUG原因,提高了解BUG的效率。
Description
技术领域
本发明涉及一种Linux的调试驱动函数的方法,特别是涉及一种基于Linux的驱动函数用户态调试***和方法。
背景技术
基于Linux下的驱动开发是最具技术含量的科技工作之一,驱动软件的编写中,最主要的是BUG的解决,其中核心在于错误和/或漏洞(BUG)的定位。对于任何一位驱动函数的开发者来说,最急迫的问题之一就是如何完成调试。现在Linux下驱动函数的代码量越来越大,复杂程度越来越高。这给Liunx下的驱动函数的调试,带来了极大的不便。并且,Linux的驱动函数的调试工具却发展缓慢,单步调试、实时监控都不是容易的事。
并且,Linux***有两种运行状态:用户态和内核态,内核态的特权级别高于用户态。在用户态不能直接调用内核函数,而驱动代码属于内核态,因此用户态不能直接调用驱动函数。
目前,驱动函数开发者对驱动函数进行调试主要是依靠驱动(或内核)打印相关数据结构或者运行状态的统计信息,根据这些打印信息判断BUG出现的原因和位置。Linux提供给驱动函数开发者的打印驱动(或内核)信息的方法主要有以下两种:
1、内核打印:开发者可以在可疑的位置用函数printk打印数据信息;
2、访问虚拟文件***:用户可以通过访问虚拟文件***/proc目录下的文件读取进程和内核的运行信息。
其中,内核打印是最原始的驱动函数调试方法,哪里需要打印,就在哪里添加函数printk代码,但是,只要新添加了代码,就必须对程序重新编译和运行,这样也就没有办法在BUG出现的现场进行调试,这对于一些出现概率极小、难以复制的BUG来说,是极其不方便的,
而访问虚拟文件***虽然较之内核打印的方法稳定性和可靠性都得到了提高,但是这种方法不能传入参数。因此,对于一些需要传入参数进行调试的驱动函数就不能适用了。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种驱动函数用户态调试***和方法,用于解决现有技术中无法在用户态进行驱动函数调试,且调试驱动函数时无法输入参数的问题。
为实现上述目的及其他相关目的,本发明提供一种驱动函数用户态调试***,基于Linux,所述驱动函数的用户态调试***包括指令接收模块和分析处理内核模块;所述接收模块用于接收用户指令,并将所述用户指令写入所述分析处理内核模块;所述分析处理内核模块用于将字符设备注册在内核上,并分析处理所述用户指令,以调用所述用户指令所对应的驱动函数。
可选地,所述用户指令包括驱动函数名和函数参数。
可选地,所述指令接收模块包括输入子模块和传递子模块;所述输入子模块用于输入所述用户指令;所述传递子模块用于打开所述字符设备,并将通过所述输入子模块输入的所述用户指令传递给所述分析处理内核模块。
可选地,所述指令接收模块还包括校验子模块,用于校验通过所述输入子模块输入的所述用户指令中是否含有非法字符:如果有,则打印错误信息并退出;如果没有,则返回至所述传递子模块,将所述用户指令传递给所述分析处理内核模块。
可选地,所述分析处理内核模块包括:用于在内核上注册或注销所述字符设备的注册注销子模块;用于配置所述字符设备的配置子模块;以及,用于解析所述用户指令,获取所述驱动函数的内存地址,并依据所述内存地址调用所述驱动函数的分析处理子模块。
可选地,所述分析处理内核模块还包括用于加载或卸载所述分析处理内核模块的加卸载子模块。
可选地,所述分析处理子模块是通过如下步骤完成所述驱动函数的调用的:解析所述用户指令中的驱动函数名和函数参数,并对所述函数参数进行格式转换;根据所述驱动函数名查找内核函数符号表获取所述驱动函数的所述内存地址;通过所述内存地址和所述函数参数直接调用所述驱动函数。
本发明还公开了一种驱动函数用户态调试方法,基于Linux,包括:加载分析处理内核模块;在内核上注册字符设备,并配置所述字符设备;通过指令接收模块输入用户指令,并传输至所述分析处理内核模块;其中,所述用户指令包括驱动函数名和函数参数;解析所述用户指令,获取驱动函数的内存地址,并依据所述内存地址和所述函数参数直接调用所述驱动函数。
可选地,所述通过指令接收子模块输入用户指令,并传输至所述分析处理内核模块还包括对输入的所述用户指令进行校验,判断所述用户指令中是否含有非法字符:如果有,则打印错误信息并退出;如果没有,则返回。
可选地,所述驱动函数用户态调试方法还包括:在所述驱动函数调用结束后,卸载所述分析处理内核模块;在内核上注销所述字符设备。
如上所述,本发明的一种驱动函数用户态调试***和方法,在Linux用户态下,从命令行直接输入用户指令(包括驱动函数名和函数参数),即可直接调用指定的驱动函数,从而完成驱动函数的现场调试。通过本发明的驱动函数用户态调试***和方法,驱动函数开发人员不用修改程序代码,不用重新编译程序,不用重新运行程序,就可在BUG现场直接收集数据和查找BUG原因,提高了解BUG的效率。
附图说明
图1显示为本发明实施例公开的一种驱动函数用户态调试***的结构示意图。
图2显示为本发明实施例公开的一种驱动函数用户态调试方法的流程示意图。
元件标号说明
100指令接收模块
110输入子模块
120校验子模块
130传递子模块
200分析处理内核模块
210加卸载子模块
220注册注销子模块
230配置子模块
240分析处理子模块
S21~S26步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图示中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
实施例一
本实施例公开了一种基于Linux的驱动函数用户态调试***,用于调试驱动函数,查找和定位驱动函数的BUG。
如图1所示,本实施例的驱动函数用户态调试***包括:指令接收模块100和分析处理内核模块200。
指令接收模块100用于接收用户指令,其工作在用户态,把接收到的用户指令传递至分析处理内核模块200。其中,用户指令包括驱动函数名和函数参数。
分析处理内核模块200从指令接收模块100接收到用户指令后,解析出用户指令的驱动函数名和函数参数;根据驱动函数名查找内核函数符号表,得到驱动函数的内存地址,最后根据内存地址和函数参数调用该驱动函数,实现调试的功能。
其中,指令接收模块100包括输入子模块110、校验子模块120和传递子模块130;其中,
输入子模块110用于输入用户指令;
校验子模块120用于对输入子模块110输入的用户指令进行校验,判断用户指令是否含有非法字符:如果含有非法字符,表示用户指令是无效的,则打印错误信息并退出;如果没有非法字符,则表示用户指令有效;
传递子模块130用于打开字符设备,并将用户指令传递至分析处理内核模块。
在本实施例中,指令接收模块100为工作在用户态的应用程序,其包括main主函数、parse_cmd函数和do_cmd函数。
其中,main主函数是该应用程序的入口函数。main主函数的输入参数是用户指令,包括驱动函数名和函数参数,其中,驱动函数名和函数参数之间用空格隔开。驱动函数名和函数参数是由用户在Linux***的shell控制台输入的。通过main主函数后先后调用parse_cmd函数和do_cmd函数。
parse_cmd函数的输入参数是用户指令。parse_cmd函数的输入参数是由main主函数在调用parse_cmd函数时传入的。parse_cmd函数用于校验用户指令中是否含有非法字符:
如果有非法字符,则打印错误信息,并退出该应用程序;
如果没有非法字符,则正常返回。
do_cmd函数的输入参数也是用户指令,其输入参数同样是由main主函数在调用do_cmd函数时传入的。do_cmd函数的作用是将用户指令传递给分析处理内核模块200,其采用的是写文件的方式来完成用户指令的传递。do_cmd函数执行的具体步骤是:
用***调用open打开分析处理内核模块200指向的字符设备;
用***调用write向分析处理内核模块写入用户指令。
分析处理内核模块200包括加卸载子模块210、注册注销子模块220、配置子模块230和分析处理子模块240。其中,
加卸载子模块210用于加载或卸载分析处理内核模块200;
注册注销子模块220用于在内核上注册或注销字符设备;
配置子模块230用于在内核上配置字符设备;
分析处理子模块240用于解析用户指令,获取驱动函数的内存地址,并依据内存地址调用驱动函数。
在本实施例中,分析处理内核模块200也是通过多个函数实现的,具体包括debug_module_init函数、debug_module_exit函数、debug_init函数、debug_exit函数、debug_setup函数和debug_write函数。
debug_module_init函数用于加载分析处理内核模块200;debug_module_exit函数用于卸载分析处理内核模块200。当分析处理内核模块200被加载和卸载时,***会自动分别调用这两个函数。其中,debug_module_init函数调用分析处理内核模块200中字符设备的注册函数debug_init;debug_module_exit函数则调用分析处理内核模块200中字符设备的注销函数debug_exit。
debug_init函数用于向内核注册一个字符设备(指令输入模块100中do_cmd函数打开的字符设备),然后调用debug_setup函数。debug_exit函数的作用是向内核注销该字符设备。
debug_setup函数用于完成字符设备的配置,其把自定义的文件操作数据结构debug_fops与字符设备绑定。当指令输入模块100的do_cmd函数调用write向分析处理内核模块写入用户指令时,则触发分析处理内核模块200执行debug_fops的成员函数debug_write。
debug_write函数用于实现分析和处理用户指令的核心函数。其输入参数是指令输入模块100传递过来的用户指令,分析和处理用户指令的实现过程是:
解析用户指令中包含的驱动函数名和函数参数,并对函数参数做必要的格式转换;
用驱动函数名作为关键字查找内核函数符号表,得到驱动函数的内存地址;
用内存地址和函数参数直接调用驱动函数。
此外,为了突出本发明的创新部分,本实施例中并没有将与解决本发明所提出的技术问题关系不太密切的模块引入,但这并不表明本实施例中不存在其它的模块。
实施例二
本实施例公开了一种基于Linux的驱动函数用户态调试方法,用于调试驱动函数,查找和定位驱动函数的BUG。
如图2所示,本实施例的驱动函数用户调试方法包括:
步骤S21,加载分析处理内核模块:
通过debug_module_init函数加载分析处理内核模块,同时,调用注册函数debug_init。
步骤S22,在内核上注册字符设备,并配置字符设备:
通过debug_init函数在内核上注册字符设备,然后通过调用debug_setup函数完成字符设备的配置。具体来说是把自定义的文件操作数据结构debug_fops与字符设备绑定。
步骤S23,通过指令接收模块输入用户指令,并传输至分析处理内核模块;其中,用户指令包括驱动函数名和函数参数;
用户通过在用户态的指令接收子模块输入用户指令来用于调用驱动程序:
用户在Linux***的shell控制台输入以用户指令为输入参数的main主函数;
通过main主函数调用parse_cmd函数,校验用户指令中是否含有非法字符,只有在用户指令中不含有非法字符时,才继续进行驱动函数的调试;
经过parse_cmd函数校验后,通过main主函数调用do_cmd函数,调用open打开通过分析处理内核模块注册的字符设备,调用write向分析处理内核模块写入用户指令。
步骤S24,解析用户指令,获取驱动函数的内存地址,并依据内存地址和函数参数直接调用驱动函数。
在用户通过main主函数调用write向分析处理内核模块写入用户指令后,触发文件操作数据结构debug_fops的成员函数debug_write,通过debug_write函数分析和处理用户指令,获取驱动函数的内存地址,并依据内存地址和函数参数直接调用驱动函数,具体包括:
解析用户指令中包含的驱动函数名和函数参数,并对函数参数做必要的格式转换;
用驱动函数名作为关键字查找内核函数符号表,得到驱动函数的内存地址;
用内存地址和函数参数直接调用驱动函数。
进一步地,在调用驱动函数结束后,还包括:
步骤S25,卸载分析处理内核模块;
步骤S26,在内核是注销字符设备。
其中,分析处理内核模块是通过debug_module_exit函数来卸载,通过debug_module_exit函数调用注销函数debug_exit,通过注销函数debug_exit将字符设备从内核上注销。
需要说明的是,上面方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
并且,不难发现,本实施例为与第一实施例相对应的方法实施例,本实施例可与第一实施例互相配合实施。第一实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一实施例中。
综上所述,本发明的一种驱动函数用户态调试方法和***,在Linux用户态下,从命令行直接输入用户指令(包括驱动函数名和函数参数),即可直接调用指定的驱动函数,从而完成驱动函数的现场调试。通过本发明的驱动函数用户态调试方法和***,驱动函数开发人员不用修改程序代码,不用重新编译程序,不用重新运行程序,就可在BUG现场直接收集数据和查找BUG原因,提高了解BUG的效率。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (10)
1.一种驱动函数用户态调试***,基于Linux,其特征在于,所述驱动函数的用户态调试***包括指令接收模块和分析处理内核模块;
所述接收模块用于接收用户指令,并将所述用户指令写入所述分析处理内核模块;
所述分析处理内核模块用于将字符设备注册在内核上,并分析处理所述用户指令,以调用所述用户指令所对应的驱动函数。
2.根据权利要求1所述的驱动函数用户态调试***,其特征在于:所述用户指令包括驱动函数名和函数参数。
3.根据权利要求2所述的驱动函数用户态调试***,其特征在于:所述指令接收模块包括输入子模块和传递子模块;所述输入子模块用于输入所述用户指令;所述传递子模块用于打开所述字符设备,并将通过所述输入子模块输入的所述用户指令传递给所述分析处理内核模块。
4.根据权利要求3所述的驱动函数的用户态调试***,其特征在于:所述指令接收模块还包括校验子模块,用于校验通过所述输入子模块输入的所述用户指令中是否含有非法字符:如果有,则打印错误信息并退出;如果没有,则返回至所述传递子模块,将所述用户指令传递给所述分析处理内核模块。
5.根据权利要求2所述的驱动函数用户态调试***,其特征在于:所述分析处理内核模块包括:
用于在内核上注册或注销所述字符设备的注册注销子模块;
用于配置所述字符设备的配置子模块;
以及,用于解析所述用户指令,获取所述驱动函数的内存地址,并依据所述内存地址调用所述驱动函数的分析处理子模块。
6.根据权利要求5所述的驱动函数用户态调试***,其特征在于:所述分析处理内核模块还包括用于加载或卸载所述分析处理内核模块的加卸载子模块。
7.根据权利要求5所述的驱动函数用户态调试***,其特征在于:所述分析处理子模块是通过如下步骤完成所述驱动函数的调用的:
解析所述用户指令中的驱动函数名和函数参数,并对所述函数参数进行格式转换;
根据所述驱动函数名查找内核函数符号表获取所述驱动函数的所述内存地址;
通过所述内存地址和所述函数参数直接调用所述驱动函数。
8.一种驱动函数用户态调试方法,基于Linux,其特征在于:包括:
加载分析处理内核模块;
在内核上注册字符设备,并配置所述字符设备;
通过指令接收模块输入用户指令,并传输至所述分析处理内核模块;其中,所述用户指令包括驱动函数名和函数参数;
解析所述用户指令,获取驱动函数的内存地址,并依据所述内存地址和所述函数参数直接调用所述驱动函数。
9.根据权利要求8所述的驱动函数用户态调试方法,其特征在于:所述通过指令接收子模块输入用户指令,并传输至所述分析处理内核模块还包括对输入的所述用户指令进行校验,判断所述用户指令中是否含有非法字符:如果有,则打印错误信息并退出;如果没有,则返回。
10.根据权利要求8所述的驱动函数用户态调试方法,其特征在于:所述驱动函数用户态调试方法还包括:在所述驱动函数调用结束后,
卸载所述分析处理内核模块;
在内核上注销所述字符设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510465665.4A CN105094910A (zh) | 2015-07-31 | 2015-07-31 | 一种驱动函数用户态调试***和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510465665.4A CN105094910A (zh) | 2015-07-31 | 2015-07-31 | 一种驱动函数用户态调试***和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105094910A true CN105094910A (zh) | 2015-11-25 |
Family
ID=54575420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510465665.4A Pending CN105094910A (zh) | 2015-07-31 | 2015-07-31 | 一种驱动函数用户态调试***和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105094910A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391087A (zh) * | 2017-07-28 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种硬件信息读写的方法及装置 |
CN108924080A (zh) * | 2018-04-20 | 2018-11-30 | 福州芝麻智能科技有限公司 | 一种伪函数通讯方法 |
CN109542696A (zh) * | 2017-09-22 | 2019-03-29 | 龙芯中科技术有限公司 | 获取设备数据的方法、装置、可读存储介质及电子设备 |
CN110673878A (zh) * | 2019-09-11 | 2020-01-10 | 上海高性能集成电路设计中心 | 一种基于指令集模拟器的指令信息查询及执行调试方法 |
CN111045949A (zh) * | 2019-12-14 | 2020-04-21 | 中车大连电力牵引研发中心有限公司 | 一种基于gprs的程序调试方法 |
CN112905472A (zh) * | 2021-03-04 | 2021-06-04 | 黑芝麻智能科技(上海)有限公司 | 内核调试***及方法 |
CN116089316A (zh) * | 2023-04-07 | 2023-05-09 | 武汉凌久微电子有限公司 | 一种基于动态断点的内核驱动数据调试方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020116491A1 (en) * | 2000-09-01 | 2002-08-22 | Boyd Eric L. | Method and system for probing a network |
CN101340314A (zh) * | 2008-08-11 | 2009-01-07 | 中兴通讯股份有限公司 | 一种嵌入式***的实时调试定位方法及其装置 |
CN102467447A (zh) * | 2010-11-16 | 2012-05-23 | 鸿富锦精密工业(深圳)有限公司 | 驱动程序调试***及方法 |
CN104050080A (zh) * | 2014-06-09 | 2014-09-17 | 汉柏科技有限公司 | 用户态调试linux内核的方法及*** |
-
2015
- 2015-07-31 CN CN201510465665.4A patent/CN105094910A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020116491A1 (en) * | 2000-09-01 | 2002-08-22 | Boyd Eric L. | Method and system for probing a network |
CN101340314A (zh) * | 2008-08-11 | 2009-01-07 | 中兴通讯股份有限公司 | 一种嵌入式***的实时调试定位方法及其装置 |
CN102467447A (zh) * | 2010-11-16 | 2012-05-23 | 鸿富锦精密工业(深圳)有限公司 | 驱动程序调试***及方法 |
CN104050080A (zh) * | 2014-06-09 | 2014-09-17 | 汉柏科技有限公司 | 用户态调试linux内核的方法及*** |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391087A (zh) * | 2017-07-28 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种硬件信息读写的方法及装置 |
CN109542696A (zh) * | 2017-09-22 | 2019-03-29 | 龙芯中科技术有限公司 | 获取设备数据的方法、装置、可读存储介质及电子设备 |
CN108924080A (zh) * | 2018-04-20 | 2018-11-30 | 福州芝麻智能科技有限公司 | 一种伪函数通讯方法 |
CN110673878A (zh) * | 2019-09-11 | 2020-01-10 | 上海高性能集成电路设计中心 | 一种基于指令集模拟器的指令信息查询及执行调试方法 |
CN111045949A (zh) * | 2019-12-14 | 2020-04-21 | 中车大连电力牵引研发中心有限公司 | 一种基于gprs的程序调试方法 |
CN112905472A (zh) * | 2021-03-04 | 2021-06-04 | 黑芝麻智能科技(上海)有限公司 | 内核调试***及方法 |
CN116089316A (zh) * | 2023-04-07 | 2023-05-09 | 武汉凌久微电子有限公司 | 一种基于动态断点的内核驱动数据调试方法 |
CN116089316B (zh) * | 2023-04-07 | 2023-06-09 | 武汉凌久微电子有限公司 | 一种基于动态断点的内核驱动数据调试方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109783342B (zh) | 脚本调试方法、设备及计算机存储介质 | |
CN105094910A (zh) | 一种驱动函数用户态调试***和方法 | |
CN100555218C (zh) | 用于改善片上仿真***中高级语言的仿真速度的装置和方法 | |
US9703678B2 (en) | Debugging pipeline for debugging code | |
US10169199B2 (en) | Automatic model-specific debugger extensions | |
US8990780B2 (en) | Setting breakpoints in optimized instructions | |
US20130086424A1 (en) | Debugging analysis in running multi-user systems | |
US10831639B2 (en) | Method and device for non-intrusively collecting function trace data | |
CN1752946A (zh) | 一种嵌入式***的调试方法及其*** | |
CN111767116B (zh) | 面向机械臂程序开发编程语言的虚拟机及对汇编文件的运行方法 | |
US8943480B2 (en) | Setting breakpoints in optimized instructions | |
CN1627254A (zh) | 嵌入式***的调试方法及其装置 | |
CN113342654A (zh) | 脚本语言代码调试方法及装置、可读存储介质及电子设备 | |
CN102722438B (zh) | 一种内核调试的方法和设备 | |
CN103092654A (zh) | 一种基于WebKit的WebOS实现方法和*** | |
US20080127118A1 (en) | Method and system for dynamic patching of software | |
US20050044452A1 (en) | Program processing device | |
US20120110383A1 (en) | Method and apparatus for off-line analyzing crashed programs | |
CN109542464B (zh) | IoT设备脚本程序的开发部署***、方法及存储介质 | |
WO2011089478A1 (en) | Debugger system, method and computer program product for debugging instructions | |
US20050044345A1 (en) | Program processing device | |
CN113282487A (zh) | 编程语言调试方法、装置及终端设备 | |
CN113127329B (zh) | 脚本调试方法、装置及计算机存储介质 | |
US11520682B2 (en) | Code coverage method for embedded system on chip | |
US11651130B2 (en) | Method, device, and storage medium for simulating a design |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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: 20151125 |
|
RJ01 | Rejection of invention patent application after publication |