当前位置: 首页 > news >正文

多使用调用堆栈调试VC++代码

时间再紧,还是记一下吧!记下小成功与小失败,继续往前。


 故事

 近一天多时间,(其实在前几天中就隐约出现这个BUG,只是当时没有系统地或者频繁地调试运行故没有发现)被一个BUG折磨得够呛!


  现在归纳来看,根本原因还是自己对于开发工具不熟练。今天再次出现这个BUG,因为代码太长了,没有办法,只得大致根据代码执行流程及自己的经验分析诊断。


  今天休息间(临时被BUG折磨,只得休息一下!),忽然想起以前曾经有几次观察过调用堆栈的事情。于是,抓紧时间试一下,果然成功----一只很大的BUG被挖出来了!


 总结


  犯上述错误原因主要在于:代码非常长(近5000行),而且反复修改,有时很多内容无意间修改不完全(这是一种典型的无意间,而且很多人都会出现的错误),导致后期浪费大量时间。


  结论之一是:以后多多使用系统提供的“重构”功能(如今的我使用的VS2012集成开发环境这方面支持个人感觉已经非常优秀),甚至对于较长的子函数也尽可能使用,从而最大限度地避免上述问题!(有时候,个人有些骄傲,在较长函数内部修改就不使用“重构”了!正是这种原因导致上述BUG。)


  结论之二是:出现系统运行错时,多多使用调用堆栈。如今的调用堆栈能够帮助你最近地靠拢出现BUG的源码处,VERY GOOD!看看我的这个截图吧。

wKioL1QH5UvTGqyHAAEqzDQm034210.jpg

只要双击相应的调用堆栈中那一行,源码立即出现在面前。几乎第一时间就帮助你抓住BUG了!

  










本文转自朱先忠老师51CTO博客,原文链接: http://blog.51cto.com/zhuxianzhong/1548665,如需转载请自行联系原作者




相关文章:

  • Hyper-V 2016 系列教程53 What's new in Hyper-V on Windows Server 2016
  • 一个不错的linux学习资料下载的网址
  • Delphi使用资源文件全攻略
  • 检查邮件服务器的postfix-pop3-mysql服务状态的脚本
  • 华为交换机忘记console的密码,怎么恢复出厂设置
  • 1星《微信软文营销实战技巧》:标题党,作者没有实战经验
  • Windows 2008 R2 Sp1平台整合部署Ex2010与Lync Server 2010参考(三)v1.0
  • O(1)时间内删除指定链表结点
  • 关于项目自动化测试架构的改良计划 - DataProviderEngine架构
  • 读《程序员的SQL金典》[3]--表连接、子查询
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 建造者模式(Java与Kotlin版)
  • oracle无密码登录
  • UNIX/Linux系统取证之信息采集案例
  • 配置Operations Manager与Active Directory集成
  • ES6指北【2】—— 箭头函数
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【刷算法】求1+2+3+...+n
  • JavaScript 基础知识 - 入门篇(一)
  • k8s 面向应用开发者的基础命令
  • learning koa2.x
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • PHP那些事儿
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Spring Boot MyBatis配置多种数据库
  • Swoft 源码剖析 - 代码自动更新机制
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 码农张的Bug人生 - 见面之礼
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 详解移动APP与web APP的区别
  • 学习Vue.js的五个小例子
  • 你对linux中grep命令知道多少?
  • NLPIR智能语义技术让大数据挖掘更简单
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​secrets --- 生成管理密码的安全随机数​
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #pragma data_seg 共享数据区(转)
  • #QT(TCP网络编程-服务端)
  • #图像处理
  • #在 README.md 中生成项目目录结构
  • (003)SlickEdit Unity的补全
  • (4)事件处理——(7)简单事件(Simple events)
  • (42)STM32——LCD显示屏实验笔记
  • (6)STL算法之转换
  • (C语言)fgets与fputs函数详解
  • (C语言)字符分类函数
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (九)One-Wire总线-DS18B20
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • .gitattributes 文件
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码