一:背景 1. 讲故事 在给各位朋友免费分析 .NET程序 各种故障的同时,往往也会收到各种其他类型的dump,比如:Windows 崩溃,C++ 崩溃,Mono 崩溃,真的是啥都有,由于基础知识的相对缺乏,分析起来并不是那么的顺利,今天就聊一个 Windows 崩溃的内核dump 吧,这个 dump 是前几天有位朋友给到我的,让我帮忙看一下,有了dump之后上 windbg 分析. 二:WinDbg 分析 1. 从哪里入手 只要是 Windows 平台上的崩溃,操作系统都会维护一个 EXCEP…
一:背景 1.讲故事 前段时间有位朋友找到我,说他的程序在客户的机器上跑着跑着会出现偶发卡死,然后就崩掉了,但在本地怎么也没复现,dump也抓到了,让我帮忙看下到底怎么回事,其实崩溃类的dump也有简单的,也有非常复杂的,因为大多情况下都是非托管层面出现的各种故障,非常考验对 C, C++, Win32 API 以及 汇编 的理解,所以能不能解决看运气吧, 不管怎么说,先上 WinDbg. 二:WinDbg分析 1. 查找崩溃点 WinDbg 非常牛的地方在于它拥有一个自动化崩溃分析命令 !an…
崩溃统计分析,在APP中是非常常见一种优化APP,发现APP的BUG的方式. 1.异常处理 可通过try catch 方式处理,如果发生异常,会走catch ,最终走fianlly.对一些我们不想他崩溃的地方,可以采取这种方式去处理.但要注意的是,通过这种处理,使用的第三方崩溃将捕捉不到异常信息,不会上报. @try { <#Code that can potentially throw an exception#> } @catch (NSException *exception) { &l…
本文介绍windows上崩溃分析的一些手段,顺便提多进程调试.死锁等. 1.崩溃分析过程 1.1 确认错误码 不管是用windbg还是用vs.首先应该注意的是错误码,而90%以上的崩溃都是非法訪问. 在非法訪问时.能够看一下訪问的目标地址. 地址是0,或者离0非常近(0x00000008或0xfffffffc). 一般和空指针相关.假设是一个貌似正常的地址,通常是对象已析构后訪问其数据,或者堆破坏. 1.2确认崩溃相应的C++操作 什么是确认崩溃相应的C++操作: 比方非法訪问,通常得有个mov…
前言 最近接了个任务,需要把代码移植到armv7平台,搜寻相关方法,了解到可以利用交叉编译工具如:gcc-linaro-arm-linux-gnueabihf.把自己依赖的第三方库代码和自己代码分别编译就好.后来公司买了个树莓派,我直接在树莓派上编代码了,过程中没有很大的问题,记录下. 1.确定第三方依赖库是否可以移植 我代码确实依赖了不可移植的如mkl库,这是intel相关的,所以移植到arm肯定不行,于是换kaldi支持的另一种库,openblas.先替换然后让代码正常调用openblas.…
一 为什么需要动态库 1)提供原生代码(native code)的支持,也叫原生插件,但是我实践的是c/cpp跨平台动态库,这里不具体涉及安卓平台java库和ios平台的objectc库构建. 2)某些开源库是c/cpp编写,没有对应c#版本 3)或者有c#版本实现,但是效率或者gc达不到期望效果,特别是GC,一般的开源库c#版本的作者,对gc优化得大多不好 4)追求效率,比如A*寻路等开销比较大的算法,想做下优化 5)某些模块,如网络模块,需要Unity客户端和后端跑一份相同的逻辑代码,而不想…
一:背景 1. 讲故事 这篇文章起源于 搬砖队大佬 的精彩文章 WinDBg定位asp.net mvc项目异常崩溃源码位置 ,写的非常好,不过美中不足的是通览全文之后,总觉得有那么一点不过瘾,就是没有把当时抛异常前的参数给找出来...这一篇我就试着弥补这个遗憾. 为了能够让文章行云流水,我就按照自己的侦察思路吧,首先看一下现状:iis上的应用程序崩溃, catch 不到错误,windows日志中只记录了一个 AccessViolationException 异常,如何分析? 说实话我也是第一次在…
一:背景 1.讲故事 前段时间有位朋友在微信上找到我,说他的程序偶发性崩溃,让我帮忙看下怎么回事,上面给的压力比较大,对于这种偶发性崩溃,比较好的办法就是利用 AEDebug 在程序崩溃的时候自动抽一管血出来,看看崩溃点是什么,其实我的系列文章中,关于崩溃类的dump比较少,刚好补一篇上来,话不多说,上 windbg . 二:WinDbg 分析 1. 崩溃点在哪里 在 windbg 中有一个 !analyze -v 命令可以自动化分析,输出信息如下: 0:120> !analyze -v ***…
一:背景 1.讲故事 前几天有位朋友找到我,说他的程序出现了偶发性崩溃,已经抓到了dump文件,Windows事件日志显示的崩溃点在 clr.dll 中,让我帮忙看下是怎么回事,那到底怎么回事呢? 上 WinDbg 说话. 二:WinDbg 分析 1. 崩溃点在哪里 如果是托管代码引发的崩溃,在线程列表上会有一个异常信息,可以用 !t 来验证下. 0:000> !t ThreadCount: 7 UnstartedThread: 0 BackgroundThread: 6 PendingThre…
一:背景 1. 讲故事 最近收到了两起程序崩溃的dump,查了下都是经典的 double free 造成的,蛮有意思,这里就抽一篇出来分享一下经验供后面的学习者避坑吧. 二:WinDbg 分析 1. 崩溃点在哪里 windbg 带了一个自动化分析命令 !analyze -v 可以帮助我们找到崩溃时的程序指令地址以及崩溃的代码,这对我们分析问题非常有帮助. 0:090> !analyze -v ****************************************************…