发明名称 用于融合来自不同编译器阶段的调试信息的方法和设备
摘要 本发明公开了融合来自不同编译器阶段的调试信息。本发明涉及用于融合来自不同编译器阶段的调试信息的各方法、系统和计算机程序产品。本发明的各实施例在代码生成过程中将来自多个不同编译阶段的调试信息融合为单个调试信息集。该单个调试信息集直接在输入至第一编译阶段的指令和符号(例如,源代码)与从最后的编译阶段输出的指令和符号(例如,机器码)之间映射。
申请公布号 CN102637136B 申请公布日期 2016.06.01
申请号 CN201110428634.3 申请日期 2011.12.19
申请人 微软技术许可有限责任公司 发明人 A·K·阿加瓦尔;T·P·多舍尔;P·梅比
分类号 G06F9/45(2006.01)I 主分类号 G06F9/45(2006.01)I
代理机构 上海专利商标事务所有限公司 31100 代理人 蔡悦
主权项 一种在包括一个或多个处理器和系统存储器的计算机系统上用于对在不同编译阶段生成的调试信息进行组合的方法,所述计算机系统还包括用于将源代码编译为可执行代码的多阶段编译器(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)存储在所述合并的第三调试信息中的动作。
地址 美国华盛顿州