来自C++ 中的思考 - 卷。1:
口译员有很多优点。从编写代码到执行代码的转变几乎是立即的,源代码始终可用,因此当发生错误时解释器可以更加具体。
解释器总是直接在源代码上工作(在将它逐行翻译成机器代码之后),因此可能是它在发生错误时可以更加具体的原因。
速度是使用解释器的标准之一。是的,发生错误时可以直接参考源代码。但是当运行时运行编译后的代码时,它不能引用发生错误的确切行。
现在,调试器呢?
GDB 处理编译器产生的输出,所以这里 GCC 和 GDB 有相同的文件可以处理。
与编译器相比,为什么 GDB 能够在准确的行(在运行时)上显示准确的错误?