什么叫驱动程序,什么叫程序崩溃啊

什么叫程序崩溃啊 - 故障解答 - 电脑教程网

什么叫程序崩溃啊

日期:2006-11-18   荐:
什么叫程序崩溃啊真的没见过,今天面试,考官问我程序在运行的时候崩溃了。该怎么调试!我都傻了,从没见过什么是崩溃?gt;>?br> 请别笑了!!真的什么叫崩溃啊,该怎么调试啊~~给分!谢了程序死掉有可能会死机,得不到最后想要的结果.运行期出错.还没全后面的哥哥补简单地讲包括程序运行异常,从而导致内存读取失败,CPU占用率为100%,操作系统死机运行期出错就叫崩溃吗?或者说没有new到内存?是这样吗?怎么解决呢?我平时这种情况是见过的啊,判断地址是否为空啊!能给你小例子就可以了,非常感谢崩溃 就是程序无法进行下去比如栈益出等如果系统抛出严重的异常也算比如内存度写错误据说单步是很没出息的做法,但我想是在你找不到问题出在哪里的时候的唯一的办法。我也不明白...我写的全部是小程序 没碰过但有一次...从文本读数据...压缩(编码)...解码.... 不知道为什么 机子一直响....好象是内存有问题...那我也想知道 死循环最后的结果算吗???谁能给个不错的小例子啊?哎,今天面试还是虽然没过,感觉也找到了自己的问题。考官很干脆,第二轮的时候,没让我回家等消息。然后,让他给我找找问题。他说我太浮躁了。也许是吧。当一个程序不能按照你的要求工作的时候可以说是崩溃了崩溃的方式有很多种最常见的就是 该程序执行了非法操作需要关闭。也有就是没有响应的,或者造成别的程序错误的都可以算是崩溃。如果你有这个程序的源码可以step into看一下如果没有就softice指针,循环,递归处理不当都可能使程序崩溃调试的话一是从算法上考虑如果不行,单步执行是行之有效的方法真的没见过,今天面试,考官问我程序在运行的时候崩溃了。该怎么调试!我都傻了,从没见过什么是崩溃?gt;>?br>:1. 源码,在开发工具环境Debug方式下运行,待错误发生时找到调试,到具体错误位置;2. 使用工具调试,例如VC 可以使用Nemuga 的 Bround Check;3. 源码中加入关键点输出,输出信息到日志,这样用来定位崩溃发生的具体程序位置;......崩溃:程序运行出错,并且无法恢复正常.程序崩溃,个人感觉应该是由于人为输入的代码或程序运行的软硬件环境引发的异常.程序崩溃,例子:#include <malloc.h>void GetMemory(char *p){ p = (char *)malloc(99);}void Test(void){ char *str = NULL; GetMemory(str); strcpy(str, "hello world"); printf(str);}main(){ Test();}请问运行Test函将会引发程序崩溃因为GetMemory并不能传递动态内存,Test函数中的 str 一直都是 NULL。strcpy(str, "hello world");将使程序崩溃。learninglearning单步调试或者设置断点动态内存是可以传递的。分析一下,GetMemory()函数对于指针来说实质上是一个传值调用,也就是建立一个str的副本,然后将分配到的动态内存的首地址赋予这个副本;函数调用结束后,这个副本也随之消亡,而str本身的值并没有被改写。程序应当改写为:#include <malloc.h>void GetMemory(char **p){ (*p) = (char *)malloc(99);}void Test(void){ char *str = NULL; GetMemory(&str); strcpy(str, "hello world"); printf(str);}main(){ Test();}在Unix下程序垮了可以看Core文件,用pstack corefile | c filt 就可以看到崩时的堆栈情况。就可以知道是哪里出问题了。在Windows下,要先生成Map文件,然后跟据系统提示的崩溃地址在Map文件中查找是哪条函数导致程序崩了。还补一句,程序运行时调试可以多打Trace,然后再接合堆栈情况 这样调起来方便些。大部分都是new失败造成的对于动态分配失败的情况,都是需要列入程序中进行分析的比如:char *p=new char[10];if(!p){AfxMessageBox("内存不足,请按确定退出!");exit(1);}re: idealpure(静以致极) GetMemory并不能传递动态内存真的很奇怪啊re: rainius(九歌) 看了你的解释之后,对GetMemory的解释,找到了答案,我想如果是void GetMemory(char **p)改为char* GetMemory(){return new char(99);}也是可以的!(在VC6运行正常了)!感谢两位,其于的人说单步调试和设置断点的没分了!还是感谢大家捧场!
标签: