摘要: 公司的开发环境\测试环境和生产环境的区别都比较大.每次新版本启动前,都需要很长的时间来调试测试环境,很大一部分工作都在于改数据库链接,接口地址.然而看似简单的活却总是存在问题。上周五配置完环境出现了一个现象:cpu和内存的使用都很低,但网页却要很长的时间才能显示...
阅读全文摘要: 利用VS2008开发程序,其中应用到了Web Service,但在调试代码时遇到了一个问题,Web Service无法启动,报---------------------------Microsoft Visual Studio---------------------------无法启动 ASP.NET Development Server。端口“1418”正在使用。---...
阅读全文摘要: 几天前写的[Debug实践]windbg+性能监视器解决一个内存泄漏问题(非托管资源) 随笔中,解决了一个非托管资源泄漏的问题,加一个兄弟篇:)现象:服务器内存占用突发性升高,从任务管理器中看w3wp.exe占用内存1G多,CPU占用率不高分析过程:这些年来碰到的大多数内存占用过高问题都是托管资源类的,看到系统中的报警,第一直觉便是采集服务器上的dump文件...
阅读全文摘要: 高CPU是网站服务器常见的一种故障,很多windbg教程中都拿高CPU做例子。3月份我在公司服务器上也碰到一次,整个debug过程十分顺利且常规,但最终找到的原因却很有意思,与一个挂马行为有关。现像:网站服务器的w3wp进程经常出现突发性的高CPU,如下图week15-16处所示。修正后的效果还是很明显的...
阅读全文摘要: 今天下午解决一个困扰多天的内存问题,将分析过程记录一下问题描述:w3wp内存慢慢升高,最后大约会达到1.3G左右,Cpu资源并不是很紧张分析过程:之前碰到的几次问题都是托管内存泄漏,按以往的经验直接在内存高点时dump了一个文件,一个1.4G大的文件,windbg打开,0:000> !eeheap -gcGC Heap Size 0x22cf6b80(584018816)因为最近一个缓存的项目刚上线,将一些数据直接放到了内存中,500多M算是一个意料中的大小...
阅读全文摘要: 公司使用的服务器装的是64位的2003系统,以32位的形式运行着iis6.从任务管理器中看到w3wp.exe进程后面加上了*32标识,而服务器上会同时存在x64和x86目录,如果直接运行 ntsd -pv -p 5756 -logo d:\out.txt -lines -c ".dump /ma d:\testlocal.dmp;q"来生成一个dump文件,则会直接调用x64目录内的ntsd,这时取到的相关信息是wow64兼容层的,并非用户的32位程序,用32位的windbg打开testlocal.dmp,看到的堆栈中会包含wow64相关内容,而非用户所想看的32位程序堆栈。
阅读全文摘要: 最近服务器上某些进程的内存使用会突然升高,于是写了一个脚本在内存占用高点时抓取dump以便分析.期间走了不少弯路才找到vbscript控制进程时的属性名,随笔记录一下objprocess的常用属性: 'MsgBox "Process: " & objProcess.Name & objProcess.UserModeTime 'MsgBox "Process ID: " & objProcess...
阅读全文摘要: IL的确比C#等高级语言来的所谓“底层”,但是很明显,IL本身也是一种高级抽象。而即使是机器码,它也可以说是基于CPU的抽象,CPU上如流水线,并行,内存模型,Cache Lock等东西对于汇编/机器码来说也可以说是一种“封装”。从不同层次可以获得不同信息,我们追求“底层”的目的肯定也不是“底层”这两个字,而是一种收获。了解自身需要什么,然后能够选择一个合理的层次进入,并得到更好的收益,这本身也是一种能力。追求IL的做法,本身并没有错,只是追求IL一定是当前情况下的最优选择吗?这是一个值得不断讨论的问题,我的这篇文章也只是表达了我个人对某些问题的看法。
阅读全文摘要: CLR作为承载IL的平台,就像一个溺爱孩子的父母,操办了孩子生活所需要的一切。这个孩子一嚷嚷“我要吃苹果”,则父母就会拿过来一个苹果。您咋看这个孩子,都还是无法了解父母是如何获得苹果的(new一个Apple对象),怎么为孩子收拾残局的(GC)。虽然这些经常是所谓的“成年人(.NET程序员)必知必会”。而您如果盯着孩子看了半天,耐心分析他吃苹果的过程(使用IL编写的逻辑),最后终于看懂了,可惜发现——tmd老子自己也会吃苹果啊(从C#等高级语言中也能看出端倪来)!
阅读全文摘要: #include #define BUFF_SIZE 100void Unload(IN PDRIVER_OBJECT DriverObject){}
阅读全文摘要: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;核心程序,通过debugapi实现进程的跳转;www.hi.baidu.com/charme000;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; invoke GetStartupInfo,addr siimov eax,sii.cb
阅读全文摘要: 一早看到包同学的驳文《批驳小赵之IL无用论(1)》,甚是期待,但看了第一个回复,却让我大失所望。包同学能否看清了老赵以前说过的,自己以前说过的,以及老赵昨天说的东西以后再进行反驳呢?我们很多明明是同样的观点,为什么变成相互驳斥了呢?
阅读全文摘要: 我们.NET开发人员必定离不开IL,就算您没有学习,也一定可以在各处看到它的身影。最近在博客园上活跃的IL文章译者包建强同学的一些看法让老赵大为震惊,决定独立开篇,希望可以让大家看到不同的声音。真理越辩越明,也欢迎大家来一起讨论,发表自己意见。老赵也会尽量把朋友们留在老赵博客上的看法汇总起来,并加以回应。《老赵谈IL》也是系列文章,目前的计划有4篇,您现在看到的便是本系列的第1篇:IL是什么,它又不是什么。
阅读全文摘要: 经过了《泛型真的会降低性能吗?》一文中的性能测试,已经从实际入手,从测试数据上证明了泛型不会降低程序效率。只是还是有几位朋友谈到,“普遍认为”泛型的代码性能会略差一些,也有朋友正在进一步寻找泛型性能略差的证据。老赵认为这种探究问题的方式非常值得提倡。不过,老赵忽然想到,如果从能从汇编入手,证明非泛型和泛型的代码之间没有性能差距——好吧,或者说,存在性能差距,那么事情不就到此为止了吗?任何理论说明,都抵不过观察计算机是如何处理这个问题来的“直接”。因此,老赵最终决定通过这种极端的方式来一探究竟,把这个问题彻底解决。
阅读全文摘要: 花了三个小时,终于写完了,最近又快考试了,郁闷啊,。。。悲哀.586.model flat,stdcalloption casemap:none.datahello db "真刺激,呼呼",0GMK db "感染成功",0where_to_go dd 0vir_size dd 0.code
阅读全文摘要: Order: mscoree.dll-->mscoreei.dll-->clr.dll-->mscorlib.ni.dll-->clrjit.dllMicrosoft (R) Windows Debugger Version 6.11.0002.408 X86Copyright (c) Microsoft Corporation. All rights reserved.*...
阅读全文摘要: win32 api的函数调用方式是stdcall。具体调用方式是 先按照从右至左的顺序将函数的参数压入堆栈,然后函数的下一条指令的地址入栈,即返回地址(eip),接着是用来寻址局部变量的寄存器入栈(ebp),然后再将函数中的局部变量压入堆栈,接着就执行函数内部的操作了。执行完成函数要返回时,要将堆栈进行恢复,然后ret指令取栈顶的返回地址(eip)并跳到那里去执行,也就是执行函数调用完成后的操作 ...
阅读全文摘要: 内存有个存放数据的地方叫缓冲区,当程序把数据放在缓冲区,需要操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“光标”。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系...
阅读全文摘要: 在windows server 2003 sp2上运行.net的程序时报如标题所描述的错误解决方法如下:开始->运行->cmd ->输入sc config spooler depend= RPCSS
阅读全文摘要: 做好一个.net 2.0的winform程序,将release目录下的文件直接copy到客户的机器上进行测试,报如下的错误: EventType clr20r3, P1 wat.pms.caijiservice.exe, P2 1.0.0.0, P3 4a1361e0, P4 wat.pms.caijiservice, P5 1.0.0.0, P6 4a1361e0, P7 3, P8 17, P...
阅读全文