学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

相关文章
|
1月前
|
前端开发
windows10 安装node npm 等前端环境 并配置国内源
windows10 安装node npm 等前端环境 并配置国内源
48 3
|
8天前
|
Python Windows
Python 在 Windows 环境下的文件路径问题
在 Python 程序中,我们经常需要对文件进行操作。在 Windows 下,文件目录路径使用反斜杠“\”来分隔。然而,在 Python 代码中,反斜杠“\”是转义符,例如“\n”表示换行符、“\t”表示制表符。这样,如果继续使用“\”表示文件路径,就会产生歧义。
|
11天前
|
Windows
Grandle安装配置(8.2.1)-windows环境
Grandle安装配置(8.2.1)-windows环境
18 2
|
20天前
|
网络安全 C++ Windows
【Windows驱动开发】(主机)VS2017+(虚拟机)win10系统------双机调试
【Windows驱动开发】(主机)VS2017+(虚拟机)win10系统------双机调试
|
21天前
|
编解码 Windows
FFmpeg开发笔记(二十九)Windows环境给FFmpeg集成libxvid
XviD是开源MPEG-4视频编码器,与DivX相似但后者非开源。早期MP4常使用XviD或DivX编码,现已被H.264取代。在Windows上集成FFmpeg的XviD编解码库libxvid,需访问<https://labs.xvid.com/source/>下载源码,解压后在MSYS环境中配置、编译和安装。之后重新配置FFmpeg,启用libxvid并编译安装。详细步骤包括configure命令、make和make install。成功后,通过`ffmpeg -version`检查是否启用libxvid。更多音视频开发技术可参考《FFmpeg开发实战:从零基础到短视频上线》。
58 0
FFmpeg开发笔记(二十九)Windows环境给FFmpeg集成libxvid
|
2天前
|
XML Ubuntu Linux
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署
|
26天前
|
运维 Linux 网络安全
跨平台SSH文件传输:Linux与Windows环境下的实践指南
本文介绍了在Linux和Windows之间使用SCP、SecureCRT及PuTTY工具集进行文件传输的方法。在Linux中,利用SCP命令进行文件下载、上传及目录传输。在Windows环境下,PSFTP和PSCP提供类似功能,而SecureCRT作为SSH客户端,支持设置上传下载目录并进行文件传输。掌握这些工具的使用可提升跨平台运维效率。
|
5天前
|
Java Linux 开发工具
Windows环境下Android Studio v1.0安装教程
Windows环境下Android Studio v1.0安装教程
14 0
|
10天前
|
编译器 C语言 C++
Windows下配置GCC(MinGW)环境
Windows下配置GCC(MinGW)环境
22 0
|
12天前
|
网络协议 安全 Docker
windows环境下的设置docker远程访问(开放2375端口)
windows环境下的设置docker远程访问(开放2375端口)
15 0