一:背景 1.讲故事 前段时间有位朋友找到我,说他的程序在客户的机器上跑着跑着会出现偶发卡死,然后就崩掉了,但在本地怎么也没复现,dump也抓到了,让我帮忙看下到底怎么回事,其实崩溃类的dump也有简单的,也有非常复杂的,因为大多情况下都是非托管层面出现的各种故障,非常考验对 C, C++, Win32 API 以及 汇编 的理解,所以能不能解决看运气吧, 不管怎么说,先上 WinDbg. 二:WinDbg分析 1. 查找崩溃点 WinDbg 非常牛的地方在于它拥有一个自动化崩溃分析命令 !an…
一:背景 1. 讲故事 这篇文章起源于 搬砖队大佬 的精彩文章 WinDBg定位asp.net mvc项目异常崩溃源码位置 ,写的非常好,不过美中不足的是通览全文之后,总觉得有那么一点不过瘾,就是没有把当时抛异常前的参数给找出来...这一篇我就试着弥补这个遗憾. 为了能够让文章行云流水,我就按照自己的侦察思路吧,首先看一下现状:iis上的应用程序崩溃, catch 不到错误,windows日志中只记录了一个 AccessViolationException 异常,如何分析? 说实话我也是第一次在…
一:背景 1. 讲故事 前段时间收到了一个朋友的求助,说他的ERP网站系统会出现偶发性崩溃,找了好久也没找到是什么原因,让我帮忙看下,其实崩溃好说,用 procdump 自动抓一个就好,拿到 dump 之后,接下来就是一顿分析了. 二:WinDbg 分析 1. 是什么导致的崩溃 windbg 有一个自动化的分析命令 !analyze -v 可以帮我们提前预诊一下,就好像进医院先在问询台那里过一下. 0:019> !analyze -v CONTEXT: (.ecxr) eax=14c9cd00…
用vc++MFC开发过不少跟单片机通讯的上位机程序了.搞懂了MFC架构,开发还是很快的,与底层单片机程序通讯,可以用串口.usb.网络.短信形式.串口现在用的越来越少了,一般电脑跟单片机在一块,使用串口.随着物联网的兴起,使用短信.网络来做电脑与单片机通讯越来越多了,对于物联网,上位机的管理端就特别重要了,大量终端的管理,要做到方便查看,方便搜索. 这是个以前做过的项目,药实验仪,采用的串口通讯,这个项目做的不错,但是最终客户没有给钱,估计找人把软件的限制给破解了,悲催.如有人对此项目感兴趣可以…
VC++编写简单串口上位机程序   转载: http://blog.sina.com.cn/s/articlelist_1809084904_0_1.html VC++编写简单串口上位机程序 串口通信,MCU跟PC通信经常用到的一种通信方式,做界面.写上位机程序的编程语言.编译环境等不少,VB.C#.LABVIEW等等,我会的语言很 少,C语言用得比较多,但是还没有找到如何用C语言来写串口通信上位机程序的资料,在图书管理找到了用VC++编写串口上位机的资料,参考书籍,用自己相 当蹩脚的C++写出…
一:背景 1.讲故事 前段时间有位朋友在微信上找到我,说他的程序偶发性崩溃,让我帮忙看下怎么回事,上面给的压力比较大,对于这种偶发性崩溃,比较好的办法就是利用 AEDebug 在程序崩溃的时候自动抽一管血出来,看看崩溃点是什么,其实我的系列文章中,关于崩溃类的dump比较少,刚好补一篇上来,话不多说,上 windbg . 二:WinDbg 分析 1. 崩溃点在哪里 在 windbg 中有一个 !analyze -v 命令可以自动化分析,输出信息如下: 0:120> !analyze -v ***…
问题描述:在开发一个上位机程序时(C#.winform),使用到了Kvaser的SDK,而这个SDK是基于对应的Kvaser驱动开发的.当前PC如果没有装Kvaser驱动, 程序启动时,会直接奔溃.调查发现,主要原因是程序直接使用了SDK提供的的A.dll,而该dll又去调用了驱动程序中的B.dll,程序加载A.dll时发现 B.dll不存在,则会直接抛出异常,导致程序崩溃. 处理方法:可以在A.dll外再封装一层,生成C.dll,通过这样的操作,可以让程序开始运行阶段能够捕获dll抛出的异常,…
简单使用SetUnhandledExceptionFilter()函数让程序优雅崩溃 虽然是大公司的产品,QQ它还是会在我们的折腾下崩溃的,但是它总是崩溃的很优雅,还要弹出自己的对话框来结束.并且发送报告,去掉了系统默认的发送报告的对话框. 所以一拍脑袋,想让自己的程序崩溃的体面一点. 自己想了大概的思路,觉得可以用一个进程来监控目标程序.的确也可以拿到了目标程序崩溃的信息,知道它什么时候崩溃的,也可以做额外的操作,但是这样是没办法把默认的发送错误的对话框去掉的. 然后又有人说是不是采用了类似钩…
简单使用SetUnhandledExceptionFilter()函数让程序优雅崩溃 虽然是大公司的产品,QQ它还是会在我们的折腾下崩溃的,但是它总是崩溃的很优雅,还要弹出自己的对话框来结束.并且发送报告,去掉了系统默认的发送报告的对话框. 所以一拍脑袋,想让自己的程序崩溃的体面一点. 自己想了大概的思路,觉得可以用一个进程来监控目标程序.的确也可以拿到了目标程序崩溃的信息,知道它什么时候崩溃的,也可以做额外的操作,但是这样是没办法把默认的发送错误的对话框去掉的. 然后又有人说是不是采用了类似钩…
导语:最近实在是太忙了,没有怎么更新公众号,也没有怎么认真去写一些内容,在这里先给关注我的朋友说一声抱歉,可能在接下来的一段时间,还是很忙,但是我会争取抽空多分享一下技术文章,给大家看,共同进步,也希望有能力的人可以一起出来分享. 我们在做应用开发的时候,需要程序的崩溃信息,来进行bug的修复和版本的更新,每一个应用程序都会有bug,所以都需要在后台纪录这些bug日志,然后上传到服务器,让程序员看,并进行修复.现在也有很多第三方的jar包能实现这种功能,比如友盟统计等,但是终究不如自己写的方便.…