妙用perfmon Alert抓dump】的更多相关文章

抓dump文件,经常是解决众多疑难杂症的不二手段.但是很多时候,我们没办法抓.比如说 几秒内的线程数暴涨200个,然后迅速回落 程序跑了两天,内存涨到某个数字就自己OOM了 原因不外乎都是时间短,没有办法人肉来一直看着,而且,即使盯着,你敲回车让adplus把cdb调出来,至少也要几秒钟,那时候dump很容易就抓的不准确了.怎么办?实际上,我们可以配合伟大的perfmon来抓这种dump. 创建Alert 首先打开perfmon,方式是WIN+R,输入perfmon回车即可.然后右键点击user…
一 :确认手机状态 手机系统死机白屏后,使用USB线 连接手机和计算机.打开计算机设备管理器 ,当其中与手机相关的端口只有DIAG 口 项(9006端口)时,表明手机处于DUMP 模式,可以抓DUMP LOG. 注意Diag口为死机端口 Dol端口为下载端口 二 : 抓取DUMP LOG 打开 QPST Configuration 软件,该软件 会自动抓DUMP LOG. 其中 Ports 项显示手机状态是 Sahara Memory Dump .DUMP LOG 抓完后手机会自动重启. 三 提…
一:背景 1. 讲故事 最近几天接到了几个crash的求助,可能这几个朋友没玩过怎么去生成dump,只能手把手教,感觉也不是一个办法,所以有必要总结一下,后续再有朋友咨询的话,我就可以把这篇文章丢过去了,好了,我大概总结了下面三种方式: procdump -e procdump -> AEDebug Windows Error Reporting 老读者应该知道,我一直都推崇 procdump 去搞定这些事情,毕竟它是一款可跨平台抓取的强大灵巧工具. 二: 实现可测试案例 从 dump 样本来看…
安装WinDbug(包含在 Windows Kits-debugger 中)后,运行如下命令将会在 explorer.exe进程发生崩溃后抓取相应的内存数据到D盘根目录下的一个文件夹中 adplus.exe -crash -pn explorer.exe -o d: -crash:当进程挂掉的时候抓取dump,只能抓取到进程报错时的信息,如果进程不报错,就无法抓取到dump-hang:当开启windbugu之后就开始抓取dump,主要用于抓取进程异常,但进程未崩溃的情况,例如进程占用cpu 10…
程序崩溃的两种主要现象: a. 程序在运行中的时候,突然弹出错误窗口,然后点错误窗口的确定时,程序直接关闭 例如: “应用程序错误” “C++错误之类的窗口” “程序无响应” “假死”等 此种崩溃特点:程序已异常,在你未点出错窗口的确定或其他按,所有错误信息都还保留在PC的内存中,可以直接抓取Dump文件.当然,如果你知道 怎么样操作可以让程序崩溃,也可以用守株待兔的抓取方法抓Dump文件. b.程序在运行中的时候,窗口和进程突然消失,没有任何错误窗体 典型的现象:程序自动关闭 或者玩游戏时,游…
一.Windows系统的任务管理器里抓dump 启动任务管理器,选中某个进程,右键,弹出菜单"创建转储文件" 注意事项: 当你在64位Windows系统上抓32位进程的dmup文件时,如果用的是64位任务管理器,那么在用Windbg加载后,要用!wow64exts.sw切换到X86模式下,如果不想做这步切换,就要用32位的任务管理器来生成dmp文件.32位任务管理器在C:\Windows\SysWOW64\Taskmgr.exe 适合的场景:在任务管理器里还能看到进程,当程序出现业务问…
breakpad是Google开源的一套跨平台工具,用于dump的处理.很全的一套东西,我这里只简单涉及breakpad客户端,不涉及纯文本符号生成,不涉及dump解析. 一.使用 最简单的是使用进程内dump捕获,使用者只需要跟ExceptionHandler打交道,在自己的程序里定义一个ExceptionHandler对象,ExceptionHandler会挂上异常处理.CRT参数错误处理.purecall错误处理,当发生crash时,breakpad会写好dump,然后回调通知使用者.进程…
     一般要捕获异常只需要两个函数:SetUnhandledExceptionFilter截获异常:MiniDumpWriteDump写dump文件.但是由于CRT函数可能会在内部调用SetUnhandledExceptionFilter(NULL),解除我们程序设置的异常处理,这导致我们的程序无法完整捕获崩溃.另外,还有一部分非异常的CRT错误,不属于SEH异常捕获的范畴,需要通过_set_invalid_parameter_handler._set_purecall_handler拦截,…
Dump Checking Debug相关的一些小技巧 摘要: 1. 如何Debug一个进程的子进程? 答: 使用WinDBG attach到父进程, 然后输入命令".childdbg 1"(无引号). 这样子进程在刚刚被加载的时候, WinDBG就Attach上去了. 这两个进程的debug session都在一个WinDBG的窗口里, 如果想要切换当前进程, 可以使用命令"|"来查看所有的进程, 使用"|0s"来切换到ID为0的进程, 以此类…
1.数字字母 Unicode 编码 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script> var str = '妙味课堂'; // alert( str.length ); //字符串…
首先我是attach到进程的方式,附加到进程把. vs里边有个远程调试就是通过连接到远程机附加到进程操作的.在 有公网IP情况下挺好用,但涉及到nat穿越之类的,因为用户的不方便设置,这种调试方式也有局限性. 6. lmf 列出当前进程中加载的所有dll文件和对应的路径 奇怪没找到我程序里边加载的dll  乖乖滴.难道attach 进程把dll关了吗? 用空用dump 试试. 11!runaway 可以显示每一个线程的cpu消耗 这个命令挺好,直接找到哪个线程占得时间久 ,如果一直占着,那这个线…
1. Dump文件的用途 Dump文件, 主要用于诊断一个进程的运行状态,尤其是碰到崩溃(Crash)或者挂起(hang)不响应时,需要分析它的工作状态.  除了平时常见的attach到这个进程, 分析Dump文件就成了一个重要的手段了. 相信一些做软件维护和支持的工程师在这方面深有体会, 比如某天某时,客户说, 呀, 糟糕, 服务器进程挂掉了, 怎么回事? 然后,看看了日志文件,也没有什么可用的信息.  技术支持告诉他, 按某步骤生成一个dump文件来看看...... 2. 如何生成Dump文…
breakpad是Google开源的一套跨平台工具,用于dump的处理.很全的一套东西,我这里只简单涉及breakpad客户端,不涉及纯文本符号生成,不涉及dump解析. 一.使用 最简单的是使用进程内dump捕获,使用者只需要跟ExceptionHandler打交道,在自己的程序里定义一个ExceptionHandler对象,ExceptionHandler会挂上异常处理.CRT参数错误处理.purecall错误处理,当发生crash时,breakpad会写好dump,然后回调通知使用者.进程…
作用 程序异常崩溃前使用此类为进程创建DUMP文件,之后可以使用WinDbg等工具进行分析. 辅助类代码 using System; using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; namespace Infrastructure { public static class MiniDump { // Taken almost verbatim from http://blog.ka…
集中时间把秒微课堂JS的基础课程看完,并且认真完成了课后练习.感觉在JS方面的技能算是入了个门了.课后练习的作业完成的代码我都汇总在了这里.至于视频课的学习笔记,则记录如下. 第01课JS入门基础_热身课程 写JS的步骤 先实现布局 想出实现原理 了解JS语法 希望把某个元素移除的实现 display: none; 显示为无 visibility: hidden; 隐藏 width \ height 透明度 left \ top 拿与背景色相同的div盖住该元素 利用margin值 …… 获取元…
一.Windows系统的任务管理器里抓dump 启动任务管理器,选中某个进程,右键,弹出菜单"创建转储文件" 注意事项: 当你在64位Windows系统上抓32位进程的dmup文件时,如果用的是64位任务管理器,那么在用Windbg加载后,要用!wow64exts.sw切换到X86模式下,如果不想做这步切换,就要用32位的任务管理器来生成dmp文件.32位任务管理器在C:\Windows\SysWOW64\Taskmgr.exe 适合的场景:在任务管理器里还能看到进程,当程序出现业务问…
一:背景 相信很多人都知道通过 任务管理器 抓取dump,虽然简单粗暴,但无法满足程序的无数种死法,比如: 内存膨胀,程序爆炸 CPU爆高,程序累死 应用无响应,用户气死 意外退出,和人生一样 既然手工太弱鸡,那有什么好的工具呢? 除了 adplus,本文推荐一款神器 procdump, 下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump ,还能支持 linux ,具体怎么安装就不细说了. 二:内存膨胀,程序…
这篇主要讲如何分析高内存和高CPU. 1.如何分析高内存 注:如果抓Dump的同时,刚好在执行GC,抓出来的Dump执行命令多半会出错,用!VerifyHeap也能验证Dump有误,这种情况只能重新抓Dump.报错如下: The garbage collector data structures are not in a valid state for traversal. It is either in the "plan phase," where objects are bein…
一般说来抓dump 4种 方式:      1. erlang:halt(“abort”).      2. 在erlang shell下输入CTRL C + “大写的A”      3.等着进程崩溃自己产生dump      4.kill -SIGUSR1 <pid> (shell 无法进入时可以使用)   不过4个方式无一不是需要node crash掉,如果我只想sapshot 一份进程状态以便分析呢? 在google groups 找到答案,现在链接找不到了,分享一下: crash_du…
1.Tracy Mcgrady的专栏冰山一角:linux和Android底层开发,主要是mtk系列点击打开链接 2.郁闷Wednesday:嵌入式linux 单片机 android,点击打开链接 3.蜂窝科技:linux内核和驱动,点击打开链接 4.green1900的专栏:基于高通平台硬件和驱动的介绍,有关于CPU温度读取等,点击打开链接 5.kc58236582的博客:Android底层和框架层的开发,点击打开链接 6.撒哈拉的绿洲:Android底层驱动.系统和应用开发,全是原创,很参考价…
一.背景 先说下windbg使用场景.各位coder在工作中或多或少都会遇到下面四种情况 1.本地代码好好的,放服务器上运行一段时间后,IIS服务突然占用 w3wp.exe CPU突然100% ,不得不回收应用程序池,如果哪次回收晚了,被客户发现,后果很痛苦~ 2.你的w3wp.exe 内存高居不下 并且逐步上升 3.cpu很低,内存也很低,但你的网页打开却越来越慢,而你该做的优化都做过了,却没有任何效果.. 4.你的程序本地运行好好的,但是到服务器上了,在某个时候会突然报错,再次刷新却又好了.…
从来没写过Blog,想想也是,工作十多年了,搞过N多的架构.技术,不与大家分享实在是可惜了.另外,从传统地ERP行业转到互联网,也遇到了很所前所未有的问题,原来知道有一些坑,但是不知道坑太多太深.借着填坑的机会,把过程Log下来. 言归正传,先说说背景吧.Teld的业务平台中存在大量的物联网终端传感数据和车辆运行数据,这些数据中蕴含着大量的财富.So,要存储.Teld的充电终端还是很NB的,现在已经有2W+,而且每隔30S上报一次数据,当然单条数据量不会很大.这才是开始,按照国家规划,到2020…
最近花了好几周解决一个WPF高内存的问题,问题的表象是内存不断增加.未被回收,根源是GC的FinalizeThread被阻塞,导致整个GC挂掉.从以下几步来分析这个问题: 1.用ANTS Memory Profiler去掉强引用 既然是高内存,肯定要先从内存着手.这里必须要赞一下ANTS的这个工具,图形化做的非常好,一目了然,个人觉得比SciTech的.net memory profiler好用.找个基准点take一个SnapShot,打开关闭窗口后再take一个snapshot,比较2个快照里…
最近又监控到一个高内存的问题,周五下班把系统打开,周末2天没关,周一来看已经涨到5.2G,这次与以往不同,不是.net的内存泄漏,而是非托管引起的. 1. 抓dump,确定高内存的类型 //dump有5.2G,.net的堆只有191M,可以判断是unmanaged high memory 0:000> !eeheap -gc Number of GC Heaps: 1 generation 0 starts at 0x0000000159852b88 generation 1 starts at…
最近2个月没做什么新项目 完全是对于旧的系统进行性能优化 避免超时 死锁 数据处理能力不够等常见的性能问题 这里不从架构方面出发 毕竟动大手脚成本比较高 那么我们以实例为前提 从细节开始 优化角度 一.业务逻辑优化 二.DB优化 三.数据处理优化 四.锁与性能 五.cpu飙高小结 六.crash现象分析 业务逻辑优化 这一条不具有普遍性 不同的业务不同的场景 如果归纳起来 就是在不影响业务的前提下进行流程精简 1. 废弃冗余逻辑 常见于各种基于数据库的检查 很多同学在维护别人代码的时候 没有深入…
最近几周都在解决程序不稳定的问题,具体表现为程序(多进程)时不时的Hang住,同时伴随某个进程的High CPU.跟踪下来,基本都是各种死锁引起的.这里选取一个典型的场景进行分析. 1.抓dump分析 由于这个问题不能稳定重现,所以比较靠谱的方法是出现后抓Dump再分析.老方法:ProcDump -ma [ProcessName].这是个多进程Hang住的情况,具体表现为主进程Main点击退出时,子进程Mkt不响应.到底是哪个进程挂掉了呢? 2.先看Main 首先!syncblk: 0:000>…
用windbg调试C#代码是比较麻烦的,因为windbg是针对OS层级的,而C#被CLR隔了一层,很多原生的命令如查看局部变量dv.查看变量类型dt等在CLR的环境中都不能用了.必须使用针对CLR的扩展命令,比如sos.psscor2中的命令.下面以一个最简单的WPF程序来说明调试的典型步骤,以及典型的坑. 1.用正确版本的windbg.加载正确版本的扩展模块 把程序跑起来,看任务管理器中是32位 or 64位进程,32-bit用windbg x86.64-bit用windbg x64调试. 如…
1, https://visualvm.java.net/oqlhelp.html#top http://docs.oracle.com/javase/7/docs/technotes/samples/hprof.html#HAT http://docs.oracle.com/javase/7/docs/technotes/guides/vm/dtrace.html http://docs.oracle.com/javase/7/docs/technotes/tools/share/jhat.h…
一.High CPU试验 1.示例代码 static void Main(string[] args) { Console.Clear(); Console.WriteLine("到命令行下,切换到windbg目录,执行adplus -hang -pn highcpu.exe -o c:\\dumps"); Console.WriteLine("如果要停止,按Ctrl+C结束程序"); Console.WriteLine("================…
问题描述: 现网个别时候会出现CPU突然飙高的现象,飙高后不能恢复正常. 分析过程: CPU飙高后抓dump,最好本机看,其它机器看dump可能需要下载服务运行机器的sos,clr     0:000> !threadpool The version of SOS does not match the version of CLR you are debugging.  Please load the matching version of SOS for the version of CLR…