皮皮网

【lame源码解析】【刷直播人气源码】【易卡网源码】bfd库源码_bc源码下载

来源:同城之约小程序源码 时间:2024-12-22 23:21:43

1.GNU 工具链开发入门(一):工具链介绍
2.ObjdumpObjdump 的源码源码使用
3.目标代码目标文件格式
4.蓝屏代码0x000000d1(0xf4a4fd4c 0x00000002 0x00000000 0xf4bfded9)
5.如何使用oprofile对软件做profiling

bfd库源码_bc源码下载

GNU 工具链开发入门(一):工具链介绍

       进入GNU工具链开发领域,首先需认识到GNU/Linux世界中,下载GNU工具链扮演着不可或缺的源码源码角色。尽管在代码耦合程度和可读性方面,下载GNU工具链可能不如使用Apache协议的源码源码LLVM广受欢迎,但只要GNU/Linux系统持续存在,下载lame源码解析GNU工具链的源码源码使用不会停止。作者自年开始深入探索GNU工具链开发,下载并通过系列文章整理知识体系,源码源码分享个人经验。下载

       GNU工具链主要由三个部分构成:GCC、源码源码GAS和LD。下载GCC作为编译器集合,源码源码包含多种编译器,下载如用于C语言的源码源码刷直播人气源码GCC、用于C++的G++等,而GAS是汇编器,负责将汇编代码转换为机器代码。LD则是链接器,将生成的模块链接成可执行文件或共享库。

       在GCC的使用中,编译过程可以被详细拆解。一个简单的示例为使用`gcc hello.c -o hello`命令编译hello.c文件并生成hello程序。这里实际涉及多个步骤:首先,GCC调用C语言编译器cc1将源代码编译为汇编代码;随后,GAS将汇编代码转换为对象文件;最后,LD链接库文件,生成最终的可执行文件。

       在构建程序时,易卡网源码GCC通过调用AS和LD完成汇编和链接过程,具体参数的传递可能依据不同后端的设置。此外,BFD(Binary File Descriptor)是Binutils仓库中用于底层操作的工具集,包括as、ld等。

       GLibc作为GNU C Library,在构建GNU/Linux和Linux内核时扮演关键角色。它包含几乎所有的UNIX标准,对构建过程至关重要。作者对GLibc的理解仍停留在浅层阶段,专注于RISC-V后端相关工作,对C库的具体实现不敢妄加评论。

       构建GCC的usb通信源码过程通常基于上游最新代码进行,步骤包括配置、编译、链接和安装等。具体步骤可参考相关指南或教程。构建GCC时需要注意版本兼容性、依赖库以及构建环境的设置。

       总结,GNU工具链作为GNU/Linux生态系统的核心组成部分,为用户提供强大的编译和链接功能。了解其构成、使用方法以及构建流程,对深入参与GNU/Linux生态系统的开发工作至关重要。

ObjdumpObjdump 的使用

       objdump是一个命令行工具,用于分析和反汇编可执行文件、淘宝商城网站源码共享库和目标文件。它支持多种格式,如COFF、ELF、MS-DOS等。本文将详细介绍objdump的基本选项和用途。

       首先,让我们了解一些基本选项:

       - `-a`:显示档案库的成员信息,与ar tv类似。

       - `-b bfdname`或`--target=bfdname`:指定目标码格式。虽然不是必需的,objdump能自动识别许多格式,但可以通过它明确指定文件的格式,例如`objdump -b oasys -m vax -h fu.o`。

       - `-C`:将底层的符号名解码成用户级名字,去除所有开头的下划线,使C++函数名以可理解的方式显示出来。

       - `-d`或`--disassemble`:反汇编那些应该还有指令机器码的section。

       - `-D`:与 `-d` 类似,但反汇编所有section。

       - `-h`或`--headers`:显示目标文件各个section的头部摘要信息。

       - `-i`或`--info`:显示可用的架构和目标格式列表。

       - `-j section`或`--section=section`:仅仅显示指定section的信息。

       - `-l`:用文件名和行号标注相应的目标代码,适用于与 `-d`、`-D` 或 `-r` 一起使用。

       - `-m machine`或`--architecture=machine`:指定反汇编目标文件时使用的架构。

       - `-r`或`--reloc`:显示文件的重定位入口。

       - `-S`或`--source`:尽可能反汇编出源代码,特别是当编译时指定了调试参数如`-g`时。

       - `-x`或`--all-headers`:显示所有可用的头信息,包括符号表、重定位入口。等价于 `-a -f -h -r -t`。

       - `--version`:显示版本信息。

       通过这些选项,objdump提供了强大的功能,用于调试、分析和理解二进制文件。例如,使用`objdump -a libpcap.a`可以查看libpcap库中的成员信息,与`ar -tv libpcap.a`的输出进行比较。

       在实际应用中,`objdump`常被用来理解二进制文件的内部结构,查找特定指令或函数,或是在调试过程中分析代码行为。理解这些选项的用途和作用,将有助于更有效地使用`objdump`进行二进制分析工作。

目标代码目标文件格式

       目标文件格式是用于存放目标代码和编译或汇编过程中生成的相应数据的计算机文件格式。

       随着Unix和其他可移植操作系统的问世,人们定义了如COFF和ELF等格式,这些格式在不同系统上被广泛使用。链接器的输入和输出通常使用相同的文件格式,库文件和可执行文件格式也采用相同的格式。设计或选择一种目标文件格式是计算系统整体设计的关键部分,它影响链接器的性能以及程序员在开发过程中的耗时。

       目标文件格式的设计影响着程序的运行时间以及系统对用户请求的响应速度。大部分目标文件格式采用区块组织方式,每块包含相同类型的数据。当虚拟内存系统需要这些块时,它可以通过将块分页后调入内存,无需进一步处理即可使用。

       最简单的目标文件格式是DOS的COM文件格式,它仅由原始数据组成,并始终被加载到固定位置。其他格式通常由一组复杂且精密的数据结构序列组成,规范说明书往往有数页之多。

       调试信息可以作为目标文件格式的一部分,如COFF格式中那样,或作为可能被多个目标格式使用的独立格式,如stabs或DWARF。

       GNU计划的BFD库提供了一套通用的应用程序编程接口,用于操纵各种目标文件格式。

       典型的目标文件格式支持的数据类型包括符号起始区域(BSSBlockStartedbySymbol)、正文段(textsegment或译作代码段)和数据段(datasegment)。这些格式的设计和使用在计算系统中扮演着关键角色,影响着开发效率、程序运行时间和系统响应速度。

扩展资料

       指源代码经编译后,产生的能被 CPU直接识别的二进制代码。

蓝屏代码0xd1(0xf4a4fd4c 0x 0x 0xf4bfded9)

       è“å±"的硬件原因及解决

       "蓝屏"现象多和内存大小、CPU频率、光驱、硬盘碎片等等关系密切......在计算机的使用过程中,经常会遇到蓝屏的情况。对于初学者来讲,好象就是一场电脑灾难一样,不知所措。其实只要了解了原因之后就不用怕了。造成计算机蓝屏的原因有很多种,硬件方面的原因总体可以概括为以下几种:

       ä¸€ã€å±å¹•æ˜¾ç¤ºç³»ç»Ÿå¿™ï¼Œè¯·æŒ‰ä»»æ„é”®ç»§ç»­â€¦â€¦

       1、虚拟内存不足造成系统多任务运算错误

       è™šæ‹Ÿå†…存是WINDOWS系统所特有的一种解决系统资源不足的方法,其一般要求主引导区的硬盘剩余空间是其物理内存的2-3倍。而一些发烧友为了充分利用空间,将自己的硬盘塞到满满的,忙记了WINDOWS这个苛刻的要求。结果导致虚拟内存因硬盘空间不足而出现运算错误,所以就出现蓝屏。要解决这个问题好简单,尽量不要把硬盘塞得满满的,要经常删除一些系统产生的临时文件、交换文件,从而可以释放空间。或可以手动配置虚拟内存,选择高级,把虚拟内存的默认地址,转到其他的逻辑盘下。这样就可以避免了因虚拟内存不足而引起的蓝屏。

       2、CPU超频导致运算错误

       è¶…频对于发烧友来说是常事,所以由超频所引起的各种故障也就在所难免了。超频,就本身而言就是在原有的基础上完成更高的性能,但由于进行了超载运算,造成其内部运算过多,使CPU过热,从而导致系统运算错误。有些CPU的超频性能比较好,如INTEL的赛扬处理器和AMD-K6-2处理器还算较好的,但有时也会出现一些莫名其妙的错误。(例如:我曾试过将INTEL赛扬A,在超频到时,软驱在没有接受命令时,进行读盘操作)。INTEL的低于的CPU以及AMD-K5的超频能力就不是那么好。建议高档的CPU要超频时,那么散热工作一定要做好,最好装一个大的风扇,再加上一些硅胶之类的散热材料。至于一些低档的CPU我建议你就最好不要超频了,免得超频达不到预想的效果反而经常出现蓝屏影响计算机的正常速度。

       äºŒã€å†…存条的互不兼容或损坏引起运算错误

       è¿™æ—¶ä¸ªæœ€ç›´è§‚的现象,因为这个现象往往在一开机的时候就可以见到,根本启动不了计算机,画面提示出内存有问题,问你是否要继续。造成这种错误是物理上的损坏内存或者内存与其它硬件不兼容所致。这时候只有换过另外的内存了。

       ä¸‰ã€å…‰é©±åœ¨è¯»ç›˜æ—¶è¢«éžæ­£å¸¸æ‰“开所至

       è¿™ä¸ªçŽ°è±¡æ˜¯åœ¨å…‰é©±æ­£åœ¨è¯»å–数据时,由于被误操作打开而导致出现蓝屏。这个问题不影响系统正常动作,只要再弹入光盘或按ESC键就可以。

       ä»¥ä¸Šæ˜¯æˆ‘在维护计算机中碰到导致蓝屏的几种原因,或许还会有其他一些莫名其妙的问题导致计算机出现蓝屏。不管怎样,遇到这类问题后,应先仔细分析问题发生的原因,然后再着手解决。

       å››ã€ç¡¬ä»¶å‰©ä½™ç©ºé—´å¤ªå°æˆ–碎片太多

       ç”±äºŽWin9X运行时需要用硬盘作虚拟内存,这就要求硬盘必须保留一定的自由空间以保证程序的正常运行。一般而言,最低应保证MB以上的空间,否则出现“蓝屏”很可能与硬盘剩余空间太小有关。另外,硬盘的碎片太多,也容易导致“蓝屏”的出现。因此,每隔一段时间进行一次碎片整理是必要的。

       äº”、系统硬件冲突

       è¿™ç§çŽ°è±¡å¯¼è‡´â€œè“å±â€ä¹Ÿæ¯”较常见。实践中经常遇到的是声卡或显示卡的设置冲突。在“控制面板”→“系统”→“设备管理”中检查是否存在带有黄色问号或感叹号的设备,如存在可试着先将其删除,并重新启动电脑,由Win9X自动调整,一般可以解决问题。若还不行,可手工进行调整或升级相应的驱动程序。

       "蓝屏"的软件原因及解决

       ä¸Žç¡¬ä»¶å¯†åˆ‡è”系的是软件,有时软件在"蓝屏"现象中也"功不可没",加载了过多的程序、注册表有问题、软硬不兼容、驱动程序有问题,相对于硬件原因来说要不易察觉些,可要多加注意.........

       ä¸€ã€å¯åŠ¨æ—¶åŠ è½½ç¨‹åºè¿‡å¤š

       ä¸è¦åœ¨å¯åŠ¨æ—¶åŠ è½½è¿‡å¤šçš„应用程序(尤其是你的内存小于MB),以免使系统资源消耗殆尽。正常情况下,Win9X启动后系统资源应不低于%。最好维持在%以上,若启动后未运行任何程序就低于%,就需要卸掉一部分应用程序,否则就可能出现“蓝屏”。

       äºŒã€åº”用程序存在着BUG

       æœ‰äº›åº”用程序设计上存在着缺陷或错误,运行时有可能与Win9X发生冲突或争夺资源,造成Win9X无法为其分配内存地址或遇到其保护性错误。这种BUG可能是无法预知的,免费软件最为常见。另外,由于一些用户还在使用盗版软件(包括盗版Win9X),这些盗版软件在解密过程中会破坏和丢失部分源代码,使软件十分不稳定,不可靠,也常常导致“蓝屏”。

       ä¸‰ã€é­åˆ°ä¸æ˜Žçš„程序或病毒攻击所至

       è¿™ä¸ªçŽ°è±¡åªè¦æ˜¯å¹³æ—¶æˆ‘们在上网的时候遇到的,当我们在冲浪的时候,特别是进到一些BBS站时,可能暴露了自己的IP,被"黑客"用一些软件攻击所至。对互这种情况最好就是在自己的计算机上安装一些防御软件。再有就是登录BBS要进行安全设置,隐藏自己IP。

       å››ã€ç‰ˆæœ¬å†²çª

       æœ‰äº›åº”用程序需调用特定版本的动态链接库DLL,如果在安装软件时,旧版本的DLL覆盖了新版本的DLL,或者删除应用程序时,误删了有用的DLL文件,就可能使上述调用失败,从而出现“蓝屏”。不妨重新安装试一试。

       äº”、注册表中存在错误或损坏

       å¾ˆå¤šæƒ…况下这是出现“蓝屏”的主要原因。注册表保存着Win9X的硬件配置、应用程序设置和用户资料等重要数据,如果注册表出现错误或被损坏,就很可能出现“蓝屏”。如果你的电脑经常出现“蓝屏”,你首先就应考虑是注册表出现了问题,应及时对其检测、修复,避免更大的损失。

       å…­ã€è½¯ç¡¬ä»¶ä¸å…¼å®¹

       æ–°æŠ€æœ¯ã€æ–°ç¡¬ä»¶çš„发展很快,如果安装了新的硬件常常出现“蓝屏”,那多半与主板的BIOS或驱动程序太旧有关,以致不能很好支持硬件。如果你的主板支持BIOS升级,应尽快升级到最新版本或安装最新的设备驱动程序。

       Windows "蓝屏"分析与解决篇

       Win也许可以说得上是一个划时代的操作系统,但是它仍然不能够避免蓝屏死机(Blue Screen of Death)问题,Win的"蓝屏"(BSOD)和NT4以前的"蓝屏"消息是完全不同的。最大的不同就是NT中的BSOD只包含一个通用的停止消息类型(就是实际的出错代码), 但是Win的BSOD包含有两种消息类型:停止消息和硬件消息。停止消息是指,当win的内核发现一个它不能够恢复的软件错误时候产生的错误消息,它分为:常规停止消息、安装停止消息、可执行程序安装停止消息、软件陷阱停止消息四种类型......针对Windows的蓝屏,在上述概括的现象与对策基础上,我们分两方面来分析:

       Windows 中蓝屏死机之停止信息分析

       ç®€ä»‹ï¼šä»€ä¹ˆæ˜¯è“å±æ­»æœºï¼ˆBSOD)问题?

       BSOD就是显示在蓝色屏幕背景下的出错信息。一般这种出错信息严重到你的整个操作系统当机,你只有重新冷启动的选择。

       åˆ¨æžBSOD

       BSOD可以分成独立的几部分,每部分包含有有价值的错误处理信息。这几部分包括:

       1、bug检查部分:这是BSOD中包含实际出错消息的位置。在这部分中,你应该注意的是出错代码(就是在单词“Stop”后面的十六进制数字)和错误符号(就是紧跟在出错代码后的单词)

       2、推荐用户采取行动部分:这部分经常包含一些一般的指导你如何纠正错误的步骤的消息。

       3、调试端口信息部分:这部分包含有你应该如何设置你的内核调试器的信息。内核调试器是让你可以通过手工连接到计算机并对进程进行调试的工具。

       ä¸‹é¢æ˜¯ä¸€ä¸ªå…·ä½“çš„BSOD例子:

       *** Stop: 0xE (0xFAA, 0X, 0X)

       KMODE_EXCEPTION_NOT_HANDLED

       *** Address FAA base at fA, DateStamp ef8d - wdmaud.sys

       If this is the first time you've seen this Stop error screen, restart your computer.

       If this screen appears again, follow these steps:

       Check to be sure you have adequate disk space. If a driver is identified in the

       Stop message, disable the driver or check with the manufacturer for driver updates.

       Try changing video adapters.

       Check with your hardware vendor for any BIOS updates. Disable BIOS memory options

       such as caching or shadowing. If you need to use Safe Mode to remove or disable

       components, restart your computer, press F8 to select Advanced Startup Options,

       and then select Safe Mode.

       Refer to your Getting Started manual for more information on troubleshooting Stop errors.

       Kernel Debugger Using: COM2 (Port 0x2f8, Baud Rate )

       Beginning dump of physical memory

       Physical memory dump complete. Contact your system administrator or technical support group.

       æ ¹æ®è¿™ä¸ªå…·ä½“的例子,按照上面刨析的BSOD四个部分,下面一一介绍:

       bug检查部分:

       è¿™æ˜¯BSOD中包含实际出错消息的位置。它看上去就是下面的代码:

       *** Stop: 0xE (0xFAA, 0X, 0X)

       KMODE_EXCEPTION_NOT_HANDLED *** Address FAA base at fA, DateStamp ef8d - wdmaud.sys

       å…¶ä¸­é”™è¯¯ä»£ç æ˜¯ä¸€ä¸ªç´§è·Ÿåœ¨Stop后面的十六进制数,在这里面它由其它四个数字组成。

       è€Œé”™è¯¯ç¬¦å·æ˜¯æŒ‡ç´§éšå…¶åŽçš„KMODE_EXCEPTION_NOT_HANDLED.

       åœ¨ä¸€äº›BSOD出错信息中,一个内存位置和文件名出现在错误符号的后面。这个信息告诉了当错误发生的时候在内存中的位置和哪个文件导致了错误的发生。当然你是否能够看到该信息是由哪种停止消息类型来决定的。在一些实际运用中,你只能够看到上面的第一行。而这里通常是表示由显示服务中导致的问题。 推荐用户采取行动部分:

       åœ¨ä¸Šé¢çš„例子中推荐用户采取行动部分如下:

       If this is the first time you've seen this Stop error screen, restart your computer. If this screen appears again, follow these steps:

       Check to be sure you have adequate disk space. If a driver is identified in the Stop message, disable the driver or check with the manufacturer for driver updates. Try changing video adapters.

       Check with your hardware vendor for any BIOS updates. Disable BIOS memory options such as caching or shadowing. If you need to use Safe Mode to remove or disable components, restart your computer, press F8 to select Advanced Startup Options, and then select Safe Mode.

       Refer to your Getting Started manual for more information on troubleshooting Stop errors.

       æŽ¨èç”¨æˆ·é‡‡å–行动部分通常是推荐用户在遇到了出错信息后应该采取的解决步骤。在消息中可以看到,解决一个BSOD也许只要重新启动或则整理出足够大的剩余空间就能够解决了。尽管这样的方法偶尔会起到作用,但是实际上要解决BSOD经常要远远复杂得多。

       è°ƒè¯•ç«¯å£ä¿¡æ¯éƒ¨åˆ†ï¼š

       è¿™éƒ¨åˆ†åŒ…含有你应该如何设置你的内核调试器的信息。我会在以后的网站里面详细介绍什么是的内核调试器。在上面的例子中,这部分内容是:

       Kernel Debugger Using: COM2 (Port 0x2f8, Baud Rate )

       Beginning dump of physical memory Physical memory dump complete. Contact your system administrator or technical support group.

       åœæ­¢ä¿¡æ¯çš„四种类型

       å½“程序或则驱动程序发生了一个不能够控制的错误消息或则试图执行一个非法指令时,系统就会发生停止出错信息。而这种信息通常由四种类型组成。

       1、常规停止消息:在正常的使用win时发生的停止消息

       å¸¸è§„停止消息通常是最难解决的出错信息,因为有可能有无数的原因能够导致错误的发生。

       2、安装停止消息:在安装win过程中的停止消息,通常由你的系统中存在和不兼容的硬件设备引起的。

       è§£å†³åŠžæ³•æ˜¯ä½ æŸ¥çœ‹ç³»ç»Ÿä¸­çš„硬件设备,找到没有列出在兼容列表中的设备。然后和你的硬件设备厂商联系看他们是否能够给你提供该设备的驱动程序。如果他们不能,那你只好从你的系统中删除该设备,并用其它的可以兼容的设备替换掉。

       å¦‚果你的所有硬件都是兼容的,你也许是存在有两个互相冲突的硬件设备。要解决这个问题,先移走任何不是必要的硬件设备,然后重新装载,一旦装载成功后,把所有移走的设备全部重新加入到系统中。这样做,通常能够解决这个问题,至少能够告诉你哪些硬件是有冲突的。

       3、可执行程序安装停止消息:表示发生在安装过程中第4个阶段(执行程序部分)的停止消息。

       å®‰è£…在可执行程序的安装过程中有两个阶段。第一个阶段是禁止硬件中断同时装载一些基本的组件,例如硬件提取层。第二个阶段是初始化你系统中所有的硬件。如果你在安装程序到了这个阶段的时候收到了停止消息错误。需要再次运行诊断程序,来判断你的硬件是否都工作正常。然后重新安装。如果你仍然遇到这个出错消息,那么就需要和微软技术支持部打交道了。

       4、软件陷阱停止消息:由于软件中的错误陷阱并且当程序试图执行一个非法指令的时候发生的停止消息。

       ç”±äºŽè½¯ä»¶ä¸­çš„错误陷阱并且当程序试图执行一个非法指令的时候发生的停止消息。例如,程序试图向一个本来是保存数字的变量写字符串的时候,这个错误就有可能发生。如果你遇到了这种类型的错误,需要记下出错信息,是什么软件导致了错误,一般这些软件都有新的版本来纠正这些错误的。

       å½“你遇到了停止消息时候可能需要的解决问题的步骤:

       é¦–先判断你最近是不是在系统中有任何的变动。如果你有,那么这些变动经常是问题产生的根源。试图删除或者移走新的硬件或软件,看是否能够解决问题。检查系统中的硬件,最好如果有硬件检测程序的话,可以运行该程序进行检测,同时重新插放你的内存卡和扩展卡。

       å¦‚果你的停止信息是发生在启动中或刚启动的过程中,那么这有可能是你的某个服务或则设备驱动程序中的问题。可以尝试将机器启动到安全模式。如果你的系统能够启动成功安全模式,那么表示你的猜测是正确的。

       åŒæ—¶è¦ç¡®ä¿ä½ çš„防病毒程序是设计成和win兼容的,并且随时保持更新。如果错误仍然发生,那么进入你的CMOS设置,禁止掉BIOS中的象缓存或则shadow之类的选项,然后重新启动。

       Windows 蓝屏死机之STOP对"症"下药

       ä»Žç†è®ºä¸Šè®²ï¼Œçº¯ä½çš„Windows 是不会出现死机的,但是这仅仅是理论上。病毒或硬件和硬件驱动程序不匹配等原因将造成Windows的崩溃,当Windows 出现死机时,显示器屏幕将变为蓝色,然后出现STOP故障提示信息。下面我们分别介绍通用的STOP故障处理方法和特殊的STOP故障排除。

       é€šç”¨STOP故障处理

       1.首先使用新版杀毒软件检查计算机上是否有病毒。

       2.如果Windows 可以启动,请检查“事件查看器”中的信息,以确定导致故障的设备或驱动程序。启动“事件查看器”的方法是:“开始”\“设置”\“控制面板”\“管理工具”\“事件查看器”\“系统日志”。

       3.如果不能启动计算机,试着用“安全模式”或“最后一次正确的配置”启动计算机,然后删除或禁用新安装的附加程序或驱动程序。如果用“安全模式”启动不了计算机,可使用修复控制台。修复控制台可以禁用一些服务、重新命名设备驱动程序、检修引导扇区或主引导记录。

       4.拆下新安装的硬件设备(RAM、适配卡、硬盘、调制解调器等等)。

       5.确保已经更新了硬件设备的驱动程序,以及系统有最新的BIOS。

       6.运行由计算机制造商提供的系统诊断工具,尤其是内存检查。

       7.检查Microsoft兼容硬件列表(HCL),确保所有的硬件和驱动程序都与Windows兼容。Hcl.txt在Windows CD-ROM的\Support文件夹中。

       8.在BIOS中禁用内存缓存功能。

       9.重新启动计算机,在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。(注:使用“最后一次正确的配置”的方式启动计算机,计算机的所有设置被重置为最后一次成功启动时的配置。)

       .如果能够访问Web,请进入/ntserver/,单击“Support”/“Search Knowledge Base”,在“Type your keywords here”处,输入“stop”和相应的号码(如出现STOP消息“stop:0xA”,可在此输入“stop0xA”),按Enter键,就可以找出所出现的STOP问题的解决方法。(E文)

       éƒ¨åˆ†STOP代码

       STOP消息 0xA故障(刚加入新设备时)

       é€šå¸¸åŽŸå›  驱动程序使用了不正常的内存地址。

       1.在安装过程中,屏幕上提示“安装程序正在检查计算机硬件配置”时,按F5,根据提示选择合适的计算机类型。例如,如果计算机是单处理器,请选择“标准PC”。

       2.在BIOS中禁用内存缓存功能。

       3.拆下所有适配卡,并断开所有不是启动计算机所必需的硬件设备,再重新安装Windows。

       4.如果系统配有SCSI适配卡,请向适配卡销售商索取最新的Windows驱动程序,禁用同步协商功能,检查终结头和设备的SCSI ID号。

       5.如果系统配有IDE设备,设IDE端口为Primary。检查IDE设备的Master/Slave/Only设置。除了硬盘,拆下其它所有的IDE设备。

       6.运行由计算机制造商提供的系统诊断工具,尤其是内存检查。

       7.检查Microsoft兼容硬件列表(HCL),确保所有的硬件和驱动程序都与Windows兼容。

       8.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。

       STOP消息 0xE故障

       1.检查是否有充分的磁盘空间,尤其是新安装。

       2.禁用STOP消息中显示的驱动程序和所有新安装的驱动程序。

       3.如果所使用的视频驱动程序不是Microsoft提供的,试着切换到标准VGA驱动程序或者由Win支持的合适的驱动程序。

       4.确保系统有最新的BIOS。

       5.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。

       STOP消息 0x和0x故障

       é€šå¸¸åŽŸå›  严重的驱动器碎片、超载的文件I/O、第三方的驱动器镜像软件或者一些防病毒软件出错。

       1.禁用一些防病毒软件或者备份程序,禁用所有碎片整理应用程序。

       2.运行CHKDSK /f 检修硬盘驱动器,然后重新启动计算机。

       3.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。

       STOP消息 0xE故障

       é€šå¸¸åŽŸå›  系统内存中的奇偶校验错误。

       1.运行由计算机制造商提供的系统诊断工具,尤其是内存检查。

       2.在BIOS中禁用内存缓存功能。

       3.试着用“安全模式”启动。如果“安全模式”可启动计算机,试着更改为标准VGA驱动程序。如果这不能解决问题,可能须要用另外的视频适配卡。“兼容硬件列表”中列出了兼容的视频适配卡。

       4.确保已经更新了硬件设备的驱动程序,以及系统有最新的BIOS。

       5.拆下一些新安装的硬件(RAM、适配器、硬盘、调制解调器等等)。

       6.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。

       STOP消息 0xF故障

       é€šå¸¸åŽŸå›  驱动程序没有被完全清除。

       åˆ é™¤ä¸€äº›æ–°å®‰è£…的软件,包括备份工具或磁盘工具,例如碎片整理和防病毒软件。

       STOP消息 0x故障

       é€šå¸¸åŽŸå›  在容错集的主驱动器中发生错误。

       1.用Windows 引导软盘,从镜像(第二个)系统驱动器启动计算机。

       2.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。

       STOP消息 0xB故障

       é€šå¸¸åŽŸå›  在I/O系统的初始化过程中出现问题(通常是引导驱动器或文件系统)。

       1.检查计算机上是否有病毒。这个STOP消息通常在引导扇区有病毒时出现。

       2.使用“修复控制台”来修复驱动器。

       3.拆下新安装的硬盘驱动器或控制卡。

       4.如果系统配有SCSI适配卡,请向适配卡销售商索取最新的Windows驱动程序,禁用同步协商功能,检查终结头和设备的SCSI ID号。

       5.如果系统配有IDE设备,设IDE端口为Primary。检查IDE设备的Master/Slave/Only设置。除了硬盘,拆下其它所有的IDE设备。

       6.运行CHKDSK。如果Windows 不能启动CHKDSK,则必须把硬盘拆下并连接到另一个Windows系统上,然后用CHKDSK命令检查该硬盘。

       7.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。

       STOP消息 0xF故障

       é€šå¸¸åŽŸå›  硬件或软件问题;常见的原因是硬件失效。

       1.运行由计算机制造商提供的系统诊断工具,尤其是内存检查。这个STOP消息经常出现在错误或误配内存的情况下。

       2.在BIOS中禁用内存缓存功能。

       3.试着拆下或替换硬件:RAM、控制器、适配器、调制解调器和其它外围设备。

       4.检查Microsoft兼容硬件列表(HCL),确保所有的硬件和驱动程序都与Windows兼容。这个问题可能是由于不兼容的主板引起的。

       5.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。

       è§£å†³è“å±ä¹‹å·¥å…·ç¯‡:

       "两手抓,两手都要硬",针对 "蓝屏"现象除了在硬件方面改善你的系统硬件环境外,"软环境"的建设也不可忽视,就我们所知道的一些工具介绍给你,当然,可能还有更多的好工具,不妨平时多留意!

       RAM Idle--让蓝屏消失

       ä¸ç®¡æ˜¯æ›¾ç»è¿œåŽ»çš„DOS时代,还是如日中天的Windows时代,作为系统资源中最重要的一项——内存资源,一直都是电脑爱好者们最为头疼的事情。虽然现在主板上的内存插槽越来越多,内存的价钱也越来越低,但无论怎样,还是有很多朋友的内存资源时常不够用,以至于系统性能无法正常发挥。究其原因,主要是由于Windows操作系统不能有效地对内存资源进行管理,导致大量内存资源被白白占用,从而使系统性能大幅度降低,造成程序锁死、系统挂起等烦人的问题。因此,不少专门用来对内存资源进行管理的工具软件也就应运而生,而今天要介绍的RAM Idle则是这类软件中的佼佼者。

       ä¸€ã€å®‰è£…

       é¦–先用Winzip等软件将下载得到的压缩包解压,然后点击Setup.exe文件,在弹出的对话框中选择【是】即可开始安装RAM Idle(如图1)。和大多数Windows应用程序一样,RAM Idle的安装过程很简单,只需要一路点击【Next】即可完成。

       äºŒã€ 使用

       RAM Idle的主要功能是在系统空闲的时候按照用户设置自动释放回收一定数量的内存,从而避免因Windows系统不足而造成的内存资源枯竭问题,并大幅提高系统性能与稳定性。

       ä¿—话说:工欲善其事,必先利其器,使用RAM Idle也是一样,只有设置合理,它才能更好的对内存资源进行管理。下面就请大家点击【开始】-【程序】-【RAM Idle】-【Configuration】打开RAM Idle设置界面(如图2)和我一起认识下RAM Idle的设置选项

       1. 【Main】选项卡:为软件的主要设置部分,包括以下几个内容:

       Â·Target Free RAM:设置到达最小剩余内存时,RAM Idle所要尝试恢复的内存数量。

       Â·Minimum Free RAM:设置最小剩余内存数量,当达到这个数值的时候,RAM Idle将会自动恢复内存资源。

       Â·Disable the CPU usage detection:选中此项后,RAM Idle恢复内存的时候将不再检测CPU占用率,不过只是在你的CPU占用率总是显示%的时候才需要选中。一般情况下我们不用选中该项,【Recover RAM if only……】中可以设置恢复内存时的最高CPU占用率,也就是说只有CPU占用率低于设定数值时,RAM Idle才可以恢复内存,否则,不予恢复。

       Â·Free up……if free RAM below %:设置剩余内存少于总内存%的时候,每隔多少时间恢复多少数量的内存。

       Â·Pop up menu free……:设置弹出菜单中手动恢复内存部分的三个恢复数值。

       2. 【Options】选项卡:主要包括总在最前面、随Windows启动而启动、隐藏系统托盘图标等一些常规设置。

       3. 【Gator】选项卡:一个填表软件的简要介绍和下载链接。

       4. 【About】选项卡:显示当前系统的内存资源信息(如图3)

       RAM Idle释放内存共有两种方法,一种是当剩余内存少于总内存%的时候,按照设置每隔一段时间自动释放一定数量的内存(设置方法见上);一种是在系统托盘的RAM Idle图标上点击鼠标右键,使用弹出菜单(如图4)中的三个选项快速手动释放一定数量的内存(设置方法见上)。

       ä¸‰ã€ 小结

       ä¸ŽåŒç±»è½¯ä»¶ç›¸æ¯”,RAM Idle基本综合了该类软件的所有精华,具有无可比拟的强大内存管理能力。首先RAM Idle可以自动释放内存资源,并且优化时间快,效率高。其次RAM Idle设置方便,功能齐备,并且占用系统资源少,可在系统较为空闲的时候运行。另外,该软件还具有多种方便且实用的小功能,如重新启动,关机,挂起等。

       è™½ç„¶MemMAX、FREERAM、RAMFIX等软件也各有特色,但由于这样或者那样的缺点,比如不能自动优化、占用系统资源太高、优化效率低下、使用繁琐等,使得它们很难超越RAM Idle。

       å¦‚果你正在为你的内存资源的管理而发愁的话,那么我建议你一定要试试RAM Idle,以它的实力相信一定不会让你失望!

       æ‰“赢一场蓝屏歼灭战

       è“å±åˆ°åº•æ˜¯æ€Žä¹ˆäº§ç”Ÿçš„呢?我们可以从软、硬两方面来解释蓝屏现象产生的原因。从硬件方面来说,超频过度是导致蓝屏的一个主

如何使用oprofile对软件做profiling

       ã€€ã€€ä¸€. Oprofile简介

       ã€€ã€€

       ã€€ã€€Profiling是对不同性能特征的数据的形式化总结或分析,它通常以图形和表的形式出现。它提供为特定的处理器事件收集的采样百分数或数量,比如cache miss rate、TLB miss rate等等。一般来说,主要目的是为了找出软件中的性能瓶颈,然后有针对性的优化以提升软件的整体性能。

       ã€€ã€€

       ã€€ã€€Oprofile 是用于 Linux 的若干种评测和性能监控工具中的一种。它可以工作在不同的体系结构上,包括ARM, PowerPC, MIPS, IA, IA 和 AMD Athlon等等。它的开销很小,从Linux 2.6 版起,它被包含进了Linux内核中。

       ã€€ã€€

       ã€€ã€€Oprofile可以收集有关处理器事件的信息,帮助用户识别诸如循环的展开、cache的使用率低、低效的类型转换和冗余操作、错误预测转移等问题。Oprofile是一种细粒度的工具,可以为指令集或者为函数、系统调用或中断处理例程收集采样。Oprofile 通过取样来工作。使用收集到的评测数据,用户可以很容易地找出性能问题。

       ã€€ã€€

       ã€€ã€€é€šè¿‡ç›‘察CPU的hardware events,oprofile可以在运行状态下对整个Linux系统进行profiling。Profiling的对象可以是Linux kernel (包括modules和interrupt handlers), shared libraries或者应用程序。

       ã€€ã€€

       ã€€ã€€ä»Ž0.9.8版本开始,oprofile支持Perf_events profiling mode模式。应用程序operf被用来控制profiling过程;而在legacy mode下,是通过opcontrol脚本和oprofiled daemon来完成的。Operf不再象legacy mode那样需要OProfile kernel driver,它直接和Linux Kernel Performance Events Subsystem打交道。使用operf,就可以用普通用户的身份来profiling用户的应用程序了,当然如果需要对整个系统来profiling的时候还是需要root权限的。

       ã€€ã€€

       ã€€ã€€å¦‚果硬件不支持OProfile使用performance counters,OProfile就只能工作在Timer Mode下了。Timer Mode只能在legacy profiling mode下使用,即只能通过opcontrol脚本来控制。

       ã€€ã€€Oprofile的优势:

       ã€€ã€€Ÿ 比较低的运行开销

       ã€€ã€€Ÿ 对被profiling的对象影响很小

       ã€€ã€€Ÿ 可以profiling中断服务程序(interrupt handlers)

       ã€€ã€€Ÿ 可以profiling应用程序和shared libraries

       ã€€ã€€Ÿ 可以profiling dynamically compiled (JIT) code

       ã€€ã€€Ÿ 可以对整个系统做profiling

       ã€€ã€€Ÿ 可以观察CPU内部的细节,例如cache miss rate

       ã€€ã€€Ÿ 可以多源代码做annotation

       ã€€ã€€Ÿ 可以支持instruction-level的profiling

       ã€€ã€€Ÿ 可以生成call-graph profiles

       ã€€ã€€

       ã€€ã€€ä¸è¿‡OProfile也不是万能的,它也有自己的局限性:

       ã€€ã€€Ÿ 只能在x, ARM, 和PowerPC架构上生成call graph profiles

       ã€€ã€€Ÿ 不支持%精确的instruction-level profiling

       ã€€ã€€Ÿ 对dynamically compiled (JIT) code profiling的支持还不完善。

       ã€€ã€€

       ã€€ã€€æ— è®ºå¦‚何,Oprofile的功能都比gprof要强很多,代价是配置起来会比较麻烦。

       ã€€ã€€

       ã€€ã€€

       ã€€ã€€äºŒ. 编译Oprofile

       ã€€ã€€

       ã€€ã€€é¦–先最好在Linux kernel里面选中Oprofile driver,以获得全面的支持。

       ã€€ã€€

       ã€€

       ã€€ã€€å› ä¸ºç¬”者使用的是Xilinx Linux pre-built .7,所以这里下载的是linux-xlnx-xilinx-v.7.tar.gz

       ã€€ã€€

       ã€€ã€€è§£åŽ‹ç¼©åŽï¼Œç”¨ä»¥ä¸‹å‘½ä»¤è°ƒå‡ºLinux kernel的配置界面:

       ã€€ã€€export ARCH=arm

       ã€€ã€€export CROSS_COMPILE=arm-xilinx-linux-gnueabi-

       ã€€ã€€make xilinx_zynq_defconfig

       ã€€ã€€make xconfig 或者make menuconfig

       ã€€ã€€

       ã€€ã€€åœ¨é…ç½®ç•Œé¢ä¸Šå°†ä»¥ä¸‹ä¸¤é¡¹å‹¾ä¸Šï¼š

       ã€€ã€€General setup --->

       ã€€ã€€[*] Profiling support

       ã€€ã€€<*> OProfile system profiling

       ã€€ã€€

       ã€€ã€€ç„¶åŽmake uImage即可生成新的uImage,用来替换Xilinx Linux pre-built .7中的Linux kernel image。同时我们也需要vmlinux来检查profiling的结果。

       ã€€ã€€

       ã€€ã€€

       ã€€ã€€Oprofile需要popt, bfd, liberty库,要在嵌入式单板上使用这些库,需要手工完成交叉编译。

       ã€€ã€€

       ã€€ã€€é’ˆå¯¹popt 1.7,用以下命令完成编译:

       ã€€ã€€./configure --prefix=/home/wave/xilinx/oprofileprj/rootfs --host=arm-xilinx-linux-gnueabi --with-kernel-support --disable-nls && make && make install

       ã€€ã€€

       ã€€ã€€é’ˆå¯¹binutils 2.,用以下命令完成编译:

       ã€€ã€€./configure --host=arm-xilinx-linux-gnueabi --prefix=/home/wave/xilinx/oprofileprj/rootfs --enable-install-libbfd --enable-install-libiberty --enable-shared && make && make install

       ã€€ã€€ä¸è¿‡--enable-install-libiberty没有效果,所以需要手工把libiberty.a和libiberty.h拷贝到相应的位置。

       ã€€ã€€

       ã€€ã€€é’ˆå¯¹oprofile 0.9.9,用以下命令完成编译:

       ã€€ã€€./configure --host=arm-xilinx-linux-gnueabi --prefix=/home/wave/xilinx/oprofileprj/rootfs --with-kernel-support --with-binutils=/home/wave/xilinx/oprofileprj/rootfs && make && make install

       ã€€ã€€é…ç½®è¿‡ç¨‹ç»“束后可能会有以下提示,因为没有打算用GUI和profile JITed code,所以直接忽视之。

       ã€€ã€€config.status: executing libtool commands

       ã€€ã€€Warning: QT version 3 was requested but not found. No GUI will be built.

       ã€€ã€€Warning: The user account 'oprofile:oprofile' does not exist on the system.

       ã€€ã€€To profile JITed code, this special user account must exist.

       ã€€ã€€Please ask your system administrator to add the following user and group:

       ã€€ã€€user name : 'oprofile'

       ã€€ã€€group name: 'oprofile'

       ã€€ã€€The 'oprofile' group must be the default group for the 'oprofile' user.

       ã€€ã€€

       ã€€ã€€å°†ç¼–译完成的uImage,vmlinux,oprofile binary,重新编译的没有-pg的libjpeg binary以及tool chain的libc打包放到SD卡中,准备在ZC开发板上尝试profile djpeg。

       ã€€ã€€

       ã€€ã€€ä¸‰. 运行Oprofile

       ã€€ã€€

       ã€€ã€€æ­£å¸¸å¯åŠ¨åµŒå…¥å¼Linux后,在开发板的console上一次输入以下命令:

       ã€€ã€€

       ã€€ã€€mount /dev/mmcblk0p1 /mnt

       ã€€ã€€

       ã€€ã€€mkdir -p /home/root/work

       ã€€ã€€cd /home/root/work

       ã€€ã€€tar zxvf /mnt/jpeg-bin-nopg.tar.gz

       ã€€ã€€cd jpeg-bin/bin

       ã€€ã€€cp /mnt/park-x.jpg .

       ã€€ã€€export LD_LIBRARY_PATH=/home/root/work/jpeg-bin/lib

       ã€€ã€€

       ã€€ã€€cd /home/root/work

       ã€€ã€€tar zxvf /mnt/rootfs.tar.gz

       ã€€ã€€cd rootfs

       ã€€ã€€chown root:root -R

*

       ã€€ã€€cp -R bin/* /usr/bin

       ã€€ã€€cp -R lib/* /lib

       ã€€ã€€cp /bin/which /usr/bin

       ã€€ã€€cp /bin/dirname /usr/bin

       ã€€ã€€mkdir -p /home/wave/xilinx/oprofileprj/rootfs/share

       ã€€ã€€cp -R ./rootfs/* /home/wave/xilinx/oprofileprj/rootfs

       ã€€ã€€

       ã€€ã€€cd /home/root/work

       ã€€ã€€tar zxvf /mnt/libc.tar.gz

       ã€€ã€€cp ./lib/libstdc*.* /lib

       ã€€ã€€

       ã€€ã€€mkdir -p /home/wave/xilinx/libjpeg

       ã€€ã€€cd /home/wave/xilinx/libjpeg

       ã€€ã€€tar zxvf /mnt/jpeg-9.tar.gz

       ã€€ã€€

       ã€€ã€€cp /mnt/vmlinux /home/root/work

       ã€€ã€€

       ã€€ã€€cd /home/root/work/jpeg-bin/bin

       ã€€ã€€

       ã€€ã€€opcontrol --init

       ã€€ã€€opcontrol --vmlinux=/home/root/work/vmlinux

       ã€€ã€€opcontrol --setup --event=CPU_CYCLES:::0:1 --session-dir=/home/root/

       ã€€ã€€

       ã€€ã€€operf --vmlinux /home/root/work/vmlinux ./djpeg -bmp park-x.jpg > result.bmp

       ã€€ã€€opreport -l ./djpeg

       ã€€ã€€

       ã€€ã€€å®Œæˆè¿™ä¸€æ­¥åŽï¼Œæˆ‘们就可以看到profiling的结果了,在笔者的平台上看到的内容的主要部分如下:

       ã€€ã€€root@zynq:~/work/jpeg-bin/bin# opreport -l ./djpeg

       ã€€ã€€Using /home/root/work/jpeg-bin/bin/oprofile_data/samples/ for samples directory.

       ã€€ã€€CPU: ARM Cortex-A9, speed MHz (estimated)

       ã€€ã€€Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x (No unit mask) count

       ã€€ã€€samples % image name symbol name

       ã€€ã€€ . libc-2..so /lib/libc-2..so

       ã€€ã€€