一句话:定义并提出编译一致性模调试信息(CCMD)这一编译器属性:启用调试信息不应改变生成的机器码。
论文提出并阐述编译一致性模调试信息(CCMD)这一编译器应满足的属性:无论是否启用调试信息,编译器都应生成相同的机器码。CCMD 对开发者调试不含调试信息的生产二进制至关重要——为定位问题,开发者需要用相同编译选项重新构建一个带调试信息的二进制;若违反 CCMD,两次构建的机器码会不同,从而误导调试器、掩盖缺陷,甚至导致错误编译(GCC 曾在 Linux 内核上出现过此类问题)。摘要主要界定该性质并说明其重要性,未展开具体检测方法与评估细节。
Compilation Consistency Modulo Debug Information (CCMD) is an essential compiler property that a production compiler should support: the compiler should emit the same machine code regardless of enabling debug information. CCMD is vital to developers’ experiences with debugging a production binary containing no debug information. To debug such a binary, developers need build another binary with the same compiler flags and enable debug information. Without CCMD, the machine code in the latter binary will be different, which can confuse the debugger, hide the bug, or even cause a miscompilation (as GCC once did with the Linux Kernel).