[发明专利]融合来自不同编译器阶段的调试信息有效
申请号: | 201110428634.3 | 申请日: | 2011-12-19 |
公开(公告)号: | CN102637136A | 公开(公告)日: | 2012-08-15 |
发明(设计)人: | A·K·阿加瓦尔;T·P·多舍尔;P·梅比 | 申请(专利权)人: | 微软公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 蔡悦 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 融合 来自 不同 编译器 阶段 调试 信息 | ||
技术领域
本发明涉及计算机技术,尤其涉及计算机调试技术。
相关申请的交叉引用
不适用。
背景技术
1.背景和相关技术
计算机系统和相关技术影响社会的许多方面。的确,计算机系统处理信息的能力已转变了人们生活和工作的方式。计算机系统现在通常执行在计算机系统出现以前手动执行的许多任务(例如,文字处理、日程安排和会计等)。最近,计算机系统彼此耦合并耦合到其他电子设备以形成计算机系统和其他电子设备可以在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行跨多个不同的计算机系统和/或多个不同的计算环境分布。
为了开发用于执行计算任务的软件应用程序,开发者通常编写表达软件应用程序的所需功能的源代码(例如,使用C++、Visual Basic等)。然后可将源代码编译为可执行代码(或者另选地在执行时解释)。在源代码编译过程中,编译器将源代码指令转换为在计算机系统上可直接执行的机器指令(例如,x86指令)。在计算机系统上运行可执行代码以实现所需功能。许多编译器还输出调试信息,其有助于开发者定位和修正源程序中导致偏离所需功能的缺陷。
在一些实施例中,使用单阶段编译器将源代码编译为可执行代码。例如,C++编译器可直接将C++源代码编译为可在个人计算机的处理器上运行的可执行代码。在其他实施例中,使用多阶段编译器将源代码编译为可执行代码。多阶段编译器可包括多个不同的编译阶段。每一编译器阶段可执行某个翻译、转换等以朝着将接收到的源代码编译为机器指令(例如,定向至特定的处理器)的方向前进。
在更具体的环境中,开发Data Parallel C++(数据并行C++,“DPC++”)源代码来与中央处理单元(“CPU”)一起并行地使用图形处理单元(“GPU”)以实现所需功能。即,某些源代码是以CPU为目标来编写的,其他源代码是以GPU为目标来编写的。对于以GPU为目标的源代码,使用多阶段编译器来将Data Parallel C++(“DPC++)源代码编译为高级着色语言(“HLSL”)字节码(其可在GPU上执行)。第一编译阶段将DPC++源代码翻译为HLSL源代码。第二编译阶段然后将HLSL源代码转换为用于在GPU上执行的HLSL字节码。使用多阶段编译器允许DPC++开发者开发GPU的代码而并不必具备HLSL知识。
在使用多阶段编译器时,每一编译阶段通常输出在采用输入格式的指令和符号与采用输出格式的指令和符号之间映射的调试信息。例如,第一编译阶段可输出在源代码指令和符号与中间代码(例如,第二源代码、中间语言代码等)指令和符号之间映射的调试信息。第二编译阶段可输出在中间代码指令和符合与可执行代码指令和符号之间映射的调试信息。返回之前的示例,第一编译阶段可输出在DPC++源代码指令和符号与HLSL源代码指令和符号之间映射的调试信息。第二编译阶段可输出在HLSL源代码指令和符号与HLSL字节码指令和符号之间映射的调试信息。
由此,为了调试使用多阶段编译器来编译的应用程序,开发者必须使用来自每一编译阶段的一组调试信息来将源代码指令或符号映射至可执行代码指令或符号。处理多组调试信息是资源密集的,并且资源使用随编译阶段数量的增加而增加。
发明内容
本发明涉及用于融合来自不同编译器阶段的调试信息的各方法、系统和计算机程序产品。第一编译阶段访问第一代码。第一代码包括采用第一格式的第一指令和第一符号。将第一代码翻译为第二代码。翻译第一代码包括将第一指令和第一符号转换为对应的采用第二格式的第二指令和第二符号。第二格式与第一格式不同。翻译第一代码还包括生成第一调试信息。第一调试信息将第一指令中的每一指令映射至第二指令中对应的指令,并将第一符号中的每一符号映射至第二符号中对应的符号。
第二编译阶段访问第二代码。将第二代码翻译为第三代码。翻译第二代码包括将第二指令和第二符号转换为对应的采用第三格式的第三指令和第三符号。第三格式不同于第一格式和第二格式。翻译第二代码还包括生成第二调试信息。第二调试信息将第二指令中的每一指令映射至第三指令中对应的指令,并将第二符号中的每一符号映射至第三符号中对应的符号。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110428634.3/2.html,转载请声明来源钻瓜专利网。