在调试器里看百度云管家

本文作者通过对百度云管家的深入分析,揭示了该软件在后台频繁活动的原因,包括大量的内存分配与释放、频繁调用系统API进行进程枚举等,这些行为导致了大量的缺页异常,影响了系统性能。作者使用调试工具如WinDBG、Process Explorer和VTune揭示了其内部机制,并探讨了软件复杂性和资源消耗的问题。
摘要由CSDN通过智能技术生成

作者简介:
张银奎,《软件调试》和《格蠹汇编》作者,从事软件开发和研究十余年,对IA-32架构、操作系统内核、虚拟技术,尤其对软件调试有较深入的研究。
本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅2016年《程序员》

因为太了解软件,我很慎重在自己的电脑上安装新软件。大约半年前,有朋友通过百度云盘向我传递dump文件。点击链接下载时失败,提示超过了普通方式允许的上限,必须安装百度云盘客户端软件。于是我的电脑新增了一个软件,名曰“百度云管家”。第一次看到这个名字,就觉得很奇怪,云的家在服务器上,为什么一个终端应用程序叫云管家呢?

过了一段时间,我慢慢意识到,原来这位云管家管的不是云的家,而是我(用户电脑)的家。名字的含义或曰:“我是百度云,来管你的家”。

为什么这么认为呢?最初的原因是我发现这个管家特别忙碌,即使当我根本没有使用百度云。更让我跌破眼镜的是,即使我把网线拔掉、关闭无线,它依然忙碌。这些反常的表现让我不得不留意它了。多少次,我打开任务管理器,看它忙碌的身影。多少次,我想大声对它说:“管家大哥,你歇歇,告诉我你在忙啥?”

怎一个忙字了得

图1 任务管理器中缺页异常排名第一

图1 任务管理器中缺页异常排名第一

起初是在任务管理器中发现百度云管家(以下简称其“管家程序”)很忙。图1是我某次看见它忙时做的截图。在这个截图中,系统中一共运行了175个进程,任务列表是按缺页异常总数(Page Faults)排名,管家程序排名第一位,而且遥遥领先,把一向排名靠前的McAfee安全软件(第二名和第三名)远远抛在后头(相差一个数量级)。顺便说下,排在第4位的BaiduProtect是管家程序的同门兄弟,以后台服务方式运行,权限更高。

在Page Faults右侧的那一列是PF Delta,代表最近一秒钟新增的缺页异常个数,管家程序新增4千多个,但这并不是我看到的最高值,有时是7000多。再往右的一列是CPU净时间,即CPU执行管家程序的累计时间,14分37秒。这个数值也算较高了,因为系统中CPU频率高达2.6 GHz,速度很快,排在后面的很多程序(图1中未显示出)的累计时间还不到1秒。排在第二名的安全软件CPU累计时间是1小时55分42秒,比管家程序还高很多。如果把缺页异常总数除以CPU净时间,便得到缺页异常与CPU净时间的比率。这个比率反应了CPU执行程序时触发缺页异常的频繁程度,不妨将其称为缺页异常净频率。为排名前两位的两个程序计算这个指标,其结果如下:

0:000> ?? 215415833/(14*60+37)
int 0n245628
0:000> ?? 34064443/(115*60+42)
int 0n4907

可以看出管家程序触发缺页异常的净频率高得惊人,达到24万多次。这意味着CPU平均执行这个程序1秒钟就触发24万多个缺页异常。这也意味着,CPU花在这个程序上的时间有很多都用在了处理缺页异常上。

图2 使用Process Explorer观察线程信息

图2 使用Process Explorer观察线程信息

图2是使用Mark Russinovich先生的Process Explorer来观察管家程序的截图,显示的是管家程序的线程信息。

可以看到,管家程序有四个很活跃的线程,它们的CPU占用率都超过了0.1%。图2中第1列是线程ID,第2列是CPU占用率,第3列是Cycles Delta,即最近一秒钟CPU执行这个线程所用的时钟个数。从Windows Vista开始,NT内核会读取现

在这个系列课程中,来自微软的权威技术专家将向您解释Windows操作系统的内部工作原理,从系统架构的大局观出发,逐步展示进程、线程、安全机制、内存管理和存储管理等子系统的工作方式。通过对底层原理的揭示,使您更进一步的理解Windows上各类程序的工作方式和如何进行错误诊断及性能优化。 本次课程的内容编排得到了国内知名技术作家,《Windows Internals》一书的中文译者,潘爱民先生的大力支持,同时TechNet也邀请到了众多微软一线技术专家进行讲解。这是一个为IT专业人员量身定做的Windows内部知识课程,在介绍原理的同时,也紧密地围绕实际案例和常见的故障进行分析点评。这是一个系统的学习Windows底层工作机制的好机会,课程内容深入浅出,精彩纷呈,绝对不容错过。 深入研究Windows内部原理系列之一:Windows的昨天、今天和明天 讲师信息:潘爱民 2007年01月25日 14:00-15:30 Level: 300 著名技术作家、微软亚洲研究院研究员潘爱民老师将在这次课程中跟听众分享Windows的发展历程和技术精萃,描绘操作系统的体系架构、Vista的内核变更以及今后版本Windows的发展趋势。 深入研究Windows内部原理系列之二:Windows体系结构-从操作系统的角度 讲师信息:张银奎 2007年01月26日 14:00-15:30 Level: 400 操作系统是计算机系统的灵魂和管理中心,也是软件系统中最复杂的部分。本讲座将以生动的讲解和丰富的演示带您领略Windows操作系统的核心架构和主要组件,包括HAL、内核、执行体、系统进程(IDLE、SMSS.EXE、WinLogon.EXE)和Windows子系统(CSRSS.EXE、WIN32K.SYS以及子系统DLL)等。并讨论中断管理、对象管理、和异常分发等系统机制和实现这些机制的基本数据结构。 深入研究Windows内部原理系列之三:Windows体系结构-从应用程序的角度 讲师信息:曾震宇 2007年01月29日 14:00-15:30 Level: 400 从服务器软件到Office办公应用,从联网游戏到即时消息,不管这些应用的复杂程度如何,他们都是一个个在操作系统控制和管理之下的可执行程序。本次课程邀请微软全球技术中心专家级工程师,为各位讲解一个程序是如何经历从启动、分配资源、运行、结束这一连串的过程,并且介绍其中的重要概念和排错诊断技巧。 深入研究Windows内部原理系列之四:Windows操作系统中的重要基本概念 讲师信息:高宇 2007年01月30日 14:00-15:30 Level: 400 进程、线程、资源分配、内存管理、Win32 API、服务、安全,这些是工作中常常提及但是又无法深入理解的神秘概念。在这次课程中,讲师将介绍Windows中最常见与最重要的一些基本概念. 使大家能够顺利地参与到本系列之后的讨论中去。 深入研究Windows内部原理系列之五:Windows Sysinternals工具集介绍 讲师信息:彭爱华 2007年01月31日 14:00-15:30 Level: 400 Sysinternals Suite(Windows Sysinternals工具集)包含一系列免费的系统工具,其中有大名鼎鼎的Process Explorer、FileMon、RegMon等(在Windows Vista下,FileMon和RegMon则被Process Monitor所代替),如果把系统管理员比喻成战士的话,那么Sysinternals Suite就是我们手中的良兵利器。熟悉和掌握这些工具,并且对Windows的体系有一定的了解,将大幅度的提高日常的诊断和排错能力。本课程将以任务驱动的模式,介绍几个经典的应用案例,来介绍Sysinternals Suite的强大功能。 深入研究Windows内部原理系列之六:Vista新特性底层揭秘 讲师信息:彭爱华 2007年02月01日 14:00-15:30 Level: 400 Windows Vista绝非仅仅是具有诸如3D切换、毛玻璃等炫目的界面效果,花钱购买了Windows Vista,而仅仅为了使用其界面效果,难免有点“买椟还珠”的感觉。实际上Windows Vista值得称道的是它具有很多全新的安全特性,例如用户帐户控制、IE保护模式、服务隔离和Windows资源保护等等。有了这些全新的安全特性,我们就可以在相当的程度上摆脱恶意软件的滋扰。Windows之父Jim Allchin曾经说过不要满足于只知道How-to、小技巧之类的知识,而是应该深入底层了解其内部原理。只有了解了这些安全特性的内在原理,才
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值