代码之家  ›  专栏  ›  技术社区  ›  Hosam Abdelnaser

过去和现在的调试

  •  0
  • Hosam Abdelnaser  · 技术社区  · 7 年前

    我现在注册了这门关于Udacity的课程 Software Development Process 讲师说,用来填补软件复杂性和开发人员生产率之间差距的方法之一是从打印行调试转移到符号调试。 任何人都能说明这到底意味着什么?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Community CDub    4 年前

    从前:

    print("Before doing this ...");
    int x = dothis();
    printf("Before doing that ...; x=%d", x); 
    int y = dothat(x);
    

    今天:

    Debugging in Visual Studio

    所有局部变量都可以在调试器中看到,并且可以在调试器中修改。调用堆栈可以在调试器中看到。您可以在任何代码行停止,甚至可以将指令指针移回前一行。

    所有打印语句都是不必要的。没有在源代码中忘记它们的风险,制作速度较慢且危险(记住苹果的打印密码错误)。

    为了实现这一点,调试器除了使用EXE文件外,还使用编译器存储的符号。在Windows上,它们存储在PDB文件(程序数据库)中,从而为客户提供一个小的exe,为开发人员提供额外的数据。