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

简介:

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


 故事

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


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


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


 总结


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


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


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

wKioL1QH5UvTGqyHAAEqzDQm034210.jpg

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

  















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



相关文章
|
1天前
|
存储 安全 C语言
C++ String揭秘:写高效代码的关键
在C++编程中,字符串操作是不可避免的一部分。从简单的字符串拼接到复杂的文本处理,C++的string类为开发者提供了一种更高效、灵活且安全的方式来管理和操作字符串。本文将从基础操作入手,逐步揭开C++ string类的奥秘,帮助你深入理解其内部机制,并学会如何在实际开发中充分发挥其性能和优势。
|
3月前
|
算法 安全 C++
提高C/C++代码的可读性
提高C/C++代码的可读性
90 4
|
3月前
|
Ubuntu Linux Shell
C++ 之 perf+火焰图分析与调试
【11月更文挑战第6天】在遇到一些内存异常的时候,经常这部分的代码是很难去进行分析的,最近了解到Perf这个神器,这里也展开介绍一下如何使用Perf以及如何去画火焰图。
151 5
|
4月前
|
Ubuntu Linux Shell
C++ 之 perf+火焰图分析与调试
【10月更文挑战第8天】在遇到一些内存异常的时候,经常这部分的代码是很难去进行分析的,最近了解到Perf这个神器,这里也展开介绍一下如何使用Perf以及如何去画火焰图。
|
4月前
|
Linux C语言 C++
vsCode远程执行c和c++代码并操控linux服务器完整教程
这篇文章提供了一个完整的教程,介绍如何在Visual Studio Code中配置和使用插件来远程执行C和C++代码,并操控Linux服务器,包括安装VSCode、安装插件、配置插件、配置编译工具、升级glibc和编写代码进行调试的步骤。
634 0
vsCode远程执行c和c++代码并操控linux服务器完整教程
|
5月前
|
C++
继续更新完善:C++ 结构体代码转MASM32代码
继续更新完善:C++ 结构体代码转MASM32代码
|
5月前
|
C++ Windows
HTML+JavaScript构建C++类代码一键转换MASM32代码平台
HTML+JavaScript构建C++类代码一键转换MASM32代码平台
|
5月前
|
C++
2合1,整合C++类(Class)代码转换为MASM32代码的平台
2合1,整合C++类(Class)代码转换为MASM32代码的平台
|
1天前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
1天前
|
安全 编译器 C语言
【C++篇】深度解析类与对象(中)
在上一篇博客中,我们学习了C++类与对象的基础内容。这一次,我们将深入探讨C++类的关键特性,包括构造函数、析构函数、拷贝构造函数、赋值运算符重载、以及取地址运算符的重载。这些内容是理解面向对象编程的关键,也帮助我们更好地掌握C++内存管理的细节和编码的高级技巧。