C语言学习笔记(八)—— 调试

调试(debug),又称除错,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。

一、调试的基本步骤

  1. 发现错误的存在;
  2. 以隔离、消除等方式对错误进行定位;
  3. 确定产生错误的原因;
  4. 提出纠正错误的解决办法;
  5. 对程序错误予以改正,重新测试;

二、Debug版本和Release版本

VS顶部菜单栏,可以切换Debug版本和Release版本

Debug称为调试版本,它包含调试信息,并且不做任何优化,便于程序员调试程序;

Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好的使用;

快捷键:

  • F10 逐过程和F11 逐语句,在主函数中运行时都是一句一句走,但F10不会进入函数内部,F11会进入被调的函数内部;
  • F9 新建断点/切换断电 和 F5 开始调试,F5需要和断电一起用,不然就直接运行完了;
  • 条件断点:想要在循环的中间某处加断点,可以右击断点->条件,写上断点停下的条件,如i = 8;
  • CTRL+F5  ——  开始执行不调试,即忽略断点运行到最后;

三、查看程序当前信息

  • 查看临时变量:调试—>窗口—>监视(开始调试之后才会显示)
  • 查看内存信息:调试—>窗口—>内存
  • 查看调用堆栈:调试—>窗口—>调用堆栈
  • 查看汇编:调试—>窗口—>反汇编(右击鼠标—>转到反汇编)
  • 查看寄存器信息:调试—>窗口—>寄存器

推荐书籍:《C陷阱和缺陷》

四、写优秀的代码

1)在合适的地方使用assert();

#include<assert.h>
void my_strcpy(char* dest, const char* source)
{
assert(dest != NULL);  // 为假报错
assert(source != NULL);

while(*dest = *source)  // 加const后如果写错*source = *dest会直接报错
{
dest++;
source++;
}
}

2)函数参数尽量用const修饰防止误修改;

int mmain()
{
const int a = 10;
a = 20;  // 此处会报错,因为a是const修饰的常变量

int* ptr = &a;
*ptr = 20;  //此处修改成功,这样就出现了问题

const int* ptr2 = &a;  // 不能改变*ptr的值,但可以改变ptr的值
int* const ptr2 = &a;  //不能改变ptr的值,但可以改变*ptr的值
}

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值