调试器如何知道源代码中的行号?

Sam*_*Sam 4 debugging line-numbers

像Eclipse,NetBeans,Visual Studio等中的调试器

我想知道,因为调试器在执行时会对机器代码进行操作......他们如何跟踪源代码中的行号?

跟踪行号是不是很困难,因为高级指令可能有一堆机器语言指令而另一个可能没有机器语言指令(可能因为它只支持另一个高级指令)?

lar*_*sks 5

当您使用调试标志(例如,gcc -g ...)编译代码时,编译器会将有关源文件和行号的信息插入到已编译的二进制文件中,以便调试器可以在运行时使用此信息. 这个答案更详细地讨论了调试符号.