
c++
野男孩
坚持做技术的土人
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
VC++6.0调试篇:内存断点
经常有人问我关于内存断点的问题,刚才看帖又看到一个哥们问起这事。干脆就写一篇简单教程吧。 翻出了一个快排的程序。初始化了一个待排序数组,这时候如果我想看看arr[0]这个内存单元的值是何时开始变化的,那么就可以在这个内存地址直接下数据断点。打开Edit-->Breakpoints菜单,出现Breakpoints窗口,选Data叶面。内存断点需要在调试过程中使用,这原创 2008-03-08 08:42:00 · 8896 阅读 · 13 评论 -
VC++6.0调试篇:变量的观察--watch窗口的技巧
接着上篇,写一下VC6的watch窗口的一些小技巧,对于调试过程是非常有帮助的。VC6年纪已经很大了,微软好像也不再支持,但是还是有很多人在用。我本人是非常喜欢它的小巧(相对vs2003,2005),占资源少,即使这样它的调试功能仍然超级强,真是不错。 好,废话到此结束,下面贴代码来说明:#include stdio.h>#include windows.原创 2008-03-16 12:34:00 · 11229 阅读 · 9 评论 -
reinterpret_cast的本质
先看看下面的代码:#include iostream> using namespace std;void main() { int i = 875770417; couti" "; char* p = reinterpret_castchar*>(&i); for(int j=0; j4; j++) coutp[j]; coutendl原创 2008-03-24 06:46:00 · 3071 阅读 · 2 评论 -
浅谈VC6中Debug版本与Release版本生成的Exe的差异
用Vc6编写的程序有时候Debug版本好好的,Release版本运行就出错,很多人都遇到过这种问题。前几天又有人问起,于是找了点时间写下这篇东西。总结了一部分Debug版本和Release版本的区别,都是些个人理解,欢迎交流。 Debug版本和Release版本之所以有区别,就是在于各自的编译项不同。不同的编译项组合产生不同的代码,Debug版本的编译项屏蔽了编译原创 2008-03-23 09:45:00 · 2655 阅读 · 4 评论 -
VC++6.0调试篇:运行时间的观察--watch窗口的技巧续
微软精心打造的VC调试器确实非常方便,再来看个watch窗口的小技巧:用作计时器 有时候可能想要知道个函数或者一段代码运行需要的粗略时间。一般是假如一些计时的处理,比如函数开始时调用GetTickCount()记录开始时间,完了在调用一边获得结束时间,一减就出来~~ 不复杂,但是确实需要动代码。实际上调试器中的watch窗口就能帮你简单的完成这个功能。很简单的代码,mai原创 2008-09-08 19:22:00 · 2774 阅读 · 0 评论 -
Windows中主流的调试器介绍
调试器,顾名思义,就是用于调试的工具。为什么要调试呢?这得从一条虫子(bug)说起。江湖中传说还是在第一代真空管电子计算机时代,有一次研究人员发现计算机的行为不正常。于是他们就开始检查每个环节想找到原因,最终他们在机器里找到了条虫子(bug)从而解决了问题。于是后来便把发现并解决程序中与预期不符的行为称之为捉虫或除虫,也就bug加个De-前缀,即Debug。 火星人开发的程序是不是绝对没有原创 2008-09-21 09:18:00 · 1952 阅读 · 1 评论 -
实战:结合Dr.Watson系统日志和Vc6来定位多线程环境下程序异常退出的错误
当开发的软件发布以后,在客户那运行时可能会因为各种原因导致程序退出。这种情况很尴尬,很明显我们无法在客户机器上装个Visual Studio调试,所以必须有机制来收集出错的信息。软件本身的运行日志能提供部分信息,但是可能还不够。Windows系统为此提供了解决方案:Dr.Watson工具。Dr.Watson也算是一个小巧的调试器,32位的版本名字是drwtsn32.exe。可用于当系统中有原创 2008-09-29 06:36:00 · 7641 阅读 · 13 评论 -
VC++6.0调试篇:定位临界区(critical section)导致的死锁
在多线程程序的开发中,因为效率的关系,通常会选用CriticalSection作为同步的机制。初学者在设计开发多线程程序时经常会出现死锁的情况,昨天就看到有个哥们在发帖问这个(明显是郁闷中阿)。这里通过一个例子说下不用Intel的Thread Checker,Thread Profiler,也不用强大的WinDbg,只是用土土的VC6自带的调试器如何来轻松的定位这种死锁问题。原创 2008-12-10 05:08:00 · 9675 阅读 · 11 评论 -
理解内存管理的本质
看到很多使用C/C++的朋友都在内存管理上跌倒,不断的苦苦挣扎。究其原因,并非全是因为粗心导致的错误,而是在内存管理的理解上有偏差导致的混乱。个人认为关于内存的使用,最重要的一点就是认识到内存分配和释放操作的本质其实是对一片内存地址范围的所有权的分配。下面会详细阐述一下我个人的理解,希望对需要的朋友,尤其是新人会有些帮助。 作为C/C++开发人员来说,语言本身原创 2009-03-01 21:02:00 · 2633 阅读 · 7 评论