两个对象是否为同一个对象:是看两个对象是否指向堆中的同一块内存. 1.使用object.ReferenceEquals() class Program { static void Main(string[] args) { Person p1 = new Person(); p1.Name = "Mark"; Person p2 = new Person(); p2.Name = "Marl"; Person p3 = p1; Console.WriteLine(o…
工欲善其事,必先善其器.调试器在嵌入式开发调试中的重要性不言而喻,单步.断点和监察的效率远高于串口打印.但是,调试器对于一般开发人员往往是一个黑匣子.今天我们就来谈谈调试器的原理,顺便把自己的几类调试器接线和注意事项记录下来,以便查找.我常常要面对几个方案,而各个方案的调试器都不一样,接线有时连自己都记不住.所以这个帖子应值得嵌入式开发工程师收藏. 一.嵌入式调试多样性 我们先来回想调试的场景,思考一下这几个问题: 1. ARM开发环境有Keil.IAR.ADS等等,我们发现这几个平台都能用同一…
线程是操作系统向其授予处理器时间的指令序列. 在操作系统中运行的每个进程都包含至少一个线程. 包含多个线程的进程称为多线程.有多个处理器.多核处理器或超线程进程的计算机可以同时运行多个线程. 使用多个线程的并行处理可以极大地提高程序性能,但也可能导致调试变得更加困难,因为正在跟踪多个线程. 多线程处理可能会引入新类型的潜在 bug. 例如,两个或多个线程可能需要访问同一资源,但是一次只能有一个线程可以安全地访问该资源. 需要某种形式的互斥才能确保每次只有一个线程访问该资源. 如果未正确实现互斥,…
之前通过使用VS2010附加进程调试项目后,今天开机发现调试本机的项目报错如下图: 到网上到处查看无果,经过反复实验找到解决方法,我的项目是发布到IIS的 1.首先删除IIS上面的项目 2.在VS右击项目->属性->Web->点击创建虚拟目录(也就是重新创建一个) OK问题解决,这个问题折腾了我2小时,试过好多方法如重新注册framework.重启iis,重启电脑等方式,都不好用,所幸找到了解决方法,纪念一下,希望帮助更多的人.…
感谢博主 http://book.51cto.com/art/200711/59731.htm <Windows用户态程序高效排错>第二章主要介绍用户态调试相关的知识和工具.本文主要讲了排错的工具:调试器Windbg.   第二章 汇编.异常.内存.同步和调试器——重要的知识点和神兵利器 这一部分主要介绍用户态调试相关的知识和工具.包括:汇编.异常(exception).内存布局.堆(heap).栈(stack).CRT(C Runtime).handle/Criticalsection/th…
首先,你得准备一套python开发环境,正常情况下,一般是在windows下开发的,因为win系统应用广泛,再则就是要有个IDE,这里我选择我熟悉的Eclipse.环境搭建,网上都有,比如:http://www.jb51.net/article/34517.htm. 环境搭好后,再来说一下什么是调试器. 一般用python写黑客脚本,都会用到一个神库:ctype.兼具C语言的底层操作能力,同时具备动态语言的方便性,这种情况在编程语言里不多见吧?!ctype模块能使你轻而易举的调用动态链接库中的导…
感谢博主 http://book.51cto.com/art/200711/59874.htm 2.2  读懂机器的语言:汇编,CPU执行指令的最小单元2.2.1  需要用汇编来排错的常见情况 汇编是CPU执行指令的最小单元.下面一些情况下,汇编级别的分析通常是必要的:1. 阅读代码看不出问题,但是跑出来的结果就是不对,怀疑编译器甚至CPU有毛病.2. 没有源代码可以阅读.比如,调用某一个API的时候出问题,没有Windows的源代码,那就看汇编.3. 当程序崩溃,访问违例的时候,调试器里看到的…
目       录 第十一章     调试器设计... 2 11.1         调试接口... 2 11.2         界面方式调试... 3 11.3         命令行方式调试... 5 11.4         小结... 6 第十一章      调试器设计 SuperIO 框架平台设计.开发完毕后,想把代码编译成程序集(DLL),二次开发都通过引用DLL实现接口.继承类库来实现驱动和插件的开发,SuperIO框架的代码不会轻易去改变.这是框架设计最终要达到的效果,但是在二…
在Win32中自带了一些API函数,它们提供了相当于一般调试器的大多数功能,这些函数统称为Win32调试API(Win32 Debug API).利用这些API可以做到加载一个程序或捆绑到一个正在运行的程序上以供调试:可以获得被调试的程序的底层信息,例如进程ID.进入地址.映像基 址等:甚至可以对被调试的程序进行任意的修改,包括进程的内存.线程的运行环境等. 简而言之,读者可以用这些API写一个进程调试器.就像现在流行的调试器Visual C++调试器.WinDBG.OllyDbg等一样.当然除…
 CodeBlocks是一个开放源码的全功能的跨平台C/C++集成开发环境. 下载地址:http://www.codeblocks.org/downloads/26 其中,Windows环境下可以使用安装包安装程序,或使用免安装的zip. 一. CodeBlocks是一个集成开发环境(IDE),其中最重要的开发工具,如, 编辑器:编写修改源码: 编译器:将源码编译成目标语言和可执行程序: 调试器:跟踪程序执行过程,调试问题代码: 二.调试器的功能 大致上,调试器是IDE中不可或缺的工具. 调试器…