呵呵,这个我最在行啦,说实话,调试的过程中,不怕崩掉,就怕什么错误信息都没有。
首先,既然down掉了,那么肯定会有错误信息,这个通常是出在调试环境的console或log文件中,根据错误信息的内容初步判断错误类型,如果是编译后的初次调试,大部分情况下是空指针(空内存)访问错误,即实际为null的内存被使用,当然也可能是其他错误。无论怎样,在这个位置加入断点,即在这行代码不出错,一旦执行该行,程序即崩溃(无法调试的环境下则加入充分的debug信息),再次运行程序,在这一点上监视各个变量,找到导致崩溃的变量值,向上追溯,找到给该变量赋值的逻辑,如果是通过其他变量传递过来的,则逐层向上逆向追踪,通过断点来找到函数的呼出元,当找到赋值 *** 作的根源时,错误的原因也就找到了,接下来就是分析原因,讨论对策,查找影响范围了。。。。
down掉的程序不可怕,可怕的是没有任何错误信息得bug(加上这句可以提高印象分哦O(∩_∩)O~)
在现场设置程序崩溃自动转储。
在windows
注册表如下项:
//HKEY_LOCAL_MACHINE/Software/Microsoft/Windows
NT/CurrentVersion/AeDebug
中提供了调试器的相关设置。
Debugger
设置具体的调试器和启动参数
Auto
是否设置在发送错误前启动调试器
以windbg为例
Debugger
=
"Path/WinDbgexe"
-p
%ld
–c
"dump
/ma
/u
C:/CrashDumpdmp"
-e
%ld
–g
在程序崩溃的时候,将启动windbg,并将内存转储到c:/crashdumpdmp文件中。
开发人员拿到dmp文件后,就可以定位问题了。
以上就是关于程序有几万行代码,编译通过了,运行的时候崩溃了,怎么定位错误面试题。。求解全部的内容,包括:程序有几万行代码,编译通过了,运行的时候崩溃了,怎么定位错误面试题。。求解、windows系统如何设置应用程序崩溃自动内存转储、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)