搜档网
当前位置:搜档网 › Linux出错提示信息详解

Linux出错提示信息详解

Linux出错提示信息详解
Linux出错提示信息详解

Linux出错提示信息详解

深入地讲:许多人害怕Linux,因为它给出的出错提示信息简直像天书一样。并且这样的信息有很多。如果你在Linux Format(译者注:这是一家英国销售量最好的Linux杂志)的论坛上搜索“Error”这个词,你将会得到超过150页的内容。那些是许多人遇到的许多问题。

用户们遇到的最大的困难并非出错提示信息的数量,而是如何从中找出有用的东西。例如,“

Kernel Oops”是什么意思,或者“PCI can't allocate”是什么意思?Linux的出错提示相当愚钝且很难理解,几乎起不了什么帮助。这是一个遗憾,因为大绝大多数问题本可以很容易的解决,而且有相当数量的涉及同样问题的出错提示一次又一次的出现。用商业圈里的话来说,这是最能获得立竿见影效果的部分(译者:不知些句如此翻译妥当否?请指教)。我们要解决的正是这一部分问题。

启动你的系统不需要你成为一个Linux专家,播放视频文件也无需成为程序员。然而大部分出错信息都假定他们的用户已掌握了此类专门技术。我们试图阐明这些常见错误,并提供解决方案,以帮助普通的Linux用户规避这些问题,并使他们的系统回到正常状态。我们挑选了一些我们认为问题最多的领域,包括启动、常规软件应用、文件系统、网络和发行版的安装。

我们从每个领域中挑选了几个最常见的错误,并解释了相应的解决方案是如何起作用的。这样做的目的是,即使这些问题不适合你的情况,你也能了解为什么Linux的出错提示信息看上去如此的难以捉摸并令人生畏。希望你能从中学会找到解决自己问题所需知识的方法。

发行版的安装

每一种Linux发行版都有不同的安装例程,并且都会制造一些问题。Ubuntu也许在一台电脑上工作良好而另外一台则不行。一台安装了Ubuntu并运行正常的电脑也许根本无法安装Fedora,OpenSUSE, Linux Mint, 或者Mandriva...

ERROR Can't boot from CD/DVD(无法从光盘启动)

如何你刚开始接触Linux,下述情况通常会是你对该操作系统的第一体验:你将你的新光盘放入光驱并重启电脑,结果发现却是进入了你先前使用的操作系统。问题在于你硬盘的启动优先级高于光驱。许多现代的BIOS包含了一个启动菜单,在这里你可以动态地修改设备的启动优先级。当屏幕上第一次出现东西的时候,试着按下Escape键或F12键,你只需在那里选择从光驱启动。

老一点的电脑可能没有这样的方便。你需要在开机时按F12或者Del键进入系统的BIOS菜单,从那儿更改启动顺序。通常你可以在“Boot”菜单下找到相关选项,你需要保存这些更改以便能够从光驱启动。如果你需要从外接驱动器或U盘启动,可以执行相同的步骤。如果你在网吧或者面对一台公司的电脑,上述内容同样有用。

有时你可能需要更改设备的启动优先级以便能够从光驱启动一个live版的Linxu发行版。

ERROR PCI: cannot allocate(无法指派)

这样的错误有许多,他们主要在启动系统时出现。他们有一个共同的起因:错误的电源管理行为。罪魁祸首是一个叫做ACPI的东西,即高级配置与电源接口。尽管他是一种电源管理标准,但在十几年的时间里他已经引起了无数问题。麻烦在于硬件驱动总是不完全执行这个协议规范。

当你打开电脑的时候,或者将电脑从睡眠状态唤醒的时候,你的电源管理便开始起作用,每到此时某些设备就会出问题。通过Live CD进行的安装加剧了些问题,因为他们启动时不提供严格侦测硬件匹配的额外功能,也无法包含所有设备的驱动,这就是为什么通过Live CD进行安装后常会出现此问题。

你能做的只有一件事——关闭ACPI。有时你可以通过系统的BIOS菜单来关闭此功能,如果不能关闭的话,你需要在启动时禁用ACPI。启动时按下Escape键,进入Grub菜单,选择你通常用的那个项。向下翻到从内核启动的那一行,按下E键编辑该行。在此行末尾加上acpi=off noapic,按回车及B键进行启动。你会发现你的电脑顺便启动,如果你以后再安装Linux,你选择的发行版应该能够更好的在安装时选择正确的驱动。

Booting problems(启动出错)

没有什么比一条中止你系统启动的信息更糟糕的了——主要是因为你现在还没有解决主要问题的工具(译者注:我怎么觉得这句如此翻译有些跟前后文不照?请各位指教)。然而启动时出错相当常见。因为我们都喜欢安装发行版,并且我们经常在一台电脑上安装不止不种发行版,还和Windows共享一块硬盘。任何这样的安装都能扰乱启动指令(译者注:boot routine该如何翻?),将一个进行良好的系统回复原状并不是那么容易的。

ERROR Grub...

如果你在打开电脑时看见了这条信息,说明Grub 的启动菜单损坏了。这是你安装的Linux的中负责启动操作系统的部分。你唯一能做的就是从其他媒介启动Linux,最好是Live CD。进入桌面后,打开一个命令行终端,切换到管理员账户,键入grub。以下步骤在你的Grub菜单项不再指向你的Linux分区的情况下也能起作用。

键入find /boot/grub/stage1,此命令的作用是搜寻初始启动驱动器的位置,他将会返回包含(hd0, 0)字样的几行输出——这是Grub用来表示硬盘驱动器位置的语法规则,返回什取决于你自己的安装,所以不要以为他就是(hd0,0)。现在键入root (hd0,0) (或者是你自己得到的返回值),以告诉Gru b该从哪个分区启动,然后键入setup (hd0)以在你的硬盘主引导记录重新安装引导程序。然后重启电脑,他应该已经能正常启动了。

知道如何在你的主硬盘安装Grub启动引导程序将会摆脱各种难缠的问题。

ERROR Out of range, ERROR Fatal server error: no screens found(超出范围错误,服务器致命错误:无法找到屏幕)

当你的屏幕预设值跟你的显示器不兼容时就会出现此错误。按下Ctrl+Alt+F1进入控制台模式,以r oot身份登录(或者用你在ubuntu中的普通账户使用sudo命令)。基于Debian发行版的用户可以键入

命令dpkg-reconfigure xserver-xorg来重新配置你的屏幕。

其他用户将不得不按以下步骤手动修复他们的设置。首先,键入cd /etc/X11,然后是cp xorg.con f xorg.lxf,以便备份你的设置文件。现在用一款你用着最顺手的命令行编辑器打开此文件。如果你不确定的话就键入nano xorg.conf。如果你知道你显示屏的规格,将此配置文件向下翻找到“Section Monitor”项,现在你需要手动设定水平和垂直刷新率。

如果你不知道你屏幕的分辨率,继续向下翻直到找到Screen section项。你需要删除此处所有的高分辨率,因为我们在寻找最小公分母(我们建议删除任何高于1024x768的分辨率)。在你的屏幕恢复正常后你可以重新从桌面增加其分辨率。如何这些方法都不起作用,那么最后的保护性选项就是将你的设备调整为“vesa”模式,完全避开你的显卡驱动。

ERROR Kernel panic!

Kernel panic或者Kernel oops!错误信息是我们Linux用户所遇到的最接近那个经常困扰Win dows用户的蓝屏死机的故障了。和Windows一样,当这种情况出现时你除了关掉电源开关外别无他法。内核处于你的Linux系统的心脏部位,内核崩溃通常是由于硬件动作异常而导致内核强制进入系统内存的未知区域。

最好的解决办法是升级内核,因为硬件的问题可能已经在新版本中得到修正。但是你可能需要从启动菜单退回到一个早期版本的内核以便能够使用Linux,然后进行升级。

另外一种选择是确定出问题的硬件。如何你刚刚更改过你的硬件或者安装了新的驱动器,这可能就是问题所在。否则,你可能不得不采取逐个移除硬件的方法来测试你的电脑是否能够正常启动。尽管内核崩溃会给出大量信息,普通用户通常只能理解其中的极少数,因为原来的错误已将系统推向一种无法预知的状态。

ERROR Incorrect username or password(用户名或密码错误)

你会吃惊于竟有如此多的用户给我们打来电话说他们忘记了自己的密码,或者更糟,他们从来没有被

要求输入密码。(译者注:此句感觉翻译地不太顺,promise此处何解?请指教)。幸运的是,密码并非永远丢失了。你需要启动你的电脑到单用户模式或者修复模式。为达此目的,只需启动后在电脑离开BIOS界面时按下Escape键,就会显示Grub启动菜单。

如果没有进行单用户模式或者修复模式的选项,那就选择通常启动的那一项(通过位于菜单的顶部),按E键编辑启动参数。移动到以kernel字样开关的那一行,然后再次按E键编辑那一行的文本。确定指针处于行尾,增加以下参数rw init=/bin/bash。按回车,然后按B键启动。我们刚刚改变了默认的启动选项来打开一个Bash终端而非通常启动的会话。

至于安全和修复模式,你要做的就是键入你要改变密码的用户名和新密码。如果没有用户名,passwd 命令将会改变root的密码。现在重启你的电脑就可以使用你的新密码了。

如果你能够跟一台电脑有物理接触,那么就能通过启动后进入修复模式的方法轻松改变任何用户的密码。(译者注:据本人的经验,如果root用户原来就设有密码,那么在进入recover mode的时候,会首先要求你输入root密码,故上述方法只适用于root原来没有密码的情况。而通过开机改启动参数的方法

则不受此限制,连root密码也可以改掉)

文件系统

文件系统是你安装的Linux内核的一部分,其负责对包括外部设备上的文件的读写。此部分通常是很健壮的,但突然断电或行为异常煌硬件有时也会引起一些问题。关于你的文件系统的任何问题通常解决起来都比较复杂。所以,我们列出的解决方案都是用命令行。

ERROR Run fsck manually(手动运行fsck)

基本的文件系统错误就有数十个不同的种类。这些错误通常在启动电脑是出现,并经常导致出现对根分区的“只读”警告。这意味着如果你的电脑能够启动,你将不能做任何事。解决方法是从Live CD启动,这保证了你损坏的驱动器不被启动程序触及以使文件系统修复工具能够进行必要的修改来修复问题。

你需要运行的命令是fsck -f /dev/drive,但是你需要用你自己的根分区的设备替换掉命令中的“dri ve”。这取决于你的安装。例如,主驱动器上的第一个分区是sda1。初始的错误提示中应该会包含此信息。你需要以管理员身份运行fsck,这意味着Ubuntu用户需要用Ubuntu Live CD创建一个用户,只需先后键入以下两条命令sudo passwd root,sudo bash。

ERROR Device is busy(设备忙)

我们许多人使用外接硬盘和U盘,但有时这些设备拒绝从文件系统卸载自己。你不能只简单地将其拔下,因为这样你可能会丢失本地缓存中尚未写入该设备的数据。你可以通过在命令行键入sync解决此问题,这将迫使任何缓存的数据立刻写入该设备,但这仍不能解决无法载载的问题。

要解决无法载载的问题,你需要用到一个叫做lsof的命令,该命令需要单独安装。键入“lsof 挂载点”能够列出当前正在访问设备上文件的进程,你需要杀死这些进程之后才能卸下该驱动器。

知道这个技巧将会使无法卸载CD或者DVD的情况变得很容易处理,因为所用到的技术是一样的(只

是不涉及sync的问题,因为他们是只读设备)。这里有一个例子:

> umount /mnt/contentumount: /mnt/content: device is busy> lsof /mnt/contentCO MMAND PID USER FD TYPE DEVICE SIZE NODE NAMEsmbd 23222 root cwd DIR 8,33 4 096 2 /mnt/content> kill -9 23222> umount /mnt/content

Networking(网络)

极少有人乐于检测并修复网络问题。但在我们有有线世界,这些问题是无法避免的。幸运的是,有少数几个错误占据了这些问题的很大一部分比例,我们已经替你把他们解决了。

ERROR Server not found(找不到服务器)

这是经典的网络错误。你打开了电脑,等系统启动,点开了指向你最喜欢的网页的链接。然而他并没有打开,而且出现了“服务器错误”的信息。这个问题是无法接入互联网,有许多可能的原因。解决此问题的最好办法从主要连接开始查起。你的路由器连接电源了吗?你的宽带连接在你的路由器上工作吗?

如果你在使用无线网,显然你需要检查一下你装有Linux的机器上的无线连接。如果你在用有线的以太网,你需要检查一下看电缆周围的两个LED指示灯是不是都亮了。橘黄色LED灯亮表示有连接,而绿色的LED指示灯随着网络动作而闪烁。

如果这些都没有问题,那说明问题出在你的Linux系统中。如果你已经检查过你的发行版的网络设置面板,并且看上去一切正常,你就需要尝试一系统命令行工具了。ifconfig命令产生许多输出,但这是确保你的网络连接已被分配IP的最快捷的方法。如果是有线连接就查找eth0,如果是无线连接就查找ath 0或者wlan0,确保你的网路有正确的网络地址。

如果上述方法不起作用,那么试试先后输入以下命令:ifconfig eth0 down,然后是ifconfig eth0 up。也许你还想试试route命令以确定只有一个确定的网关地址。如果你找到两个,键入"route del 网关地址"以删除一个。

此类出错提示信息上可能是由数不清的问题导致。

ERROR MSN won't connect(MSN无法连接)

这跟你用的messenger客户端没有关系——Pidgin, Kopete, KMess 和AMSN 有时都会连不上服务器。此类问题通常可归结为服务器协议的改变,这意味着每个客户端都需要升级。但也可能是由你的本地连接引起的。MSN对防火墙和端口转发非常敏感。解决办法是使用HTTP,通常这是你账户窗口中的一个选项。鉴于HTTP是网络传输的通用协议,你不应该再在连接方面有什么困难。

如果MSN的连接选项不起作用,那么就在用户设置页面转换成HTTP。

Software(软件)

这是我们使用Linux时都感到沮丧的一个方面。OS X和Windows用户经常会惊奇的发现Linux用户甚至无法从因特网上下载一个软件包,之后双击该包并毫无阻碍的完成应用程序的安装。他们能只需下载一个文件并运行之便能轻松获得最新版的如Gimp, Inkscape a和https://www.sodocs.net/doc/7616325984.html,这样的应用程序。Linux用户可没有这样的好运,且此问题又因多数发行版使用不同的软件安装方法而进一步恶化。

ERROR Permission denied(权限不足)

这个错误是由系统安全设置引起的,当从命令行执行程序或编辑某些文件时常会出现。Linux锁定了

某些文件和目录,这样即使帐户被盗(译者注:compromise些处何解?请指教),该用户也无法运行系统的关键程序。这样的机制在Linux服务器或者那种有着数百用户的Linux框架中显得更加有用。尽管他在单用户系统中也很重要,但即使你避开这些预防措施以给自己足够的权限进行或打开某些关键文件,这也没什么错。

你可以在桌面或命令行来达到此目的,但你需要使用系统管理员账户以便能够改变所需要权限。在命令行,可以输入sudo bash命令来进入管理员账户,如果是非Debian用户,则只需输入su 即可。你可以用"chown 用户名文件名"来改变文件的所有权,加上-R 参数将会递归改变该文件夹下所有文件的所有权。但这帮不了你电脑上其他用户的忙,因为他们仍将面对权限问题。

答案是改变文件的可执行权限。可以用chmod命令来改变权限。键入"chmod +x 文件名" 以便给你电脑上的每个用户增加对该文件的可执行权限。类似的,"chmod +rw 文件名"将会授予所有用户对该文件的读写权限。

ERROR Downloads won't run!(不能下载)

数个月前,我们在我们发行的DVD里包含了Runes of Avalon 2(译者注:阿瓦隆神符2,一款益智类消除游戏)试用版。他被封装在一个tar.gz文件中。我们中的大多数人甚至不会注意到这个游戏,因为我们已经被Linux的古怪弄得麻木了。但我们还是接到了几个新Linux用户(这些正是我们需要努力争取的人)的电话,询问为什么那个tar.gz文件无法运行。当然,答案是.tar.gz文件是一个归档文件。我们解释说它就像是一个zip文件,需要解压到一个文件夹才能运行那个试用版游戏。

你可以在桌面上右击该文件选择解压,或者在命令行键入“tar xvf 文件名.tar.gz”,但新手根本没必要知道命令行的方法。然后你需要找到一个.bin或者.sh文件,双击该文件以运行此游戏。如果你运气不好,你可能需要在命令行进入刚才创建的文件夹并键入./install.sh进行安装。我们代表世界各地的Linux拥

护者对此不便之处表示歉意。

除非你以Linux比较熟悉,否则运行试用版软件和下载不会像在其他操作系统中那样顺畅。

ERROR Flash movies don't move(Flash影片无法播放)

真同情那些刚接触Linux的用户,他们启动了新安装的系统,却发现自己无法在YouTube度过当天的时间。是的,极少有Linux发行版默认支持Flash回放功能的。更糟糕的是,你的浏览器不可的乐观的宣称只需点几下鼠标就可以完成Flash的安装,而这通常都是在说谎。然而,这里有一个很保险的方法来获得Flash回放支持。

在Google搜索“adobe flash download”,点击第一个靠前的链接。在新页面中“vers ion to downl oad”的下拉菜单中,选择“tar.gz for linux”并点击用户协议。该文件会被保存,你需要记住浏览器把文件存在什么地方了。接着,打开一个命令行终端,键入cd+空格+你下载的文件的路径(通常是你主文件

夹中的~/Desktop)。

进入那个文件夹之后,键入tar xvf install_flash* 解压缩下载的文件,cd 进入此新文件夹。现在你需要键入./flashplayer-installer来执行安装程序,并注意屏幕上的提示符(译者注:即闪动的光标)。稍后浏览器会重启,你已得到了一个工作正常的Adobe Flash。

即使你的发行版不包含Adobe Flash支持,安装一个支持程序也就是两分钟的事。

linux C用户态调试追踪函数调用堆栈以及定位段错误

linux C用户态调试追踪函数调用堆栈以及定位段错误 一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。 在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈。 int backtrace(void **buffer,int size) 该函数用于获取当前线程的调用堆栈,获取的信息将会被存放在buffer中,它是一个指针列表。参数size 用来指定buffer中可以保存多少个void* 元素。函数返回值是实际获取的指针个数,最大不超过size大小 在buffer中的指针实际是从堆栈中获取的返回地址,每一个堆栈框架有一个返回地址 注意:某些编译器的优化选项对获取正确的调用堆栈有干扰,另外内联函数没有堆栈框架;删除框架指针也会导致无法正确解析堆栈内容 char ** backtrace_symbols (void *const *buffer, int size) backtrace_symbols将从backtrace函数获取的信息转化为一个字符串数组. 参数buffer应该是从backtrace函数获取的指针数组,size是该数组中的元素个数(backtrace的返回值) 函数返回值是一个指向字符串数组的指针,它的大小同buffer相同.每个字符串包含了一个相对于buffer中对应元素的可打印信息.它包括函数名,函数的偏移地址,和实际的返回地址 现在,只有使用ELF二进制格式的程序才能获取函数名称和偏移地址.在其他系统,只有16进制的返回地址能被获取.另外,你可能需要传递相应的符号给链接器,以能支持函数名功能(比如,在使用GNU ld链接器的系统中,你需要传递(-rdynamic),-rdynamic可用来通知链接器将所有符号添加到动态符号表中,如果你的链接器支持-rdynamic的话,建议将其加上!) 该函数的返回值是通过malloc函数申请的空间,因此调用者必须使用free函数来释放指针. 注意:如果不能为字符串获取足够的空间函数的返回值将会为NULL void backtrace_symbols_fd (void *const *buffer, int size, int fd)

启动过程错误提示信息解决办法

启动过程错误提示信息解决办法 制作了根文件系统,在启动之后停在这里了: NET: Registered protocol family 1 NET: Registered protocol family 17 VFS: Mounted root (cramfs filesystem) readonly. Freeing init memory: 116K Failed to execute /linuxrc. Attempting defaults... Kernel panic - not syncing: No init found. Try passing init= option to kernel. 我内核boot option里面的命令行设置为:noitinrd root=/dev/mtdblock2 rootfstype=cramfs console=ttySAC0,115200 init=/linurc mem=64M 这类问题很常见,先总体介绍一下解决思路。 能出现让人激动的的控制台,那么系统移植已经接近完成;但是不少人在最后一步出现问题。 要点如下: 1. 在正确的位置烧写正确格式的文件系统映象: 2. 内核支持这种文件系统格式 3. 文件系统的内容要完备 上面说得简单,一个个介绍。 1. 在正确的位置烧写正确的文件系统映象: (a). 正确的位置 嵌入式开发中,常通过bootloader烧写文件系统映象,假设写在flash的地址A处。 内核启动时,显然要从地址A处读取文件系统,内核是怎么知道的呢?通过命令行参数,比如“root=/dev/mtdblock2 ”。/dev/mtdblock2 又是怎么和地址A 对应上的呢?内核将flash划分为 几个分区,这是在代码中固定的。/dev/mtdblock2是第3个分区,它的开始地址必须是A。 在内核启动时,可以看到这些分区的开始地址、结束地址,比如内核启动时会有类似下面的信息: Creating 3 MTD partitions on "NAND 64MiB 3,3V 8-bit": 0x00000000-0x00030000 : "bootloader" 0x00050000-0x00250000 : "kernel" 0x00250000-0x03ffc000 : "root" 对于上面的内核信息,/dev/mtdblock2对应root分区,开始地址为0x00250000,使用bootloader写文件系统映象时,烧写的地址必须是0x00250000 所以,要保证3点: ① bootloader烧到地址A, ② 地址A是内核某个分区的开始地址, ③ 命令行参数“root=/dev/mtdblockXXX ”是这个分区 (b). 正确格式的文件系统映象 不同的bootloader支持的烧写的文件系统映象格式不同、使用的烧写命令也可能不同,请注意这点。

Linux日志管理篇

Linux日志管理篇 操作系统的日志主要具有审计与监测的功能,通过对日志信息的分析,可以检查错误发生的原因,监测追踪入侵者及受到攻击时留下的痕迹,甚至还能实时的进行系统状态的监控。有效利用日志信息并对其进行分析与实时的监控管理,对于系统的安全性具有极为重要的作用。 对于日志信息的管理通常采用两种方法,一种方法是不同服务器的日志信息都存放在各自系统内,系统管理员对各服务器进行分散管理。另一种方法则是使用日志主机系统,这是一个从其他主机收集日志,并将它们存放在同一个地方的系统,很容易使来自多个主机的日志条目关联起来,对其进行统一管理、分析,甚至配合自动化工具进行实时的监控,有效提高管理的效率。 第一种方法往往是大多数系统管理员的常用的方法,这种传统的管理方法在服务器数量较少时还能勉强应付,但在处理多主机状况时却并非一种有效的方法。本文主要讲述二种日志管理方法,探寻一种提高系统管理效率的途径。 一、日志主机系统的部署 日志主机系统包括日志主机及各主机系统两个部分,其中日志主机相当于服务器端,而各主机系统相当于客户端,将日志信息实时的传送到日志主机上来。 1.Linux系统中系统日志服务器的安装 对管理员来说,日志非常有用,但大量的日志又很麻烦。当一些事件运行错误时,日志可以对故障排除起到至关重要的作用,特别是在安全性相关问题上。但是如果攻击者危害到你的主机,日志将会告诉你,对于主机来说这很有用;你需要给数据中心发信息。保护日志非常重要,一个中央日志服务器会更容易管理、分析和查找它们。针对这一点,我将向你展示如何把多个主机的系统日志集中收集到一个主机上来管理,即Linux上的中央系统日志服务器。 首先,所有集中的系统日志服务器都应该建成一个安全和硬化的主机。在主机上没有一点关于保护和集中化你们日志方面。其次,你怎样能从你的主机上获得日志呢? 让我们开始安装中央系统日志服务器。我将举例说明如果使用rSyslog,实际的标准Linux系统日志。Ubuntu和红帽常使用它,并且通过文件/etc/rsyslog.conf进行管理。文件中包含许多指定的特殊系统日志:有的是控制台方面的,有的是文件方面或其它主机的。 首先,我们需要载入合适的TCP和UDP插件以支持接收系统日志。把下面的代码添加到rsyslog.conf的头部: $modload imtcp

linux错误码大全

linux错误码大全 查看错误代码errno是调试程序的一个重要方法。当linuc C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。在实际编程中用这一招解决了不少原本看来莫名其妙的问题。比较麻烦的是每次都要去linux源代码里面查找错误代码的含义,现在把它贴出来,以后需要查时就来这里看了。 1-34号错误号是在内核源码的include/asm-generic/errno-base.h定义 35-132则是在include/asm-generic/errno.h中定义 剩下还有一些更大的错误号是留给内核级别的,如系统调用等,用户程序一般是看不见的这些号的,Ubuntu9.10中 /usr/src/linux-headers-2.6.31-21-generic/include/linux/errno.h #ifndef _ASM_GENERIC_ERRNO_BASE_H #define _ASM_GENERIC_ERRNO_BASE_H #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #define ESRCH 3 /* No such process */ #define EINTR 4 /* Interrupted system call */ #define EIO 5 /* I/O error */ #define ENXIO 6 /* No such device or address */ #define E2BIG 7 /* Argument list too long */ #define ENOEXEC 8 /* Exec format error */ #define EBADF 9 /* Bad file number */ #define ECHILD 10 /* No child processes */ #define EAGAIN 11 /* Try again */ #define ENOMEM 12 /* Out of memory */ #define EACCES 13 /* Permission denied */ #define EFAULT 14 /* Bad address */ #define ENOTBLK 15 /* Block device required */ #define EBUSY 16 /* Device or resource busy */ #define EEXIST 17 /* File exists */ #define EXDEV 18 /* Cross-device link */ #define ENODEV 19 /* No such device */

电脑开机时各种故障的英文提示

电脑开机时各种故障的英文提示 1.CMOS battery failed 中文:CMOS电池失效。 解释:这说明CMOS电池已经快没电了,只要更换新的电池即可。 2.CMOS check sum error-Defaults loaded 中文:CMOS执行全部检查时发现错误,要载入系统预设值。 解释:一般来说出现这句话都是说电池快没电了,可以先换个电池试试,如果问题还是没有解决,那么说明CMOS RAM可能有问题,如果没过一年就到经销商处换一块主板,过了一年就让经销商送回生产厂家修一下吧! l m+~l 3.Press ESC to skip memory test 中文:正在进行内存检查,可按ESC键跳过。 解释:这是因为在CMOS内没有设定跳过存储器的第二、三、四次测试,开机就会执行四次内存测试,当然你也可以按ESC键结束内存检查,不过每次都要这样太麻烦了,你可以进入COMS设置后选择BIOS FEATURS SETUP,将其中的Quick Power On Self Test设为Enabled,储存后重新启动即可。 4.Keyboard error or no keyboard present 中文:键盘错误或者未接键盘。 解释:检查一下键盘的连线是否松动或者损坏。 5.Hard disk install failure 中文:硬盘安装失败。 解释:这是因为硬盘的电源线或数据线可能未接好或者硬盘跳线设置不当。你可以检查一下硬盘的各根连线是否插好,看看同一根数据线上的两个硬盘的跳线的设置是否一样,如果一样,只要将两个硬盘的跳线设置的不一样即可(一个设为Master,另一个设为Slave)。 6.Secondary slave hard fail 中文:检测从盘失败 解释:可能是CMOS设置不当,比如说没有从盘但在CMOS里设为有从盘,那么就会出现错误,这时可以进入COMS设置选择IDE HDD AUTO DETECTION进行硬盘自动侦测。也可能是硬盘的电源线、数据线可能未接好或者硬盘跳线设置不当,解决方法参照第5条。 7.Floppy Disk(s) fail或Floppy Disk(s) fail(80)或Floppy Disk(s) fail(40) 中文:无法驱动软盘驱动器。

c语言段错误小结

C段错误总结 C语言2009-02-17 11:49:51 阅读21 评论0 字号:大中小订阅 最近一段时间在linux下用C做一些学习和开发,但是由于经验不足,问题多多。而段错误就是让我非常头痛的一个问题。不过,目前写几百行的代码,也很少出现段错误,或者是即使出现了,也很容易找出来,并且处理掉。 那什么是段错误?段错误为什么是个麻烦事?以及怎么发现程序中的段错误以及如何避免发生段错误呢? 一方面为了给自己的学习做个总结,另一方面由于至今没有找到一个比较全面介绍这个虽然是“FREQUENTLY ASKED QUESTIONS”的问题,所以我来做个抛砖引玉吧。下面就从上面的几个问题出发来探讨一下“Segmentation faults"吧。 目录 1。什么是段错误? 2。为什么段错误这么“麻烦”? 3。编程中通常碰到段错误的地方有哪些? 4。如何发现程序中的段错误并处理掉? 正文 1。什么是段错误? 下面是来自https://www.sodocs.net/doc/7616325984.html,的定义: A segmentation fault(often shortened to segfault) is a particular error condition that can occur during the operation of computer software. In short, a segmentation fault occurs when a program attempts to access a memory location that it is not allowed to access, or attempts to access a memory location in a way that is not allowed (e.g., attempts to write to a read-only location, or to overwrite part of the operating system). Systems based on processors like the Motorola 68000 tend to refer to these events as Address or Bus errors. Segmentation is one approach to memory management and protection in the operating system. It has been superseded by paging for most purposes, but much of the terminology of segmentation is still used, "segmentation fault" being an example. Some operating systems still have segmentation at some logical level although paging is used as the main memory management policy.

常见电脑开机错误提示信息

常见电脑开机错误提示信息 1、开机提示“CMOS battery failed”信息 提示信息的意思是CMOS电池没有电了,更换主板上的锂电池即可。 2、开机提示“CMOS checksum error-Defaults loaded”信息 这种情况发生的大部分原因都是因为电力供应造成的。如超频失败后CMOS放电可出现这种情况。应该立刻保存CMOS设置。如果再次出现这个问题,建议更换锂电池。在更换电池仍无用的情况下,则将主板送修,因为CMOS芯片可能已被损坏。 3、开机提示“Display switch is set incorrectly”信息。 一般来说,老主板上有一个跳线用来设置屏幕为单色或彩色。 出现此信息表示主板上的设置和BIOS设置不一致,所以只要判断主板和BIOS设置哪个是正确的,然后更改错误的设置即可。 4、开机提示“CMOS CRC Error”信息 该故障是由于在开机的POST自动检测过程中发现CMOS RAM校验和CRC错误。 排除该故障的方法如下: 1)重新启动电脑,在显示启动信息后按下Delete键进入BIOS设置,读取BIOS默认设置,设置完毕后按下F10键保存并退出BIOS设置。 2)再次启动电脑,系统正常运行,即排除故障。 提示:一般情况下,该故障并不影响系统的正常运行,重新设置CMOS参数后即可排除故障。 5、开机提示“HARD DISK initializing Please wait a moment”信息 这种信息只会出现在较老的硬盘上,主要是因为其速度较慢。换上速度较快的硬盘即可解决问题。 6、开机提示“Hard disk install”信息 检测任何与硬盘有关的硬件设置,包括电源线、数据线和硬盘的跳线设置。如果是新购买的大容量硬盘,也要检查主板是否支持。 如果上述都没有问题,那很可能是硬件出现问题,IDE口或者硬盘损坏,拿去送修。 7、开机提示“Primary master hard fail” “Primary slave hard fail” “Secondary master hard fail” 或“Secondary slavehard fail”信息 可能是BIOS设置不当,如没有从盘,但在BIOS设置里设为从盘,就会出现此错误。也可能是硬盘的电源线、数据线为接好或者硬盘跳线设置不当。 可进入BIOS设置“IDE HDD Auto Detection”项中对硬盘进行自动检测。 8、开机提示“Hard disk(s)diagno sis fail”信息

入侵Linux系统后日志文件及入侵后日志如何清除

Linux系统的LOG日志文件及入侵后日志的清除 UNIX网管员主要是靠系统的LOG,来获得入侵的痕迹.当然也有第三方工具记录入侵系统 的痕迹,UNIX系统存放LOG文件,普通位置如下: /usr/adm - 早期版本的UNIX /var/adm - 新一点的版本使用这个位置 /var/log - 一些版本的Solaris,linux BSD,Free BSD使用这个位置 /etc - 多数UNIX版本把utmp放在这里,有些也把wtmp放在这里,syslog.conf在这里 下面的一些文件根据你所在的目录不同而不同: acct 或pacct -- 记录每个用户使用的命令记录 access_log -- 主要当服务器运行NCSA HTTPD时, 记录什么站点连接过你的服务器aculog -- 保存着你拨出去的MODEMS记录 lastlog -- 记录了用户最近的LOGIN记录和每个用户的最初目的地,有时是最后不 成功LOGIN的记录,当一个用户登陆到unix系统,注册程序在lastlog文件中查找该用户的uid,如果该程序找到了 该用户的uid,unix就会显示最后一次登陆的时间和tty(终端号) loginlog -- 记录一些不正常的LOGIN记录 messages -- 记录输出到系统控制台的记录,另外的信息由syslog来生成 security -- 记录一些使用UUCP系统企图进入限制范围的事例 sulog -- 记录使用su命令的记录.它通常在/var/adm/sulog.如果你在机器上使用了su命令,别忘了清除哦. utmp -- 记录当前登录到系统中的所有用户,这个文件伴随着用户进入和离开系统而不断变化.它还会为系统中的用户保持很长的历史记录,utmp日志通常存放在/var/adm/utmp目录下.可以用w和who命令查看,其他命令也可以访问这个文件.如:finger root就可以.现在的utmp一般都有utmpx文件作为日志记录的补充. utmpx -- UTMP的扩展 wtmp -- 记录用户登录和退出事件.它和utmp日志文件相似,但它随着登陆次数的增加,它会变的越来越大,有些系统的ftp访问也在这个文件里记录,同时它也记录正常的系统退出时间,可以用ac和last命令访问. syslog -- 最重要的日志文件,使用syslogd守护程序来获得日志信息,通常情况下通过查看/etc/syslog.conf.我们可以知道syslog记录些什么.缺省时,它把大多的消息传给 /var/adm/message. /dev/log -- 一个UNIX域套接字,接受在本地机器上运行的进程所产生的消息

Linux服务器常用命令(简化版)

Linux服务器常用命令(简化版) 信息来源:网络整理:HY 日期:2011-5-27 Intel Fortran编译 Linux shell管道命令(pipe)使用及与shell重定向 Linux命令替换 Linux 任务控制(bg jobs fg nohup &) Linux进程查看 Linux账户管理 Linux系统与硬盘信息查询 Linux VIM语法高亮与程序段错误 Linux十大常用命令

Intel Fortran编译 完整编译顺序 $ ifort -c Hello.f90 -o Hello.o编译源文件(.f90)生成目标文件(.o) $ ifort Hello.o -o Hello链接目标文件生成可执行程序Hello $./Hello 执行可执行程序 默认(常用编译方法) $ ifort Hello.f90编译&链接 $./a.out 执行a.out(默认可执行程序名) 后台运行 $ ./a.out & 后台运行,退出shell会使程序停止,输出信息会显示在屏幕,不建议这样使用$nohup ./a.out & 输出到屏幕的信息输出到nohup.out文件 $nohup ./a.out > screen.txt & 输出到屏幕的信息输出到screen.txt文件(推荐) Linux shell管道命令(pipe)使用及与shell重定向 Ref:https://www.sodocs.net/doc/7616325984.html,/chengmo/archive/2010/10/21/1856577.html 重定向 详细解释参考:https://www.sodocs.net/doc/7616325984.html,/view/2173319.htm 在Linux命令行模式中,如果命令所需的输入不是来自键盘,而是来自指定的文件,这就是输入重定向。同理,命令的输出也可以不显示在屏幕上,而是写入到指定文件中,这就是输出重定向。 重定向分为: 重定向分为 输出重定向、输入重定向和错误重定向。 < 实现输入重定向。 >或>> 实现输出重定向,用户可以使用输出重定向把一个命令的输出重定向到一个文件 1)ls –l /etc>dir 将ls命令生成的/etc目录下的一个清单存到当前目录 中的dir文件,而不在屏幕输出。 2)ls –l /usr>>dir 将ls命令生成的/usr目录的一个清单以追加的方式存 到当前目录中的dir文件中。 重定向连接两个或多个文件? 使用cat命令并重定向输出到一个文件可以连接两个或多个文件。 重定向追加到一个文件:可以使用双重定向输出符号“>>”,保留文件以前的内容。 这种情况下,命令输出追加到另一个文件中。 重定向重定向标准输出到一个设备? 除了重定向一个命令的输出到一个文件,也可以把它重定向到一个设备,因为UNIX系统将设备当做文件。 $echo “Hello! I am petter!” > /dev/tty01 重定向标准输入? 使用“<”重定向输入。例如:用户已经创建好了一个文件letter。如果希望通过电子邮件发送给用户petter。可以使用下面方式:$mail petter < letter 重定向标准错误重定向? 没有专门的符号用于重定向stderr。我们可以同样使用“< ”或“>”符号,但需在它前面补一个数字2。 PS:重定向的优先级大于管道的优先级!^_^ 管道右边的命令只能对管道左边的命令的标准输出(输出到屏幕)起作用,不对错误输出(也输出到屏幕)起作用。 一个命令的执行首先决定0,1,2设备的定向,然后才执行命令,可以将定向理解为命令执行

浅析Linux下core文件

浅析Linux下core文件 当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里,方便程序员找到程序出现问题的地方。最常出现的,几乎所有C程序员都出现过的错误就是“段错误”了。也是最难查出问题原因的一个错误。下面我们就针对“段错误”来分析core文件的产生、以及我们如何利用core文件找到出现崩溃的地方。 何谓core文件 当一个程序崩溃时,在进程当前工作目录的core文件中复制了该进程的存储图像。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。 当程序接收到以下UNIX信号会产生core文件: 名字说明ANSI C POSIX.1SVR4 4.3+BSD 缺省动作 SIGABRT异常终止(abort) . . . .终止w/core SIGBUS硬件故障 . . .终止w/core SIGEMT硬件故障 . .终止w/core SIGFPE算术异常 . . . .终止w/core SIGILL非法硬件指令 . . . .终止w/core SIGIOT硬件故障 . .终止w/core SIGQUIT终端退出符 . . .终止w/core SIGSEGV无效存储访问 . . . .终止w/core SIGSYS无效系统调用 . .终止w/core SIGTRAP硬件故障 . .终止w/core SIGXCPU超过CPU限制 (setrlimit) . .终止w/core

SIGXFSZ超过文件长度限 . .终止w/core 制(setrlimit) 在系统默认动作列,“终止w/core”表示在进程当前工作目录的core文件中复制了该进程的存储图像(该文件名为core,由此可以看出这种功能很久之前就是UNIX功能的一部分)。大多数UNIX调试程序都使用core 文件以检查进程在终止时的状态。 core文件的产生不是POSIX.1所属部分,而是很多UNIX版本的实现特征。UNIX第6版没有检查条件(a)和(b),并且其源代码中包含如下说明:“如果你正在找寻保护信号,那么当设置-用户-ID命令执行时,将可能产生大量的这种信号”。4.3 + BSD产生名为core.prog的文件,其中prog是被执行的程序名的前1 6个字符。它对core文件给予了某种标识,所以是一种改进特征。 表中“硬件故障”对应于实现定义的硬件故障。这些名字中有很多取自UNIX早先在DP-11上的实现。请查看你所使用的系统的手册,以确切地确定这些信号对应于哪些错误类型。 下面比较详细地说明这些信号。 ? SIGABRT 调用abort函数时产生此信号。进程异常终止。 ? SIGBUS 指示一个实现定义的硬件故障。 ? SIGEMT 指示一个实现定义的硬件故障。 EMT这一名字来自PDP-11的emulator trap 指令。 ? SIGFPE 此信号表示一个算术运算异常,例如除以0,浮点溢出等。 ? SIGILL 此信号指示进程已执行一条非法硬件指令。 4.3BSD由abort函数产生此信号。SIGABRT现在被用于此。

电脑开机出错英文提示翻译解释

电脑开机出错英文提示翻译解释 1.bat command or file name 错误语法,命令错误。 2.data error 数据错误磁盘上有坏的区 3.deacre asing available memory 可以存贮器容量小,内存条安装不正确,内存坏,病毒。 4.diskette read failvre 软盘读取错误,软盘软驱没有接好 5.hard disk config wration error 硬盘配置不对,coms有错重新修改,硬盘数据线没有连好。 6.inavlid fconfig uratian information 无效的配置信息,coms中记录有系统信息不对。 7.no bat device available 无引导设备 8.no boot sectoron harddisk error 硬盘上无引导系统,引导扇区,病毒,参数不对 9.nonsystem diskor disk error 非系统盘或者硬盘错误,引导的磁盘不是系统盘或者磁盘有问题。 10.invalid disk drive 无效的磁盘驱动器,分区表坏,引导扇区坏,系统不正硬 11.no fised disk resent 硬盘不存在 12.keybard keypressed please hit bxpass 有无效有键请按F1跳过 https://www.sodocs.net/doc/7616325984.html,as parameters invalid coms芯片有中错误 14.missing operation system 操做系统丢失commandcom.sys 解决:用一个启动盘引导系统,用sys c: 传导或者copy到c: 15.bad or mission command interdre ter 命令解释程序错误或丢失 16.error llading oerating system 装入操作系统出错 https://www.sodocs.net/doc/7616325984.html,s bateery failed coms电池失效 https://www.sodocs.net/doc/7616325984.html,s eheck sun error-----dofavlts loaded coms检验错误 19.press esc to skiiip rnemory test 按ESC健跳过内存自检 20.hard disk lnstall railure 硬盘安装失败不正确,coms不正确

Linux系统调用详解之pdbedit

Name pdbedit ? manage the SAM database (Database of Samba Users) Synopsis pdbedit [?a] [?b passdb?backend] [?c account?control] [?C value] [?d debuglevel] [?D drive] [?e passdb?backend] [?f fullname] [??force?initialized?passwords] [?g] [?h homedir] [?i passdb?backend] [?I domain] [?K] [?L] [?m] [?M SID|RID] [?N description] [?P account?policy] [?p profile] [??policies?reset] [?r] [?s configfile] [?S script] [?t] [??time?format] [?u username] [?U SID|RID] [?v] [?V] [?w] [?x] [?y] [?z] [?Z] DESCRIPTION This tool is part of the samba(7) suite. The pdbedit program is used to manage the users accounts stored in the sam database and can only be run by root. The pdbedit tool uses the passdb modular interface and is independent from the kind of users database used (currently there are smbpasswd, ldap, nis+ and tdb based and more can be added without changing the tool). There are five main ways to use pdbedit: adding a user account, removing a user account, modifing a user account, listing user accounts, importing users accounts. OPTIONS ?L|??list This option lists all the user accounts present in the users database. This option prints a list of user/uid pairs separated by the ′:′ character. Example: pdbedit ?L sorce:500:Simo Sorce samba:45:Test User ?v|??verbose This option enables the verbose listing format. It causes pdbedit to list the users in the database, printing out the account fields in a descriptive format. Example: pdbedit ?L ?v

电脑启动错误提示信息解释大全

电脑启动错误提示信息解释大全 .CMOS battery failed CMOS电池失效。一般出现这种情况就是说明给主板CMOS供电的电池已经快没电了,需要朋友们及时更换主板电池。 CMOS check sum error-Defaults loaded CMOS执行全部检查时发现错误,要载入系统预设值。一般来说出现这句话有两种解释:一种是说主板CMOS供电电池快要没电了,朋友们可以先换个电池试试看;第二种解释是如果更换电池后问题还是没有解决,那么就说明CMOS RAM可能有问题了,如果主板没过一年的话就可以到经销商处换一块主板,要是过了一年就让经销商送回生产厂家修一下吧! Floppy Disk(s) fail 或 Floppy Disk(s) fail(80) 或Floppy Disk(s) fail(40) 无法驱动软盘驱动器。系统提示找不到软驱,首先要看看软驱的电源线和数据线有没

有松动或者是接反,最好是是把软驱放到另外一台机子上试一试,如果这些都不行,那么只好再买一个了,好在目前市场中的软驱还不算贵。 Hard disk install failure 硬盘安装失败。这是因为硬盘的电源线或数据线可能未接好或者硬盘跳线设置不当引 起的。朋友们可以检查一下硬盘的各根连线是否插好,看看同一根数据线上的两个硬盘的跳线设置是否一样。如果一样,只要将两个硬盘的跳线设置不一样即可(一个设为Master,另一个设为Slave)。 Hard disk(s) diagnosis fail 执行硬盘诊断时发生错误。出现这个问题一般就是硬盘内部本身出现硬件故障了,你可以把硬盘放到另一台机子上试一试,如果问题还是没有解决,只能去修一下了。如果硬盘还在包换期内的话,最好还是赶快去换一块! Hardware Monitor found an error,enter POWER MANAGEMENT SETUP for details,

去年Linux复习题(全)

1. Linux文件权限一共10位长度,分成四段,第三段表示的内容是( )。 A 文件类型 B 文件所有者的权限 C 文件所有者所在组的权限 D 其他用户的权限 2. 终止一个前台进程可能用到的命令和操作( )。 A kill B ctrl + C C shut down D halt 3.在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是( )。 A –m B -d C -f D –p 4. 一个文件名字为rr.Z,可以用来解压缩的命令是( )。 A tar B gzip C compress D uncompress 5. 下列提法中,不属于ifconfig命令作用范围的是( )。 A 配置本地回环地址 B 配置网卡的IP地址 C 激活网络适配器 D 加载网卡到内核中 6. 下列不是Linux系统进程类型的是( )。 A 交互进程 B 批处理进程 C 守护进程 D 就绪进程 7. 内核不包括的子系统是 ( )。 A 进程管理系统 B 内存管理系统 C I/O管理系统D硬件管理系统 8.若一台计算机的内存为128MB,则交换分区的大小通常是( )。 A 64M B B 128MB C 256MB D 512MB 10.在TCP/IP模型中,应用层包含了所有的高层协议,在下列的一些应用协议中,是能够实现本地与远程主机之间的文件传输工作( )。 A telnet B FTP C SNMP D NFS 11.对名为fido的文件用chmod 551 fido 进行了修改,则它的许可权是 ( )。 A -rwxr-xr-x B -rwxr--r— C -r--r--r— D -r-xr-x—x 12.用ls –al 命令列出下面的文件列表, ( )文件是符号连接文件。 A -rw-rw-rw- 2 hel-s users 56 Sep 09 11:05 hello B -rwxrwxrwx 2 hel-s users 56 Sep 09 11:05 goodbey C drwxr--r-- 1 hel users 1024 Sep 10 08:10 zhang D lrwxr--r-- 1 hel users 2024 Sep 12 08:12 cheng 13.NFS是系统( )。 A 文件 B 磁盘 C 网络文件 D 操作 14.Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在( ) 目录中。 A /bin B /etc C /dev D /lib 15.关闭linux系统(不重新启动)可使用命令( )。 A Ctrl+Alt+Del B halt C shutdown -r now D reboot 16.用命令ls -al显示出文件ff的描述如下所示,由此可知文件ff的类型为( ) 。 -rwxr-xr-- 1 root root 599 Cec 10 17:12 ff A 普通文件 B 硬链接 C 目录 D 符号链接 17.删除文件命令为:( ) 。 A mkdir B rmdir C mv D rm 18.对文件进行归档的命令为( ) 。 A dd B cpio C gzip D tar

开机错误提示及解决方法

开机错误提示及解决方法 在启动Windows 之前有字符提示的错误,属于非关键性的错误,它并不会导致整个硬件系统报废,屏幕有显示说明这台机器还有药可救。但是这是一类很严重的错误,如果不加以排除,系统往往不能正常启动。我们在下文简要地罗列出了比较常见的错误提示以及解决办法。 错误信息CH-2 Time ERROR 是主板时钟TIME #2发生错误时的出现的提示信息通常须更换主板 错误信息CMOS Battery State L0W 系统中有一个用于存放CMOS参数的电池该提示的意思是该电池已用完须更换 错误信息CMOS Checksum Failure CMOS参数被保存后会产生一个代码和该值是供错误检查时使用的若读出的值和该值不相等则会出现此错误信息改正此错误须运行BIOS设置程序 错误信息CMOS System options not set 存放在CMOS中的参数不存在或被破坏运行BIOS设置程序可改正此错误 错误信息CMOS Display type mismatch 存储在CMOS中的显示类型与BIOS检查出的显示类型不一致运行BIOS设置程序可改正这个错误 错误信息Display Switch Not proper 有些系统要求用户设置主板上的显示类型用户的设置与实际情况不符时出现此错误提示改正此错误必须先关机然后重新设置主板上显示类型的跳线 错误信息Keyboard error 键盘与CMOS中设置的键盘检测程序不兼容或POST自检时用户按住键时均会出现上面的错误请检查微机中是否安装了该CMOS中的键盘接口也可将BIOS设置程序中的KEYBOARK设置项设为NOT INSTALLED未安装这样BOIS设置程序将略过键盘的POST例程另外在POST自检时不要按住键盘 错误信息KB/Interface error BIOS 检查程序发现主板上的键盘接口出现了错误请接上键盘 错误信息CMOS Memory Size Mismatch 若BIOS发现主板上的内存大小与CMOS中存放的数值不同则产生此错误信息可运行BIOS设置程序改正该错误 错误信息FDD Controller Failure BIOS不能与软盘适配器进行通讯关机检查所有接口处如检查主板上的软盘控制器与软驱相

Linux下segment fault的调试

Linux下的段错误产生的原因及调试方法 简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在 对应的物理内存,尤其常见的是访问0地址. 一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是 由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的gdt表,后 13位保存相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运 行级别,指向的gdt是由以64位为一个单位的表,在这张表中就保存着程序运行的代码段 以及数据段的起始地址以及与此相应的段限和页面交换还有程序运行级别还有内存粒度等 等的信息。一旦一个程序发生了越界访问,cpu就会产生相应的异常保护,于是 segmentation fault就出现了. 在编程中以下几类做法容易导致段错误,基本是是错误地使用指针引起的 1)访问系统数据区,尤其是往系统保护的内存地址写数据 最常见就是给一个指针以0地址

2)内存越界(数组越界,变量类型不一致等)访问到不属于你的内存区域解决方法 我们在用C/C++语言写程序的时侯,内存管理的绝大部分工作都是需要我们来做的。实际 上,内存管理是一个比较繁琐的工作,无论你多高明,经验多丰富,难免会在此处犯些 小错误,而通常这些错误又是那么的浅显而易于消除。但是手工“除虫”(debug),往 往是效率低下且让人厌烦的,本文将就"段错误"这个内存访问越界的错误谈谈如何快速定 位这些"段错误"的语句。 下面将就以下的一个存在段错误的程序介绍几种调试方法: 1dummy_function(void) 2{ 3unsigned char*ptr=0x00; 4*ptr=0x00; 5} 6 7int main(void) 8{ 9dummy_function(); 10

相关主题