【C语言精讲】——代码调试方法

2023-10-31

1. 调试

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

1.1 调试的基本步骤

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

1.2 Debug和Release

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

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

 

2. 调试快捷键

F5

启动调试,会向后执行代码到下一个逻辑上的断点。(通常使用F5跳到想要的断点处)

F9

设置断点,程序执行到断点处就会主动停下来

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

F10

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

(遇到函数直接跳过)

F11

逐语句,每次都执行一条语句,可以执行进入函数内部(常用)。

Ctrl + F5

开始执行不调试,直接运行程序。

3. 调试时查看程序当前信息

按F10或F11进入调整状态以后:

3.1 查看临时变量的值

3.2 查看内存信息

3.3 查看调用堆栈

3.4 查看汇编信息

方法一(在调试→窗口选择反汇编)

 方法二(直接在代码行右击选择反汇编)

3.5 查看寄存器信息

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【C语言精讲】——代码调试方法 的相关文章

随机推荐

  • React中组件懒加载的使用

    为什么要使用懒加载 减少了应用启动时间 页面的加载速度变快 提升用户体验 懒加载 页面首次打开 不加载在路由中设置为懒加载的组件 只有用户在实际使用中 使用到了这个组件 才会开始加载 实现代码 import React lazy from
  • VMware Workstation Player与VMware Workstation Pro的区别

    linux开发与学习 免不了安装虚拟机 想想自己最开始只有一台电脑 为了体验最有滋味的linux 划重点 直接装了个双系统 之后就是各种苦不堪言 在ubuntu学着做着 为了个工具不得不关机重启回到windows 过了一分钟 切到windo
  • JS高级(4)函数高级 — 闭包

    闭包 循环遍历 给每个按钮都绑定上单击响应函数 var btns document getElementsByTagName button for var i 0 i lt btns length i 这样写会有一个问题 btns是一个伪数
  • 什么是区块链?区块链详解

    区块链简介 什么是区块链 目前没有看到很好的定义和介绍 网上要么是讲一些区块链意义的空泛文章 比如 区块链技术颠覆谁谁谁 又或 互联网已颠覆世界 区块链要颠覆互联网等等 要么就是通篇介绍比特币 矿工 挖矿等 那么区块链到底是个什么东西 它跟
  • python bottle 制作表单_使用Bottle(Python)的AJAX提交表单

    我在使用Bottle框架进行 AJAX通信时遇到了一些问题 这是我第一次使用AJAX 所以我可能只是错误的基础知识 希望瓶子 AJAX大师可以指出这个新手正确的方向 这是我正在使用的代码 usr bin env python from bo
  • dm9000网卡,uboot代码分析

    uboot移植 九 移植网卡DM9000 一 原理 TQ210 板载的网卡芯片是 DM9000A 接在 S5PV210 的 SROM 控制器的 BANK1 上 S5PV210 的 SROM 控制器支持 8 16 位 NOR Flash PR
  • 人工智能数学基础6:极限、极限运算、ε-δ语言、ε-N语言、级数和函数连续性

    老猿Python博文目录 一 极限的定义及四则运算 极限 某一个函数中的某一个变量 此变量在变大 或者变小 的永远变化的过程中 逐渐向某一个确定的数值A不断地逼近而 永远不能够重合到A 永远不能够等于A 但是取等于A 已经足够取得高精度计算
  • framebuffer驱动详解

    裸机中如何操作LCD LCD的显示原理 DDR中分出一块内存 将要显示的内容放到显存中 硬件自动将显存数据放到驱动器中 驱动器操控LCD显示内容 裸机操作LCD的方法由LCD的本身的工作原理决定 OS下操作LCD的难点 内核 驱动 做底层硬
  • c++中数组的使用

    在c 中 有三个强而有力的工具 分别是数组 指针还有字符串 可以说 没有熟练掌握这三个工具的不能算是一个合格的程序员 1 数组 数组 实际上就是向系统申请一个连续的内存空间 每个内存空间的地址连续 并且大小相同 关于数组的声明 语法如下 类
  • Object类、String类、字符串、异常

    快捷键 再IDEA中查看JDK的源代码 ctrl 7 查看一个类的所有方法或者属性 alt 7 快捷生成toString方法 alt insert enter 一 Object类 Object类是参数的最高统一类型 1 1 Java lan
  • Unity发布抖音小游戏:SDK接入

    上篇介绍Unity小游戏发布抖音平台的开发者账号注册以及小游戏创建和申请 本篇介绍字节SDK接入Unity游戏项目中 接入参考教程 Docs 下载bgdt package包 并导入Unity项目工程 打开ByteGame菜单 弹出字节工具面
  • NumPy库的学习

    本文主要记录的是笔者在B站自学Numpy库的学习笔记 引入numpy库 import numpy as np 矩阵的创建 创建一个二行三列的矩阵 array np array 1 2 3 2 3 4 查看array的行数 形状 元素数量 p
  • 第一次发布自己的npm包

    背景 在做表单的时候 会遇到很多的表单项的验证工作 几乎很多验证都是重复的 有一个比较好的lodash库来做了这些工作 但是里面有些方法与自己的期望不符 比如 lodash isEmpty 2 true是会认为是空的 这显然与实际的业务是不
  • Jsch性能问题

    Jsch是纯Java实现的SSH开源框架 可以用来执行shell命令 实现sftp上传 其中在使用中发现在session connect时连接非常耗时 很慢 经研究 log调试发现是开启gssapi认证导致 因为本程序中只使用密码认证 所以
  • JS 页面显示图片

    HTML页面 div class mini datagrid div div div
  • 程序员失业2个月找不到工作,狂刷了5遍这份pdf终获字节跳动offer

    写在前面 1月初失业 找了近2个多月的工作了 还没找到心仪的工作 感觉心好慌 不知道该怎么办了 找不到工作的时候压力很大 有人说自信会很受打击 还有人说会很绝望 是人生的低谷 尽管很多时候我们自己知道 我不是找不到工作 只是找不到理想中的好
  • 有源光网络VS无源光网络

    有源光网络 AON Active Optical Network 有源光网络 是指信号在传输过程中 从局端设备到用户分配单元之间采用光电转换设备 有源光电器件以及光纤等有源光纤传输设备进行传输的网络 有源光器件包括光源 激光器 光接收机 光
  • 助力游戏开发者,看 Google 有哪些“上新”?

    Cloud Ace 是谷歌云全球战略合作伙伴 拥有 300 多名工程师 也是谷歌最高级别合作伙伴 多次获得 Google Cloud 合作伙伴奖 作为谷歌托管服务商 我们提供谷歌云 谷歌地图 谷歌办公套件 谷歌云认证培训服务 官网 http
  • docker: Error response from daemon: driver failed programming external connectivity on endpoint lamp

    Docker容器做端口映射报错 docker Error response from daemon driver failed programming external connectivity on endpoint lamp3 46b7
  • 【C语言精讲】——代码调试方法

    1 调试 调试 Debugging Debug 又称除错 是发现和减少计算机程序或电子仪器设备中程序 错误的一个过程 1 1 调试的基本步骤 发现程序错误的存在 以隔离 消除等方式对错误进行定位 确定错误产生的原因 提出纠正错误的解决办法