调试---C语言

调试技巧详解-VS

  • 1.Debug和Release介绍
  • 2.Windows环境调试
    • 2.1常用快捷键
    • 2.2调试中查看程序当前信息
      • 2.2.1查看临时变量的值
      • 2.2.2查看内存信息、调用堆栈、寄存器信息
      • 2.2.3查看汇编信息
  • 3.如何写出(易于调试)的代码
    • 3.1优秀的代码
    • 3.2编程常见的错误
      • 3.2.1编译型错误
      • 3.2.2 链接型错误
      • 3.2.3运行时错误

调试---C语言_第1张图片

1.Debug和Release介绍

  1. Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
  2. Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。

总结:相同代码在resease版本下所占储存空间更小。

2.Windows环境调试

必须在debug版本下才可进行调试

2.1常用快捷键

F5
启动调试,经常用来直接跳到下一个断点处。

F9
创建断点和取消断点
断点的重要作用,可以在程序的任意位置设置断点。
这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去。

F10
逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句。

F11
逐语句,就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑进入函数内部(这是最常用的)。

CTRL + F5
开始执行不调试,如果你想让程序直接运行起来而不调试就可以直接使用。
更多快捷键介绍

补充:可为断点加上条件(例如断点设置在循环过程中某位置)
调试---C语言_第2张图片

2.2调试中查看程序当前信息

2.2.1查看临时变量的值

调试开始之后,用于观察变量的值。

调试---C语言_第3张图片
对于函数内(形参为数组),也可查看整个数组内容:
调试---C语言_第4张图片

调试---C语言_第5张图片

2.2.2查看内存信息、调用堆栈、寄存器信息

调试开始之后
调试---C语言_第6张图片
补充查看内存信息:
调试---C语言_第7张图片

2.2.3查看汇编信息

调试开始之后
(1)第一种方式:
调试---C语言_第8张图片
(2)第二种方式:右击鼠标,选择 [转到反汇编].

3.如何写出(易于调试)的代码

3.1优秀的代码

  1. 代码运行正常
  2. bug很少
  3. 效率高
  4. 可读性高
  5. 可维护性高
  6. 注释清晰
  7. 文档齐全

一些编程技巧:

  1. 使用assert
  2. 尽量使用const
  3. 养成良好的编码风格
  4. 添加必要的注释
  5. 避免编码的陷阱。

例如下面的例子:

int my_strlen(const char *str)//const防止指针所指向的内容被改变
{
    int count = 0;
    assert(str != NULL);//防止sr为空指针,若为空,报错!
    while(*str)//判断字符串是否结束
   {
        count++;
        str++;
   }
    return count;
}
int main()
{
    const char* p = "abcdef";
    //测试
    int len = my_strlen(p);
    printf("len = %d\n", len);
    return 0;
}

3.2编程常见的错误

3.2.1编译型错误

直接看错误提示信息(双击),解决问题。或者凭借经验就可以搞定。相对来说简单。

3.2.2 链接型错误

看错误提示信息,主要在代码中找到错误信息中的标识符,然后定位问题所在。一般是标识符名不存在或者拼写错误。(例如函数调用但未定义或函数名错误)

3.2.3运行时错误

借助调试,逐步定位问题。最难搞。

你可能感兴趣的:(C语言,c语言,开发语言)