内存记号(Memory Trail)[自定义的名字] --调试方法
即使你把输出导向到文件中,运转记录花费的时间所带来的冲击,仍然足够改变程序的执行结果。如果要改善这种情况,我必须回到一个我所谓的“Memory Trails”(内存记号)的低阶技术中。
为了使用 memory trail,你必须产生一个全局缓冲区,以及一个指向该缓冲区的全局指针。例如:
char gMemTrail[16384];
char *pMemTrail = gMemTrail;
每当想印出某些东西到屏幕上或文件中,你就写一个记号到 memory trail中。例如:
*pMemTrail++ = 'D';
你的程序中的每一个追踪点都应该写出一个不同的记号。不论什么时候你想要,或是在程序当掉之后,你可以利用调试器看看 memory trail 的内容,分析其间到底发生了什么事。它当然不像文字那么容易阅读,但总比乱猜的好。
有一个鲜为人知的调试器特性,可以帮助你观看这个缓冲区内容。当程序停在断点上时,选择 Visual C++ 的【View/Memory】,打开“内存窗口”。一旦窗口开启,双击程序中的全局变量,使它成为高亮度,然后把它拖拉到“内存窗口”中,于是你就会看到数据以字节形式表现出来。如果要切换为文字形式,请选按【Tools/Options】菜单项,并选择其中的【Debug】附页,然后在“内存窗口”中把【Format】设定为 ASCII。[这个非常的好,非常的有用]
现在每当你的程序在调试器中停下来,“内存窗口”就会把有变化的数据高亮度起来。这样就可以很方便地观察 memory trail 中哪些数据被加了进来。如果你需要储存更多信息,你可以使用一个 DWORDs 数组,放置整个观察集合。例如:
*pBuf++ = (5 << 16 | some_useful_value);
这可以把 5 存放到较高字,把另一个数值存放在较低字。“内存窗口”可以被设定为 Long Hex 模式,于是数据可以比较容易被解读。
Memory trails 可以大量降低彼此干扰的可能性,因为它既没有用到系统函数,也没有用到同步机制。然而也由于它不是同步操作,当两个线程同时写入一笔数据,memory trails 还是有可能遗失数据。如果你有许多线程,而其中有许多断点,这可能会造成严重的问题。
【查看--调试窗口--memory】
【工具---选项---调试---内存器窗口】
【结束语】:欢迎网友们推荐更多的,更好的调试方法
转载于:https://www.cnblogs.com/azbane/p/7714661.html
内存记号(Memory Trail)[自定义的名字] --调试方法相关推荐
- iOS 对付内存泄漏,来说说我的调试方法
2019独角兽企业重金招聘Python工程师标准>>> 苹果在iOS5推出了ARC(自动引用计数)技术,此模式下编译器会自动在合适的地方插入retain.release.autore ...
- linux 内存管理 ppt,Linux内存管理 Memory Manager.ppt
<Linux内存管理 Memory Manager.ppt>由会员分享,可在线阅读,更多相关<Linux内存管理 Memory Manager.ppt(24页珍藏版)>请在人人 ...
- GDB内存断点(Memory break)的使用举例
本博客(http://blog.csdn.net/livelylittlefish)贴出作者(三二一@小鱼)相关研究.学习内容所做的笔记,欢迎广大朋友指正! GDB内存断点(Memory break) ...
- HALCON: 内存管理(Memory Management)
内存管理(Memory Management) .net框架的运行时环境CLR(公共语言运行时)有一种被称为垃圾收集器的机制,CLR使用它来从内存中移除不再需要的.net对象. 正如前面提到的,在导出 ...
- 【C语言】一组内存函数——memory
hello~~,我是~小鹿,这是我的第二篇博客,算是接着上一篇的字符串函数写的吧,这一篇讲的是内存函数,能够直接操作内存,内存函数不需要知道被操作的内容类型,只需要告知内存即可. 有什么不对的地方希望 ...
- [Debug]内存问题的一些调试方法
1,使用valgrind工具 valgrind使用介绍 valgrind官网 如果要使用图形化的界面,要安装QT,工具名字是valkyrie 通过top命令,/proc/meminfo看总内存,看每个 ...
- Linux内存不够调试,Linux系统内存错误调试方法
而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址. 一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由g ...
- linux内存不足+段错误,Linux系统内存错误产生的原因及调试方法(段错误|core dumped)[转]...
产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址. 一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来 ...
- linux 内存出错位置,Linux系统内存错误产生的原因及调试方法
而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址. 一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由g ...
- 005 Linux系统内存错误产生的原因及调试方法(段错误|core dumped)
Linux系统内存错误产生的原因及调试方法(段错误|core dumped)[转] Posted on 2008-09-05 14:52 猫头鹰 阅读(84) 评论(0) 编辑 收藏 引用 所属分类 ...
最新文章
- Linux系统如何安装AutoFs挂载服务
- oracle where order by,ORACLE SQL WHERE和ORDER BY
- redis实现数据库(一)
- 原 IOS之NSValue整理
- SQL Server2008数据库用户管理 (第三部分)
- Thread.Join 和 Task.Wait 方法
- 500多套微精品信小程序源码部分带后台,不同行业的源码集合,适合快速开发和自己学习
- WinCE下3G模块的调试
- MySQL基础笔记(14)-使用Amoeba和Docker搭建MySQL读写分离架构
- google浏览器缓存文件在哪里
- 用 GNS3 做CCNA网络实验(4)
- python依照概率抽样_统计概率思维之总体与抽样
- 计算机算法描述方式有哪些,算法的描述方法有哪几种
- 数字滚动插件——CountUp.js
- java处理图片与base64编码互相转换
- 【python小课堂专栏】python小课堂11 - 变量篇
- 使用Scrapy框架爬取88读书网小说,并保存本地文件
- 基于微信小程序的个人电台系统的设计与实现
- 西施陪他游湖,金庸为他写书,2000多年前的他有何过人之处?
- 【EasyUse】关于键盘加速键的几点思考