最近关于调试的经验教训

  • Visual Studio 2008调试的一些经验
    • 常规的调试的思路
    • 基础的调试按钮的含义以及一些快捷键
    • 错误:0xXXXXXXXX处最可能的异常: 0xC0000005: 写入/读取位置 0xxxxxxxxxxxx 时发生访问冲突。

Visual Studio 2008调试的一些经验

学习vs2008的调试功能十分重要,在程序中难免遇到bug,如何定位bug,解决bug,就涉及到了调试的用法和技巧,这篇文章结合最近遇到的问题和体会,做一个总结,先讲一些流程性的,再针对一个具体问题介绍调试方法。

常规的调试的思路

在测试发现并报告bug之后,一个常规的调试的思路如图所示:

基础的调试按钮的含义以及一些快捷键

有了测试的思路之后,就可以开始调试了,但首先应了解一些基础的调试按钮的含义以及一些快捷键。

  1. F9快速断点设置
  2. F5调试输出
  3. 变量监视(调试——>窗口)
  4. 用堆栈(调试——>窗口)
  5. 过程调试(F10):
    在断点处,如果希望继续执行程序,则可按F5键,程序会运行到下一个断点的代码行处。
    如果要一步步查看程序的执行情况,以及变量、属性值等,可按F10键.
  6. 逐语句调试(F11):
    在调用函数的情况下,逐过程调试将执行函数,然后跳过函数体;逐语句调试能够看到函数体内的代码逐句执行的情况。加入WriteLine方法来辅助输出调试信息。
  7. 断言的使用
    Debug类(命名空间System.Diagnostics)
    Debug.Assert(表达式,string str):表达式,测试条件,str:提示消息。
    测试是调试的入口,重心在于设计输入数据让特定问题出现的技巧。
  8. 调试不等于测试,调试重心在于修正语法错误和逻辑错误的过程,重点在于定位问题。
    具体的工具栏,注意:调试过程中前向后向的使用容易被忽略,好好利用可以减少反复开始调试的麻烦。
  9. ctrl+f为在vs中快速搜索

错误:0xXXXXXXXX处最可能的异常: 0xC0000005: 写入/读取位置 0xxxxxxxxxxxx 时发生访问冲突。

接下来就要介绍一类型比较难以查找的错误:0xXXXXXXXX处最可能的异常: 0xC0000005: 写入/读取位置 0xxxxxxxxxxxx时发生访问冲突。

这类错误通常很难查找,因为不是由于哪里写错了导致,一般来说产生这种错误的方式主要有以下三个原因:

上面的意思就是你把值付给了不该赋给的变量,或者说你把值付给了不能付给的变量(或者常量)

  1. 最简单也最直接的错误可能就是scanf()的问题,我们都知道输入的时候都是scanf("%格式",&变量),那么除了字符串(可要&,可不要)之外,所有的输入都需要&,如果你丢了,在很多编译器上变异的时候是查不出来的,也就是说是没有错的,但是输入数据会差生上述错误,是因为写成scanf("%格式",变量)这种形式了,这样你所输入的变量就不知道会存储到哪里。
  2. 空指针赋值的问题。
    我们知道如果某一个指针是空的是不能直接给他赋值的原因是空指针不知道指得什么东西,那么他没有固定的内存,现在你给他赋值,通俗点理解就是他不知道该怎么存,也不知道存在哪,也不会储存,但是现在你有需要让他存储,那么就会出现上述的问题,这时候解决办法就是重新申请空间(用malloc或者new),或者是你尽量避免他成为空指针,或者是当他有成为空指针的可能性时,你就单独讨论。在c++中要注意是不是没有new出来或者之前的指针没有释放(release)
  3. 还有一种可能性就是指针没问题,有正常的创建和释放,但是你在赋值过程中把一个空的值赋给了指针(可能由于数据不存在或者没计算出来导致有空值),这样的程序可以通过编译,但是当你用到部分功能的时候就会报出上述的错误。
  4. 最近又遇到类似的情况,是属于读取某个地址的指针出现错误的情况,这是由于编程时有可能之前已经释放过指针,后面再次进行释放的时候由于该指针已经被释放,所以读取的时候就找不到地址了(2020.9.16补充)

如果有哪里不对的地方,请各位批评指正,不断学习

关于Visual Studio 2008调试的一些经验以及错误(0xXXXXXXXX处最可能的异常: 0xC0000005: 写入位置 0x00000014 时发生访问冲突)相关推荐

  1. 在调试时出现:~处有未经处理的异常: 0xC0000005: 读取位置 0xcccccccc 时发生访问冲突

    这个0xcccccccc是DEBUG模式下,编译器为没有初始化的指针填充的地址值.当你进入到断点时,也会看到很多其他的未初始化的指针都是这个值 究其原因,就debug版中的堆栈中的局部变量(包括指针) ...

  2. 利用Debug调试代码解决0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突

    VS2019利用Debug调试代码解决0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突 之前一直是使用release发布代码模式进行程序编译,前天突然出现这个问题 ...

  3. win8和win10下,visual studio 2008 调试出现无响应的卡死问题解决

    出现该问题是因为安装了中文的输入法,而没有类似'英文(美国)''英文(英国)'这样的键盘,在控制面板里 语言 功能,把语言类型加上English就好了.

  4. 使用Visual Studio 2008 Express的C / C ++初学者调试指南

    介绍 (Introduction) 本文是有关C / C ++ Visual Studio Express调试器的系列文章中的第一篇. 它提供了使用调试器的快速入门指南. 第2部分重点介绍断点中的其他 ...

  5. 【C++】利用Visual Studio 2008编写C++,Visual Studio 2008的基本使用

    现在很多高校还是利用Visual C++ 6.0这一经典版本在教C++,很多人对自己第一个程序的回忆是利用Visual C++ 6.0用C语言写的Helloworld,之后再学习C++的类,不过还是在 ...

  6. IE老是弹出Visual Studio 实时调试器的解决办法

    在网上找了半天,以前也解决过个问题,但一下忘记了,现在把方法记录在这里 相信安装了VS2008的朋友都有同样的经历,就是经常在浏览网页的时候会弹出Visual Studio 实时调试器,非常烦人.其实 ...

  7. Visual Studio 2008 当页面进行调试时,IE8浏览器显示的是空白页面?

    Visual Studio 2008 当页面进行调试时,IE8浏览器显示的是空白页面? [ 标签:studio 调试,浏览器,空白 ] Say goodbye 回答:2 人气:2 提问时间:2009- ...

  8. Visual Studio 2008 断点调试直接跳出代码窗口

    怪现象,Visual Studio 2008 断点调试直接跳出代码调试窗口. 1 必须使用F11,不能使用F10,否则直接跳出代码调试窗口. 2 必须设置多个断点,否则直接跳出代码调试窗口. 3 有时 ...

  9. Visual Studio 2008 和 .NET 3.5 发布了

    转自:http://blog.joycode.com/scottgu/archive/2007/11/20/111568.aspx [原文地址]Visual Studio 2008 and .NET ...

最新文章

  1. 微服务网关解决方案调研和使用总结 专题
  2. 容器生态系统 (续) - 每天5分钟玩转容器技术(3)
  3. SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-003-@Conditional根据条件生成bean及处理profile...
  4. 50种Matplotlib科研论文绘图合集,含代码实现
  5. 【数据结构总结】第五章 树和二叉树(非线性结构)
  6. 老王说ros的tf库
  7. python3.0下载用什么浏览器_无法让Python下载网页源代码:“不支持浏览器版本”...
  8. easyUI属性汇总
  9. 转 android有用代码片段
  10. c++ 文件读写(转)
  11. 【Hadoop】安装Apache Hadoop
  12. 微信开发者工具在线调试
  13. 图片水印 之 二
  14. 在计算机上的英语作文,我和电脑的英语作文
  15. qq连连看看外挂-我的QQ连连看“辅助”程序源码
  16. 解决iText 5.0.1生成pdf,加入iTextAsian.jar 出现异常 Font 'STSong-Light' with 'UniGB-UCS2-H'...
  17. 小程序修改单页面的背景颜色
  18. js获取当月第一天年月日和最后一天年月日
  19. 激光雷达基础:坐标系
  20. python求列表的中位数_python中获取中位数的两种方法

热门文章

  1. NUC系列迷你电脑改装苹果网卡的又一神器方案
  2. 浅析文本挖掘(jieba模块的应用)
  3. 吕海楠201552216
  4. java的深浅拷贝_Java中深浅拷贝
  5. VMware下centos7安装k8s(Kubernetes)多master集群
  6. 1ppi等于多少dpi_图片知多少?
  7. [转]全球付虚拟卡申请流程~
  8. Pytorch:optim.zero_grad()、pred=model(input)、loss=criterion(pred,tgt)、loss.backward()、optim.step()的作用
  9. Windows 10免费原生打开HEIC格式的图片(无需转换,直接用照片打开)
  10. 游记-NOI2019(hzy的退役日志)