|
一直忙着调试代码,写服务器的代码,有时候真叫人郁闷,郁闷的是要高性能的保持程序继续运行n多天还没有事情,本来这也是程序员该做的事情,但是有时候一些长期积累下来的问题会造成程序指明性的打击~~~
在写这个程序的时候,本机调试代码的时候都没有遇到任何内存泄漏的问题,调试的时候都很清晰,但是到客户那里运行一天到两天就没名的挂掉,真让人郁闷
而且没有任何报错~~无奈,
打开了drwtsn32来检测程序的运行报错情况
drwtsn32是windows调试的利器,调试不常见错误的程序的时候,累积错误的时候,都可以用它.
在命令行窗口,输入drwtsn32
然后就可以看到drwtsn32的运行界面
然后设置"转存到符号表"
"转储全部线程上下文"会在出错的时候把程序运行的上下文都记录下来,如果只想知道出错那个地方的记录,就不要选这个,看起来方便很多
然后确定保存这些信息
相应的windows程序生成的时候,也得做一些改动,要生成map文件,这样好找到出问题的代码地方
vc设置: 1、配置属性-〉c/c++-〉常规-〉调试信息格式, 选择“程序数据库(/Zi)” 2、配置属性-〉c/c++-〉优化,选择“禁用(/Od)” 3、配置属性-〉连接器-〉调试-〉生成调试信息,选择 “是(/DEBUG)” 4、配置属性-〉连接器-〉调试-〉生成影射文件,选择 “是(/MAP)” 5、配置属性-〉连接器-〉调试-〉影射文件名,选择“$(OutDir)/$(ProjectName).map” 6、配置属性-〉连接器-〉调试-〉影射导出,选择“是(/MAPINFO:EXPORTS)” 7、配置属性-〉连接器-〉调试-〉影射行,选择“是(/MAPINFO:LINES)” 8、配置属性-〉连接器-〉高级->固定基址,选择“生成重定位节(/FIXED:NO)”
然后命令行运行drwtsn32
等待程序出错~~
程序出错以后会把log和一个dmp文件存储到故障转存 和日志文件路径 那个目录下面,这个目录可以自己设置.
在log信息里面有这样的信息
Microsoft (R) Windows 2000 (TM) Version 5.00 DrWtsn32 Copyright (C) 1985-1999 Microsoft Corp. All rights reserved.
发生应用程序意外错误: 应用程序: (pid=1248) 时间: 2006-4-27 @ 09:49:29.613 意外情况编号: c0000005 (访问侵犯)
*----> 系统信息 <----* 计算机名: F6B2548C83754CF 用户名: Administrator 处理器数量: 1 处理器类型: x86 Family 6 Model 8 Stepping 6
…………
0041e6bb 8b45e0 mov eax,[ebp+0xe0] ss:00d9907e=???????? 错误 ->0041e6be 8b500c mov edx,[eax+0xc] ds:00c69ee6=???????? 0041e6c1 52 push edx 0041e6c2 ff1518af4300 call dword ptr [0043af18] ds:0043af18=7c177c00
上一篇:关于N皇后问题高效试探回溯算法的分析
下一篇:Katie Melua:Nine Million Bicycles
|