logo资料库

快速解决程序运行中突然异常的问题,并找到根源.docx

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
【教程第一课---调试方法】 作者:bo 今天教大家点有用的东西,快速解决程序运行中突然异常的问题。 关于 vc,mfc,delphi,java,bcb,数据库等等的开发工具的使用,就不教了,因为这些 东西 baidu 上有大量的视频教程。 我们开发项目最花时间的是调试,起码占了整个开发时间的一半以上,甚至更多。 调试类型: a,Code 写错。 b,逻辑错误。 c,内存益处。 d,对象为空。 {-- 以上问题都比较容易找到问题所在--} e,程序员通常都会遇到: 程序运行一段时间之后,莫名其妙突然弹一个对话框提示:XXXXXX 内存地址无法访问。 点 “确定”关闭。尤其是产品发布之后,出现了这样的问题,可能是用户太多,可能是网 络不给力,可能是。。。。。。。 异常了,怎么办?怎么快速解决?怎么快速找到根源? 今天就告诉大家一个快捷的方法,保证 5 分钟之内找到引发这个问题的代码。
作为程序员第一感觉是内存的问题,但是到底是哪里的问题呢?如何找出来呢? 通常就需要把自己的代码一行一行的检查,很花时间, 如果项目已经写的很庞大,有时候几天都未必可以找到真正的问题所在。 因为这个问题只有特殊的大数据流的压力情况下或许出现,用 vc 调试模式运行又很难重现。 下面说一种方法,可以几分钟解决这种类型的异常。 · 第一步: 在出现这个问题之后,告诉用户不要点确定,因为点了确定,就关闭了,下次重现这个问题 不知道在猴年马月了。 OD 附加 + 断点: 77D18731 . FF55 08 call dword ptr [ebp+8] ; 【重要】User32 提交消息到进程处理 //关键字: 68CDABBADC56FF7518FF7514FF7510 bp _CrtDbgReport bp MessageBoxA bp MessageBoxW bp MessageBoxExA bp MessageBoxExW bp CreateWindowExA bp CreateWindowExW
·第二步,OD 断在 ·第三步,F8 单步到下面位置: Ctrl+C 复制出,右下角那行:001264E0 00413080 mfcDebug.00413080 记住这个数字“ 00413080 ”然后,关闭 OD。 你或许要问,右下框里面那么多地址为什么偏偏是这个呢,因为自己的 Code 的地址只能是 0x400000—0xF00000 这个范围。编译器 Dll 的地址都在 0x10000000 以上呢,操作系统 代码地址都在 0x70000000 以上呢。所以只可能是这个。
第四部: 用 VC 打开自己的工程,在 WinMain 下断点,或者其他可以启动就断下来的地方也可。 断下来之后,打开反汇编窗口,输入地址 0x413080 最后一步: 右键“转到源代码” 这样就找到了 Code 哪里出了问题。 OK,讲完。
分享到:
收藏