to sangermax :对dump文件调试不是很清楚,我现在用的是VC6可以调试dump吗?有哪些有关于调试dump文件的指引资料?
可以查看那个抛出来的地址所属的函数以及所在的源文件和行,如果你有AcsAPI.dll和Plus.exe的调试版本可以试下下面的命令, objdump -d .dll or .exe也可以是addr2line -f -e .dll or .exe一定要是调试版本才能看得到,因为你的.exe或.dll中有调试段信息。
STACK_TEXT: WARNING: Stack unwind information not available. Following frames may be wrong. 0177fefc 1000b946 00971f68 0000003f 014a0300 AcsAPI+0xd284 这里的0xd284表示什么啊?是不是我程序的内存地址?能不能通过map文件找到出错的行数??
vs2003 是可以的,百度 "vs2003 远程调试",
大侠些救救我:002> !analyze -v
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
FAULTING_IP:
DJAcsAPI+d284
1000d284 894a04 mov [edx+0x4],ecxEXCEPTION_RECORD: ffffffff -- (.exr ffffffffffffffff)
ExceptionAddress: 1000d284 (AcsAPI+0x0000d284)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000001
Parameter[1]: 00000004
Attempt to write to address 00000004DEFAULT_BUCKET_ID: APPLICATION_FAULTPROCESS_NAME: Plus.exeWRITE_ADDRESS: 00000004 BUGCHECK_STR: ACCESS_VIOLATIONLAST_CONTROL_TRANSFER: from 1000b946 to 1000d284STACK_TEXT:
WARNING: Stack unwind information not available. Following frames may be wrong.
0177fefc 1000b946 00971f68 0000003f 014a0300 AcsAPI+0xd284
00000098 00000000 00000000 00000000 00000000 AcsAPI+0xb946
FOLLOWUP_IP:
AcsAPI+d284
1000d284 894a04 mov [edx+0x4],ecxFOLLOWUP_NAME: MachineOwnerSYMBOL_NAME: AcsAPI+d284MODULE_NAME: AcsAPIIMAGE_NAME: AcsAPI.dllDEBUG_FLR_IMAGE_TIMESTAMP: 4ab82b9cSTACK_COMMAND: .ecxr ; kbBUCKET_ID: ACCESS_VIOLATION_AcsAPI+d284Followup: MachineOwner
---------
objdump -d .dll or .exe也可以是addr2line -f -e .dll or .exe一定要是调试版本才能看得到,因为你的.exe或.dll中有调试段信息。
WARNING: Stack unwind information not available. Following frames may be wrong.
0177fefc 1000b946 00971f68 0000003f 014a0300 AcsAPI+0xd284 这里的0xd284表示什么啊?是不是我程序的内存地址?能不能通过map文件找到出错的行数??
生成dump的工具有不少,可以用windbg,debugdiag,adplus等等。建议你用windbg,当遇到异常,windbg会中断下来,你配置好pdb路径,其实不用抓dump,直接就可以调试。如果在出问题的机器上不方便调试,可以使用windbg抓取dump,用命令:.dump /ma yourdumpfile拷贝dump文件到你开发机器上配置好pdb调试。
addr2line 0xd284 -f -e ACSAPI.dll
你要保证你的ACSAPI.dll中有调试段信息。