【发布时间】:2014-07-09 22:06:26
【问题描述】:
假设我在代码中的某处放置了一个断点。调试器是让程序运行到那个点还是它实际上逐条解释它?假设程序是使用 -g 标志编译的。我在问,因为我的朋友说调试器无法将变量的地址保存在符号表中的堆栈中,因此需要解释。但是,我认为,当输入函数时,至少调试器知道这些堆栈变量与堆栈开头的偏移量。
【问题讨论】:
-
它运行代码,并知道给定当前堆栈指针的堆栈中变量的偏移量。它曾经通过在 x86 上使用
INT 3指令覆盖操作码来支持断点,这是调试器的陷阱。我不是 100% 确定 x86_64 上的机制。
标签: c gcc gdb stack symbol-table