gpt4 book ai didi

c++ - 与编译器相比,为什么调试器在发生错误时更加具体?

转载 作者:行者123 更新时间:2023-11-28 00:51:10 25 4
gpt4 key购买 nike

来自 C++ 中的思考 - 卷。 1:

Interpreters have many advantages. The transition from writing code to executing code is almost immediate, and the source code is always available so the interpreter can be much more specific when an error occurs.

解释器总是直接在源代码上工作(在将它逐行翻译成机器代码之后),所以这可能是发生错误时它可以更加具体的原因。

发件人:What does it mean to say that the source code is always available to interpreters?

speed is one criteria to use interpreter. and yes, it can directly refer to source code when error occurs. but when run-time runs compiled code, it can't refer to exact line where error occured.

现在,调试器呢?
GDB 处理编译器产生的输出,所以这里 GCC 和 GDB 处理相同的文件。

与编译器相比,为什么 GDB 能够在准确的行(在运行时)显示准确的错误?

最佳答案

Why is GDB able to show the exact error on the exact line (during run time) then as compared to the compiler?

这是两种用途不同的软件。首先你应该明白这一点。

so here GCC and GDB have same files to work on

不完全是,Debugger 需要在编译期间生成更多文件。 (称为符号)。这些符号是编译代码和源代码之间的桥梁。

我不太确定 GCC 但它应该有 debugrelease 构建选项。当您在 Debug模式下编译时,默认情况下会生成有助于 GDB 调试的符号。但在 Release模式下,默认情况下不会生成符号,GDB 无法调试发布版本。

关于c++ - 与编译器相比,为什么调试器在发生错误时更加具体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14037712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com