[发明专利]用于调试本机代码的方法和系统有效
申请号: | 201480043987.3 | 申请日: | 2014-06-03 |
公开(公告)号: | CN105683924B | 公开(公告)日: | 2019-03-19 |
发明(设计)人: | M·科尔陶切夫;N·坎德沃尔;A·甘地 | 申请(专利权)人: | 微软技术许可有限责任公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 胡利鸣 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 通过 模式 执行 转变为 解释 调试 代码 | ||
1.一种用于调试本机代码的系统,包括:
计算设备的至少一个处理器;
所述计算设备的存储器;以及
调试器,所述调试器包括被加载到所述存储器中的至少一个程序模块,所述至少一个程序模块使所述至少一个处理器:
执行程序的本机代码,所述本机代码包括至少一个预定的调试跳出点,所述至少一个预定的调试跳出点表示所述程序中在至少一个调试跳出条件被满足时所述调试器自动从调试所述本机代码转变为调试对应的经解释的代码的位置;
响应于检测到所述至少一个调试跳出条件已经被满足,从调试表示程序的本机代码转变为调试表示所述程序的对应的经解释的代码,其中运行时调试标志的状态以及栈帧的栈深度校验被用于确定所述至少一个调试跳出条件是否已经被满足。
2.如权利要求1所述的系统,其特征在于,进一步包括:
被加载到所述存储器中的至少一个程序模块,所述至少一个程序模块使所述至少一个处理器:
接收在所述调试器下执行的所述本机代码的当前状态;
实例化解释器的实例;
为所述解释器的所述实例创建解释器栈帧;以及
用所述本机代码的所述当前状态来填充经实例化的解释器的所述解释器栈帧。
3.如权利要求1所述的系统,其特征在于,进一步包括:
被加载到所述存储器中的至少一个程序模块,所述至少一个程序模块使所述至少一个处理器:
接收所述程序的经定义的跳出位置,所述跳出位置包括以下至少之一:
在函数的开始处、在循环的回边处、当函数返回时、当对助手函数的调用返回时、当对库的调用返回时或当遇到调试器语句时。
4.如权利要求1所述的系统,其特征在于,进一步包括:
被加载到所述存储器中的至少一个程序模块,所述至少一个程序模块使所述至少一个处理器:
响应于接收到执行控制操作,转变到调试表示所述程序的对应的经解释的代码。
5.如权利要求1所述的系统,其特征在于,进一步包括:
被加载到所述存储器中的至少一个程序模块,所述至少一个程序模块使所述至少一个处理器:
在本机模式中执行调试操作,所述调试操作修改变量的当前值,本机模式包括调试表示所述程序的本机代码。
6.一种用于调试本机代码的方法,包括:
由计算设备的处理器接收程序的至少一个调试跳出位置,所述至少一个调试跳出位置包括从所述程序中生成的本机代码中的位置,所述位置包括在其处调试响应于确定调试跳出条件已经被满足而自动从调试所述本机代码转变为调试所述程序的对应的经解释的代码的位置;
发起针对所述程序的调试会话;
丢弃先前针对所述程序所生成的本机代码;
生成用于调试的本机代码,所生成的本机代码包括与从调试本机代码转变为调试对应的经解释的代码相关联的处理;
在调试器下执行所述所生成的本机代码;
响应于确定所述调试跳出条件已经被满足,在所述调试器下在经解释的模式中继续所述本机代码的执行,其中运行时调试标志的状态以及栈帧的栈深度校验被用于确定所述调试跳出条件是否已经被满足;
还原与所执行的所生成的本机代码相关联的变量相对应的解释器变量;以及
在所述经解释的代码中的一点处恢复在经解释的模式中对所述程序的调试,所述点对应于所执行的所生成的本机代码中的在其处对所述本机代码的调试停止的点。
7.如权利要求6所述的方法,其特征在于,进一步包括:
接收所述程序的所述至少一个调试跳出位置,所述至少一个调试跳出位置包括以下之一:在函数的开始处、在循环的回边处、当函数返回时、当对助手函数的调用返回时、当库返回时或当在所述本机代码中遇到调试器语句时。
8.如权利要求6所述的方法,其特征在于,进一步包括:
响应于接收到调试操作而转变到经解释的模式调试,所述调试操作包括执行控制操作,所述执行控制操作包括以下之一:异步中断操作、步进操作、中断点或异常操作上的中断。
9.一种由计算设备实现的用于调试本机代码的方法,包括:
执行程序的本机代码,所述本机代码包括至少一个预定的调试跳出点,所述至少一个预定的调试跳出点表示所述程序中在至少一个调试跳出条件被满足时调试器自动从调试所述本机代码转变为调试对应的经解释的代码的位置;
响应于确定所述至少一个调试跳出条件已经被满足,从调试表示程序的本机代码转变为调试表示所述程序的对应的经解释的代码,所述至少一个调试跳出条件包括接收到执行控制操作,其中运行时调试标志的状态以及栈帧的栈深度校验被用于确定所述至少一个调试跳出条件是否已经被满足。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软技术许可有限责任公司,未经微软技术许可有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201480043987.3/1.html,转载请声明来源钻瓜专利网。