❶ 为什么程序会出现Bus Error
最近在论坛上看到一个程序员在询问Bus Error的问题。他有一个非常简单的测试程序,将一个short数组中第二个成员变量的地址附给一个int型的指针,接着给该指针赋值,大致代码如下:
short array[10];
int * p = (int *) &array[1];*p = 1;
运行的平台是Solaris for SPARC,使用的编译器是GCC,程序执行到指针赋值的时候的出现Bus Error出错信息,程序coremp。他觉得非常奇怪,代码在X86平台运行的很好。其实这个问题完全是由于CPU硬件不同所造成的。
Bus Error通常都是因为非对齐访问造成的。CPU在设计上为了性能上的考虑,要求待访问,操作的数据地址都要对齐。如果发现没有对齐的访问,就会向当前进程发出SIGBUS信号,使程序崩溃。RISC包括SPARC都是这种类型的芯片。而X86架构就没有这种对齐要求。所以这段代码在Solaris 10 for X86下面没有问题,当然这是有性能的代价。Bus Error也有可能是因为机器物理问题或者访问无效物理地址,但这种情况非常少见。
上面的代码正是这种非对齐访问造成的Bus Error。short是两个字节,其地址偏移量必是2的倍数。而对于int指针来说,需要偏移量地址是4的倍数的数据,所以直接用int指针来操作地址,就很有可能导致系统发出SIGBUS信号,程序崩溃。
这段程序如果用Sun Studio编译器的话,运行就没有问题。这是因为Sun Studio默认对32位编译使用的参数是-xmemalign=8i,其中i选项设置明确不会产生这种SIGBUS信号。不过如果编译成64位程序,Sun Studio使用的-xmemalign=8s,其中s选项设置意味对这种非对齐访问产生SIGBUS信号,仍旧会遇到这个错误。
当然你也可以坚持在SPARC上使用GCC去编译这种代码。GCC有一个Type Attributes特性,在需人工对齐的变量后加上:__attribute__ ((aligned (4))); 4就是指定偏移量。比如:
short array[10] __attribute__ ((aligned (4)));
不过这个属性只对Linker连接器可见的变量有效,也就是说对local variable无效。而且这种特性只能照顾到该数组,即第一个元素,并不为数组的每个成员设置偏移量。
如果一定要针对local variable或者数组的每个成员进行偏移量设置,可以考虑定义一个union的类型:union {short s;int i;}
❷ 最近我电脑老弹出ERROR
起因可能是下载来的文件不完整,或存放该程序的磁盘区坏了,也可能因病毒.无论何种原因,建议你联系程序的作者,重新下载,再安装.
或命令行中附加参数
/NCRC
试试安装.(不推荐此法).
NSIS
错误
你正使用的安装程序已经被破坏或不完整。
这可能是由于损坏的磁盘,或是下载失败,或是病毒导致的结果。你可以联系本安装程序的程序员来获取新的软件拷贝。
NSIS
是“Nullsoft
脚本安装系统”(Nullsoft
Scriptable
Installation
System)的缩写,它是一个免费的
Win32
安装、卸载系统,本来是一个由
Nullsoft
创建并用于作为
Winamp
及其插件发布的系统,但现已被上百个应用程序所应用。当使用到它的程序启动时发生错误,就会弹出该窗口,比如花生壳软件启动时出错错误,就有可能出现上述提示,此时请分析启动了哪些软件,检查并修复该程序,再重启,问题一般就能解决。
1.不使用任何加速的下载工具,再下载一次
2.升级你的杀毒软件,再下载一次
3.关掉你的杀毒软件实时监控,再下载一次
4.从另一个源(站点)重新下载,
5或者换一台计算机再重新下载
❸ 出现ERRORcode:-是啥原因啊
error code一般是指软件系统中的错误代码。
人们在使用电脑软、硬件的时候偶尔会发生错误,由于错误的类型很多,为了对错误进行区分,系统设定了错误代码(error code),以方便程序员调试错误或让用户知道错误原因。
如果发生错误,可以通过error code识别快速找到软、硬件不能正常操作的具体原因,因为error code通常对应着程序内部的原有的设定判断。
常见错误代码:
302-对象已临时移动。
304-未修改。
307-临时重定向。
4xx-客户端错误
发生错误,客户端似乎有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。400-错误的请求。
401-访问被拒绝。IIS定义了许多不同的401错误,它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在IIS日志中显示:
401.1-登录失败。
401.2-服务器配置导致登录失败。
401.3-由于ACL对资源的限制而未获得授权。
401.4-筛选器授权失败。
401.5-ISAPI/CGI应用程序授权失败。
401.7–访问被Web服务器上的URL授权策略拒绝。这个错误代码为IIS6.0所专用。
403-禁止访问:IIS定义了许多不同的403错误,它们指明更为具体的错误原因:
403.1-执行访问被禁止。
403.2-读访问被禁止。
403.3-写访问被禁止。
403.4-要求SSL。
403.5-要求SSL128。
403.6-IP地址被拒绝。
403.7-要求客户端证书。
403.8-站点访问被拒绝。
403.9-用户数过多。
403.10-配置无效。
403.11-密码更改。
403.12-拒绝访问映射表。
403.13-客户端证书被吊销。
403.14-拒绝目录列表。
403.15-超出客户端访问许可。
403.16-客户端证书不受信任或无效。
403.17-客户端证书已过期或尚未生效。
403.18-在当前的应用程序池中不能执行所请求的URL。这个错误代码为IIS6.0所专用。
403.19-不能为这个应用程序池中的客户端执行CGI。这个错误代码为IIS6.0所专用。
403.20-Passport登录失败。这个错误代码为IIS6.0所专用。
404-未找到。
404.0-(无)–没有找到文件或目录。
❹ 电脑上出现Error怎么回事
板上的钮扣电池电压不足,建议换电池。
2.开机键盘三指示灯亮是按F1,找到Standard CMOS Features Setup选项,此项中找到 Load Fail-Safe Defaults ,选中后回车,再按Y,回车。 选择Save&exit step(保存设置),直接按F10也可以,按Y回车自动重起。
3.有的不用重新设置,换电池后直接开机就可以了。
试试下面的两种方法能否解决:
1、取下主板电池,过一会再装上;也可以将主板上清除CMOS信息的跳线帽更换下位置,然后再恢复。
2、如果上述方法无效,更换主板上的纽扣电池试试。
护栏柱错误(fence post error),即越过数组末尾进行读写操作的错误。
它指的是这样一个问题:要建立一堵长7米的护栏,如果两个相邻护栏柱相隔1米,需要多少个护栏柱?大多数人会说7个,但实际上需要8个。如右图,很好地说明了这一点。
示意图这种"少1"(off by one)计数可能是C++程序员的噩梦。所以学习C++语言需要习惯这样一种观念--一切都是从0开始计数。
相信作为程序员的我们在对程序进行编译过程中经常会遇到错误,或者在运行过程中出现错误,在这里主要跟大家谈谈经常遇到的一些异常与错误,以及解决办法。
异常是指程序在编译或运行过程出现的错误。
在java.lang包中Throwable包含了所有的异常。
Error (错误) 和Exception(异常)
(1)Error(错误)
一旦发生无法修复,但可以避免发生。
常见错误类:
IOError:I/O错误,当发生严重的I/O错误时,抛出此错误。
VirtualMachineError:虚拟机错误,当 Java 虚拟机崩溃或用尽了它继续操作所需的资源时,抛出该错误。
StackOverflowError:栈内存满了,当应用程序递归太深而发生堆栈溢出时,抛出该错误。
OutofMemoryError:堆内存满了,因为内存溢出或没有可用的内存提供给垃圾回收器时,Java 虚拟机无法分配一个对象,这时抛出该异常。
以上是一些常见的错误,在Error类中还有一些别的错误(参照文件Java.lang.Throwable.Error).
(2)Exception(异常)
一旦发生,可以捕获并处理,不会导致程序终止,有时可以避免有时无法避免。
异常的分类:
1.编译时异常(需要强制处理) 2.运行时异常(不需要强制处理)
常见的异常有:
IOException:输入输出流异常
FileNotFoundException:文件找不到的异常
ClassNotFoundException:类找不到的异常
DataFormatException:数据格式化异常
NoSuchFieldException:没有匹配的属性异常
NoSuchMethodException:没有匹配的方法异常
SQLException:数据库操作异常
TimeoutException:执行超时异常
常见的运行时异常:
RuntimeException:运行时异常
NullPointerException:空指针异常
:数组越界异
ClassCastException:类型转换异常
IllegalArgumentException:非法的参数异常
InputMismatchException:输入不匹配
以上是常见的一些异常,另外还有别的异常,参见文件:Java.lang.Throwable.Exception
既然我们常常会遇到一些异常,那我们如何来处理这些异常就是一个急需解决的事情。
(1) 如何处理编译时异常?
方法一:将需要处理的代码块放在一个try...catch...中
try{
//需要处理异常的代码
}catch(XXXException ef){
ef.printStackTrace();
}
我们方法一就是要将我们不确定的代码放入try......catch中,先进行try一下,如果没有异常,则不会触发catch,没有输出,一旦出现异常,那么catch就会工作,在catch中捕获异常信息,根据异常信息进行补救措施。
如以下代码:
从结果可以看出,我们在输入数据的时候出现错误,这样通过自定义异常能够让我们更直接快速的找到运行或编译时的异常。
在上述中我们分别提到了三种throw,分别是Throwable,Throws以及throw,那么到底三者有什么区别?
Throwable:是指在在Java.lang包中的一个类,其包含了所有的异常和错误,其中类Error和Exception 是它
的子类。
Thows:是指在解决编译时异常,将方法中异常抛给上一级,在方法后面要加Throw Exception来进行抛。
throw:是指在自定义异常时,如果方法出现异常,那么将作为引用方法的对象抛出。即抛出异常。
❻ 为什么百度这种大网站的源代码都会有error
做为一个程序员,可以很负责的告诉大家,网站有错误是最正常不过的事情,然而您说的网络的代码中都可能有error ,这并不是程序员不知道,而是因为这些错误不会影响程序的使用与运行,由于兼容性的问题,程序员会考虑惹干个问题,但是总会有一些问题无法考虑到很全面,所以就会造成error的局面,当然这都是程序中可以容许的!
❼ internal server error怎么解决
解决方法:
1、服务器日常维护
进行停机处理,或者更新程序,这时候,浏览者登陆该网站,就会报500的错误,一般等维护更新完毕,启动服务器以后,就可以自动解决,用户只需要耐心等待即可。
2、程序bug
当程序员编写的程序不够严谨,出现异常的时候,浏览者也会看到500的错误,解决这种问题的方法是,联系程序开发人员,进行程序跟踪,debug下程序,找到错误所在,然后修改程序,经测试没有问题,重新发布程序,然后系统正常。
3、中毒引起
有的时候,有写病毒会改写服务器的一些设置,导致用户无法正常访问,报500的错误,这时需要程序员进行杀毒处理,处理完程序后,系统恢复正常。
4、配置问题
有的时候,用户无法访问网站,是因为系统参数的配置有问题,遇到这种情况,找BASIS人员进行处理,处理完毕,访问就正常了。
5、数据库问题
网站读写操作都在数据库,数据库如果异常的话,访问也会不正常,遇到此类情况,通知网站的DBA,让他帮助分析解决,解决完毕后,访问就会正常。