为什么GDB(或任何调试器)逐步进入标题
Why GDB (or any debugger) steps into headers?
我几乎没有2周的自我学习C ,所以这是一个非常基本的问题。现在,据我了解,标头在程序的运行时完全没有角色。编译过程中的编译器仅使用标题。当调试(我正在使用GDB)时,调试器逐步进入标题。而且,当调试时还使用拆卸时,我注意到这些标头步骤实际上代表了汇编说明(例如" MOV"等)。但是二进制文件中甚至不应该存在标题。那么这里发生了什么?
"源文件"也由编译过程中的编译器专门使用,尽管如果您很好地询问编译器,它将将调试符号放置在包含的二进制文件中,该二进制文件将包含程序源文件>和标题文件数据。
"标题"没有什么神奇的。它们仅由公约使用,而#include
D则由一个或多个"源文件" A 预处理器指令使用。这是重要的一点 - 通常是一个程序安排的,因此"标题"可以由不止一次的源文件包含。
您的调试器有助于查明原始代码的位置。
现在,据我了解,标头在 程序的运行时。标题仅由编译器使用 汇编。
这是一个误解,因为标题不是一种特殊的文件。标题(通常.h或.hpp)与其他源文件没有技术不同 - 它只是一个惯例,应该包括标头文件,并且许多标头都包含源代码(只需查看任何STL文件,作为标头文件)
相关文章:
- 需要反转音频步进公式
- Arduino Nano:A4988 使用串行输入时通过定时器进行步进控制不稳定
- 锁定步进pthread互斥
- 在 ODEINT 中通过 if 语句选择步进器
- boost odeint 中的受控误差步进器是否支持复杂的数据类型?
- 创建带有限幅器的步进器控件
- 班上的Arduino步进电动机指针不起作用
- 生成最多给定数字 N 的步进数字
- Boost ODEINT:具有自定义类和向量空间代数的受控步进器
- 我如何仅使用一个Arduino uno才能在同一时间和同一方向上旋转两个步进电动机
- 如何使步进电机运行,直到我按下 Arduino 上的特定键盘按钮
- Arduino Sonar和步进马达
- 这些步进回合是否等效
- 使用C++同步控制多个步进器
- 接口 C++ 以使用 Arduino 控制电机步进器
- 步骤程序?开始、结束、步进整数
- 如何使用ODEINT的标签系统为各种步进器类型做特定工作
- 通过替换模板<类步进器来要求>
- GDB 继续而不是步进
- cpp std::list 使用步进添加新元素