我现在已经注册了Udacity Software Development Process的课程,教师说用于填补软件复杂性和开发人员生产力调试之间差距的方法之一从打印行转移到符号调试。 任何人都可以说明这实际意味着什么?
答案 0 :(得分:1)
原名:
print("Before doing this ...");
int x = dothis();
printf("Before doing that ...; x=%d", x);
int y = dothat(x);
今天:
所有局部变量都可以在调试器中看到,并且可以在那里进行修改。可以在调试器中看到调用堆栈。您可以在任何代码行停止,甚至将指令指针移回上一行。
所有打印报表都是不必要的。在源代码中没有忘记它们的风险,使得速度更慢且更危险(请记住Apple的打印密码错误)。
为了实现这一点,除了EXE文件之外,调试器还使用编译器存储的符号。在Windows上,它们存储在PDB文件(程序数据库)中,从而为客户提供了一个小的exe,并为开发人员提供了额外的数据。