为什么GDB(或任何调试器)逐步进入标题

Why GDB (or any debugger) steps into headers?

本文关键字:步进 标题 调试器 GDB 任何 为什么      更新时间:2023-10-16

我几乎没有2周的自我学习C ,所以这是一个非常基本的问题。现在,据我了解,标头在程序的运行时完全没有角色。编译过程中的编译器仅使用标题。当调试(我正在使用GDB)时,调试器逐步进入标题。而且,当调试时还使用拆卸时,我注意到这些标头步骤实际上代表了汇编说明(例如" MOV"等)。但是二进制文件中甚至不应该存在标题。那么这里发生了什么?

"源文件"也由编译过程中的编译器专门使用,尽管如果您很好地询问编译器,它将将调试符号放置在包含的二进制文件中,该二进制文件将包含程序源文件>和标题文件数据。

"标题"没有什么神奇的。它们仅由公约使用,而#include D则由一个或多个"源文件" A 预处理器指令使用。这是重要的一点 - 通常是一个程序安排的,因此"标题"可以由不止一次的源文件包含。

您的调试器有助于查明原始代码的位置。

现在,据我了解,标头在 程序的运行时。标题仅由编译器使用 汇编。

这是一个误解,因为标题不是一种特殊的文件。标题(通常.h或.hpp)与其他源文件没有技术不同 - 它只是一个惯例,应该包括标头文件,并且许多标头都包含源代码(只需查看任何STL文件,作为标头文件)