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

简介:

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


 故事

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


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


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


 总结


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


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


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

wKioL1QH5UvTGqyHAAEqzDQm034210.jpg

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

  















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



相关文章
|
4月前
|
C++ Windows
应用程序无法正常启动(0xc0000005)?C++报错0xC0000005如何解决?使命召唤17频频出现闪退,错误代码0xC0000005(0x0)
简介: 本文介绍了Windows应用程序出现错误代码0xc0000005的解决方法,该错误多由C++运行库配置不一致或内存访问越界引起。提供包括统一运行库配置、调试排查及安装Visual C++运行库等解决方案,并附有修复工具下载链接。
1455 1
|
11月前
|
存储 安全 C语言
C++ String揭秘:写高效代码的关键
在C++编程中,字符串操作是不可避免的一部分。从简单的字符串拼接到复杂的文本处理,C++的string类为开发者提供了一种更高效、灵活且安全的方式来管理和操作字符串。本文将从基础操作入手,逐步揭开C++ string类的奥秘,帮助你深入理解其内部机制,并学会如何在实际开发中充分发挥其性能和优势。
|
6月前
|
API 数据安全/隐私保护 C++
永久修改机器码工具, exe一机一码破解工具,软件机器码一键修改工具【c++代码】
程序实现了完整的机器码修改功能,包含进程查找、内存扫描、模式匹配和修改操作。代码使用
|
7月前
|
C++
爱心代码 C++
这段C++代码使用EasyX图形库生成动态爱心图案。程序通过数学公式绘制爱心形状,并以帧动画形式呈现渐变效果。运行时需安装EasyX库,教程链接:http://【EasyX图形库的安装和使用】https://www.bilibili.com/video/BV1Xv4y1p7z1。代码中定义了屏幕尺寸、颜色数组等参数,利用随机数与数学函数生成动态点位,模拟爱心扩散与收缩动画,最终实现流畅的视觉效果。
1018 0
|
算法 安全 C++
提高C/C++代码的可读性
提高C/C++代码的可读性
299 4
|
Ubuntu Linux Shell
C++ 之 perf+火焰图分析与调试
【11月更文挑战第6天】在遇到一些内存异常的时候,经常这部分的代码是很难去进行分析的,最近了解到Perf这个神器,这里也展开介绍一下如何使用Perf以及如何去画火焰图。
518 5
|
Ubuntu Linux Shell
C++ 之 perf+火焰图分析与调试
【10月更文挑战第8天】在遇到一些内存异常的时候,经常这部分的代码是很难去进行分析的,最近了解到Perf这个神器,这里也展开介绍一下如何使用Perf以及如何去画火焰图。
317 1
|
Linux C语言 C++
vsCode远程执行c和c++代码并操控linux服务器完整教程
这篇文章提供了一个完整的教程,介绍如何在Visual Studio Code中配置和使用插件来远程执行C和C++代码,并操控Linux服务器,包括安装VSCode、安装插件、配置插件、配置编译工具、升级glibc和编写代码进行调试的步骤。
3122 0
vsCode远程执行c和c++代码并操控linux服务器完整教程
|
11月前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
9月前
|
编译器 C++ 容器
【c++11】c++11新特性(上)(列表初始化、右值引用和移动语义、类的新默认成员函数、lambda表达式)
C++11为C++带来了革命性变化,引入了列表初始化、右值引用、移动语义、类的新默认成员函数和lambda表达式等特性。列表初始化统一了对象初始化方式,initializer_list简化了容器多元素初始化;右值引用和移动语义优化了资源管理,减少拷贝开销;类新增移动构造和移动赋值函数提升性能;lambda表达式提供匿名函数对象,增强代码简洁性和灵活性。这些特性共同推动了现代C++编程的发展,提升了开发效率与程序性能。
385 12