学C的第十九天【实用调试技巧:1. 调试;2. Windows环境调试介绍;3. 一些调试的实例;4. 一些调试的实例】-2

简介: 查看调用堆栈(调用堆栈)通过调用堆栈,可以清晰地反应函数的调用关系以及当前调用所处的位置。

查看调用堆栈(调用堆栈)

通过调用堆栈,可以清晰地反应函数的调用关系以及当前调用所处的位置

ce4742efa40c42b7aeb68fae044fe63e.png

查看汇编信息

在调试开始之后,有两种方式转到汇编。

               

1. 第一种方式:右击鼠标,选择【转到反汇编】;


7e7ee5b9251e4018b94990d255fa2b1b.png

                   

2. 第二种方式

44325b7acbf44647af936ea29917acad.png

查看寄存器信息

可以查看当前运行环境的寄存器的使用信息。

d67a0d43fa7a4801be4a859b37331c44.png

查看寄存器信息

可以查看当前运行环境的寄存器的使用信息。

  • 初学者80%时间写代码20%时间在调试

           

  • 程序员20%时间写代码80%时间在调试

 

  • 现在学的都是一些简单的调试,以后可能会有很复杂的调试场景多线程程序的调试等;

           

  • 多多使用快捷键提升效率        

4. 一些调试的实例

                 

(1). 实例一:实现代码:求 1!+2!+3! ...+ n! ;不考虑溢出

                 

(需调试的问题代码:)

#include <stdio.h>
//求 1!+2!+3! ...+ n! ;
int main()
{
  int i = 0;
  int sum = 0; //保存最终结果
  int n = 0;
  int ret = 1; //保存n的阶乘
  //输入
  scanf("%d", &n);
  for (i = 1; i <= n; i++)
  {
    int j = 0;
    for (j = 1; j <= i; j++)
    {
      ret *= j;
    }
    sum += ret;
  }
  printf("%d\n", sum);
  return 0;
}

image.png

调试思路:

1. 首先推测问题出现的原因,初步确定问题可能的原因

         

2. 实际上手调试很有必要

3. 根据第1点,调试时心里有数(下一步应该是什么样的)

             

           

(2). 实例二:死循环

           

#include <stdio.h>
int main()
{
  int i = 0;
  int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
  for (i = 0; i <= 12; i++)
  {
    arr[i] = 0;
    printf("hehe\n");
  }
  return 0;
}

b8588a15cd8b44f783173ff4268899a8.png

死循环原因i arr[12] 地址相同

地址会相同的原因:

               

( 数组越界 可能就会出现这种问题)


30e38fe6e2dc4faca8aeecb48c959327.png

相关文章
|
10月前
|
人工智能 测试技术 API
谁说 WebSocket 调试难?Windows 上的“秘密武器”都在这儿,速占先机
从 Apifox 这样集大成者,到 Websocat 这样专注于命令行极致体验的工具,再到 WebSocket King 的开源灵活,以及 Postman 的广泛适用性和 WebSocket.org Toolkit 的即时性,它们共同构成了 WebSocket 开发生态的重要支撑。
|
XML 存储 搜索推荐
Omnissa Dynamic Environment Manager 2503 - 个性化动态 Windows 桌面环境管理
Omnissa Dynamic Environment Manager 2503 - 个性化动态 Windows 桌面环境管理
236 7
Omnissa Dynamic Environment Manager 2503 - 个性化动态 Windows 桌面环境管理
|
Ubuntu 数据库 虚拟化
Windows 环境下 Odoo 安装保姆级教程
本教程详细介绍了在 Windows 系统上通过虚拟机部署 Odoo 的完整流程。首先确认硬件需求,确保 CPU、内存和磁盘空间满足最低配置;接着安装 VMware Workstation Pro 并创建 Ubuntu 虚拟机,配置桥接网络以实现主机与虚拟机的通信;随后借助微聚云快速安装预配置好的 Odoo 环境,简化复杂环境搭建;最后通过浏览器访问虚拟机 IP,完成 Odoo 数据库初始化及基础设置。整个过程清晰易懂,适合新手快速上手 Odoo 部署。
1722 4
|
存储 运维 监控
提升Windows Server环境安全性:ADAudit Plus的五大关键优势
在Windows Server环境中,内置的安全审计工具虽有用,但存在专业门槛高、耗时及功能缺失等问题。第三方工具ADAudit Plus应运而生,其五大优势包括:日志聚合、关键活动检测、定制化报告、灵活安全配置和长期日志保留,有效提升系统监控与合规能力。选择ADAudit Plus,助力企业更高效应对审计挑战,强化安全性。
349 2
|
弹性计算 开发框架 安全
基于云效 Windows 构建环境和 Nuget 制品仓库进行 .Net 应用开发
本文将基于云效 Flow 流水线 Windows 构建环境和云效 Packages Nuget 制品仓库手把手教你如何开发并部署一个 .NET 应用,从环境搭建到实战应用发布的详细教程,帮助你掌握 .NET 开发的核心技能。
|
应用服务中间件 Shell PHP
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
|
Oracle 关系型数据库 MySQL
Mysql(1)—简介及Windows环境下载安装
MySQL 是一个流行的关系型数据库管理系统(RDBMS),基于 SQL 进行操作。它由瑞典 MySQL AB 公司开发,后被 Sun Microsystems 收购,现为 Oracle 产品。MySQL 是最广泛使用的开源数据库之一,适用于 Web 应用程序、数据仓库和企业应用。
353 2
|
SQL JavaScript 数据库
sqlite在Windows环境下安装、使用、node.js连接
sqlite在Windows环境下安装、使用、node.js连接
|
数据可视化 程序员 C#
C#中windows应用窗体程序的输入输出方法实例
C#中windows应用窗体程序的输入输出方法实例
428 0
|
Windows
Windows系统环境编写DOS批处理文件
Windows系统环境编写DOS批处理文件
273 0