一:背景 1. 讲故事 这几个月经常被朋友问,为什么不更新这个系列了,哈哈,确实停了好久,主要还是打基础去了,分析 dump 的能力不在于会灵活使用 windbg,而是对底层知识有一个深厚的理解,比如:汇编,C, C++,Win32 Api,虚拟内存,Windows 用户态和内核态,这是我今年看的书给大家分享一下. 前段时候微信上有位朋友说他的程序出现了卡死,所有线程都不工作了,听起来还挺吓人的,截图如下: 接下来直接上 WinDbg 分析吧. 二:Windbg 分析 1. 卡死分析 既然说程序…
一:背景 1. 讲故事 前段时间遇到了一个难度比较高的 dump,经过几个小时的探索,终于给找出来了,在这里做一下整理,希望对大家有所帮助,对自己也是一个总结,好了,老规矩,上 WinDBG 说话. 二:WinDbg 分析 1. 为什么会卡死 既然程序卡死,那肯定是被冻住了,所以看下主线程此时在做什么. 0:000:x86> !clrstack OS Thread Id: 0xe20 (0) Child SP IP Call Site 0034d5e8 000bc4b8 [HelperMetho…
一:背景 1.讲故事 前段时间有位朋友微信找到我,说他生产机器上的 Console 服务看起来像是卡死了,也不生成日志,对方也收不到我的httpclient请求,不知道程序出现什么情况了,特来寻求帮助. 哈哈,一般来说卡死的情况在窗体程序(WinForm,WPF) 上特别多,在 Console,WebApi 中相对较少,既然找到我,那就上 WinDbg 分析吧. 二:WinDbg 分析 1. 程序真的卡死了吗 程序之所以能跑的梭梭响,全靠线程帮忙,如果玩不转可能就是线程上出了点什么问题,接下来使…
一:背景 1. 讲故事 前段时间协助训练营里的一位朋友分析了一个程序卡死的问题,回过头来看这个案例比较经典,这篇稍微整理一下供后来者少踩坑吧. 二:WinDbg 分析 1. 为什么会卡死 因为是窗体程序,理所当然就是看主线程此时正在做什么? 可以用 ~0s ; k 看一下便知. 0:000> k # ChildEBP RetAddr 00 00aff168 75e3bb0a win32u!NtUserPeekMessage+0xc 01 00aff168 75e3ba7e USER32!_Pee…
迁移传统桌面程序到MS Store的另一种方式是使用Desktop App Converter工具.虽然本篇标题包含了Desktop App Converter(以下简称DAC),实际上我是来劝你别用DAC的…… 首先我简单介绍下DAC,DAC可以转换传统桌面程序,将其打包成APPX文件.虽然名字里有Converter字样,实际这是一个打包程序,并不会真正去修改用来打包的源程序. 为了使用DAC,你需要1607版本以上的Windows 10 Pro.我想也没有人会闲的蛋疼用Win7去打包APP进…
Hello Google Node.js 一个基于Google V8 的JavaScript引擎. 一个伟大的端至端语言,或许我对你的热爱源自于web这门极富情感的技术吧! 注: 光阴似水,人生若梦,又是人间年尾.许久未说过如此矫情而生硬的话- - 如此篇幅实在无法写明白我扭曲的心理,2017望我还能继续迈进! 喜庆的话不多说,今天给大家分享一个大致3周前,初次涉足Node.js实现的nw.js桌面程序的自动更新模块吧. 本文不做教学,仅用于打脸!希望以此得到各位大神的帮助. 我本没有打算写如此…
一:背景 1. 讲故事 这个月中旬,有位朋友加我wx求助他的程序线程占有率很高,寻求如何解决,截图如下: 说实话,和不同行业的程序员聊天还是蛮有意思的,广交朋友,也能扩大自己的圈子,朋友说他因为这个bug还导致项目黄了一个... 哈哈,看样子是客户不买账,验收不了,害...早找到我,这客户不就捞回来啦,这也许就是技术的价值吧! 既然找到我,那就让这个挂死问题彻底消失吧,上windbg说话. 二:Windbg 分析 1. 查看线程情况 既然朋友说线程高,那就从线程入手,用 !t 命令即可. 0:0…
关于在通过 事件对象 在服务程序和普通桌面应用程序相互之间通信的问题,分类情况进行讨论:1.普通桌面应用程序中创建事件,服务程序中打开事件 XP的情况普通桌面应用程序中创建: m_hEvent = ::CreateEvent(NULL, FALSE, FALSE, TEXT("{67BDE5D7-C2FC-49f5-9096-C255AB791B75}")); 服务程序中打开并置其为有信号: HANDLE hEvent = ::OpenEvent(EVENT_ALL_ACCESS, F…
这个标题真是取得我都觉得蛋疼..微软改名狂魔搞得我都不知道要叫哪个好.. 这边记录一下自己的桌面程序跟windows store app交互的过程. 由于某些原因,微软的商店应用的安全沙箱导致很多事情无法做到,因此额外做了一个.NET桌面引擎来辅助,那么现在就需要让这两个不同环境的程序进行交互. 第一步:在桌面应用引擎中,唤醒商店应用. 根据MSDN解释,这边最简单的办法是使用协议(URI protocol)来解决. 1:打开程序的Package.appxmanifest,在声明中添加协议 名称…
当双击桌面图标的时候,出现如下错误信息:Process org.xfce.FileManager exited with status 1 于是做出如下尝试: 1. ps aux | grep FileManager未找到 2. pacman -Qs FileManager未找到 3. pacman -Ql | grep FileManager找到一个相关的文件 /usr/share/dbus-1/services/org.xfce.FileManager.service根据路径名,猜测与dbu…