[发明专利]融合来自不同编译器阶段的调试信息有效
申请号: | 201110428634.3 | 申请日: | 2011-12-19 |
公开(公告)号: | CN102637136A | 公开(公告)日: | 2012-08-15 |
发明(设计)人: | A·K·阿加瓦尔;T·P·多舍尔;P·梅比 | 申请(专利权)人: | 微软公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 蔡悦 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 融合 来自 不同 编译器 阶段 调试 信息 | ||
1.一种在包括一个或多个处理器和系统存储器的计算机系统上用于对在不同编译阶段生成的调试信息进行组合的方法,所述计算机系统还包括用于将源代码编译为可执行代码的多阶段编译器(101),所述多阶段编译器具有包括至少第一编译阶段(102)和第二编译阶段(103)的多个编译阶段,所述多个编译阶段中的每一编译阶段被配置成在代码格式之间转换并朝着从源代码(111)生成可执行代码(113)的方向前进,所述方法包括:
将第一调试信息(121)和第二调试信息(122)融合为合并的第三调试信息(123)的动作,
所述第一调试信息(121)生成于将采用第一格式的第一代码(111)翻译为采用不同的第二格式的第二代码(112)的第一编译阶段(102),所述第一调试信息将所述第一代码中的每一指令映射(131)至所述第二代码中对应的指令并将所述第一代码中的每一符号映射(132)至所述第二代码中对应的符号,
所述第二调试信息(122)生成于将所述第二代码(112)翻译为采用不同的第三格式的第三代码(113)的第二编译阶段(103),所述第二调试信息(122)将所述第二代码中的每一指令映射(113)至所述第三代码中对应的指令并将所述第二代码中的每一符号映射(134)至所述第三代码中对应的符号,
所述合并的第三调试信息(123)将所述第一指令直接映射至所述第三指令并将所述第一符号直接映射至所述第三符号,融合所述第一调试信息和所述第二调试信息包括对于所述第一代码中的每一指令和符号:
使用所述第一调试信息来标识所述第二代码中与所述第一代码中的指令或符号对应的指令或符号的动作;
使用所述第二调试信息来标识所述第三代码中与所述第二代码中所标识的指令或符号对应的指令或符号的动作;
将所述第一代码中的指令或符号直接地映射(136,137)至所述第三代码中所标识的对应的指令或符号的动作;以及
将所述第一代码中的指令或符号至所述第三代码中的指令或符号的直接映射(136,137)存储在所述合并的第三调试信息中的动作。
2.如权利要求1所述的方法,其特征在于,所述将所述第一调试信息和第二调试信息融合为合并的第三调试信息的动作包括:将在Data Parallel C++(DPC++)源代码中的指令位置和符号与高级着色语言(HLSL)源代码中的指令位置和符号之间进行映射的第一调试信息与在HLSL源代码中的指令位置和符号与在HLSL字节码中的地址和寄存器名之间进行映射的第二调试信息融合为在所述DPC++源代码中的位置和符号与所述HLSL字节码中的地址和寄存器名之间进行映射的合并的第三调试信息的动作。
3.如权利要求1所述的方法,其特征在于,所述第一编译阶段被配置为将DataParallel C++(DPC++)源代码翻译为高级着色语言(HLSL)源代码。
4.如权利要求1所述的方法,其特征在于,所述第二编译阶段被配置为将高级着色语言(HLSL)源代码翻译为HLSL字节码。
5.如权利要求1所述的方法,其特征在于,所述第一、第二和合并的第三调试信息被存储为程序数据库(PDB)记录。
6.如权利要求1所述的方法,其特征在于,还包括:使用合并的第三调试信息以辅助调试所述第一代码的动作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110428634.3/1.html,转载请声明来源钻瓜专利网。