我在游戏引擎中的Windows 7 32位崩溃时遇到了一些麻烦。它在Windows xp 32位上运行时没有任何此类崩溃,这是我的开发机器。我编译了引擎的调试版本,这是我从测试人员收到的崩溃转储生成的一些输出:
Microsoft (R) Windows Debugger Version 6.11.0001.404 X86
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [E:\Perilous Hearts\debug\perilous_hearts.DMP]
User Mini Dump File with Full Memory: Only application data is available
Symbol search path is: E:\Perilous Hearts\debug
Executable search path is:
Windows 7 Version 7600 MP (4 procs) Free x86 compatible
Product: WinNt, suite: SingleUserTS
Machine Name:
Debug session time: Wed May 11 20:04:24.000 2011 (GMT+2)
System Uptime: 0 days 1:57:58.550
Process Uptime: 0 days 0:01:16.000
................................................................
..........
Loading unloaded module list
.....
eax=00000000 ebx=0012f088 ecx=00000000 edx=00000000 esi=00000011 edi=6c350dd8
eip=776f6344 esp=0012f028 ebp=0012f080 iopl=0 nv up ei pl zr na pe cy
cs=001b ss=0023 ds=0000 es=0000 fs=003b gs=0000 efl=00000247
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll -
ntdll!KiFastSystemCallRet:
776f6344 c3 ret
0:000> |* !analyze -v -f
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
*** ERROR: Symbol file could not be found. Defaulted to export symbols for KERNELBASE.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for imm32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for user32.dll -
*** WARNING: Unable to verify checksum for perilous_hearts.exe
*** ERROR: Symbol file could not be found. Defaulted to export symbols for kernel32.dll -
***** OS symbols are WRONG. Please fix symbols to do analysis.
*************************************************************************
*** ***
*** ***
*** Your debugger is not using the correct symbols ***
*** ***
*** In order for this command to work properly, your symbol path ***
*** must point to .pdb files that have full type information. ***
*** ***
*** Certain .pdb files (such as the public OS symbols) do not ***
*** contain the required information. Contact the group that ***
*** provided you with these symbols if you need this command to ***
*** work. ***
*** ***
*** Type referenced: ntdll!_PEB ***
*** ***
*************************************************************************
*** ERROR: Symbol file could not be found. Defaulted to export symbols for minHook.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for acatts.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for nvdaHelperRemote.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for IAccessible2Proxy.dll -
*** WARNING: Unable to verify checksum for Hlas.dll
*** ERROR: Symbol file could not be found. Defaulted to export symbols for Hlas.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntvdm.exe -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for AcaTtsSapi5.dll -
*** WARNING: Unable to verify checksum for gwmhook.dll
*** ERROR: Symbol file could not be found. Defaulted to export symbols for gwmhook.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for HLW32.DLL -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for dsound.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for sapi.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for msdmo.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for sfc_os.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for sfc.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for uiautomationcore.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for dinput8.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for midimap.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for msacm32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for msacm32.drv -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for AudioSes.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ksuser.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for wdmaud.drv -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for winmm.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for wkscli.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for netutils.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for netapi32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for winspool.drv -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for oleacc.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for comctl32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for MMDevAPI.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for powrprof.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for wtsapi32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for hid.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for avrt.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for propsys.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for winsta.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for rsaenh.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for cryptsp.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for srvcli.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for apphelp.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for CRYPTBASE.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for sxs.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for RpcRtRemote.dll -
*** ERROR: Module load completed but symbols could not be loaded for profapi.dll
*** ERROR: Symbol file could not be found. Defaulted to export symbols for msasn1.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for wintrust.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for devobj.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for cfgmgr32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for crypt32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for oleaut32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ws2_32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for msvcrt.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for msctf.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for shlwapi.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ole32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for setupapi.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for comdlg32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for gdi32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for rpcrt4.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for shell32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for advapi32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for usp10.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for lpk.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for nsi.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for psapi.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for clbcatq.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for sechost.dll -
*************************************************************************
*** ***
*** ***
*** Your debugger is not using the correct symbols ***
*** ***
*** In order for this command to work properly, your symbol path ***
*** must point to .pdb files that have full type information. ***
*** ***
*** Certain .pdb files (such as the public OS symbols) do not ***
*** contain the required information. Contact the group that ***
*** provided you with these symbols if you need this command to ***
*** work. ***
*** ***
*** Type referenced: IMAGE_NT_HEADERS32 ***
*** ***
*************************************************************************
*************************************************************************
*** ***
*** ***
*** Your debugger is not using the correct symbols ***
*** ***
*** In order for this command to work properly, your symbol path ***
*** must point to .pdb files that have full type information. ***
*** ***
*** Certain .pdb files (such as the public OS symbols) do not ***
*** contain the required information. Contact the group that ***
*** provided you with these symbols if you need this command to ***
*** work. ***
*** ***
*** Type referenced: kernel32!pNlsUserInfo ***
*** ***
*************************************************************************
*************************************************************************
*** ***
*** ***
*** Your debugger is not using the correct symbols ***
*** ***
*** In order for this command to work properly, your symbol path ***
*** must point to .pdb files that have full type information. ***
*** ***
*** Certain .pdb files (such as the public OS symbols) do not ***
*** contain the required information. Contact the group that ***
*** provided you with these symbols if you need this command to ***
*** work. ***
*** ***
*** Type referenced: kernel32!pNlsUserInfo ***
*** ***
*************************************************************************
FAULTING_IP:
+26b952f019cdf74
00000000 ?? ???
EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 00000000
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 0
FAULTING_THREAD: 000007fc
DEFAULT_BUCKET_ID: WRONG_SYMBOLS
PROCESS_NAME: perilous_hearts.exe
ADDITIONAL_DEBUG_TEXT:
Use '!findthebuild' command to search for the target build information.
If the build information is available, run '!findthebuild -s ; .reload' to set symbol path and load symbols.
FAULTING_MODULE: 776b0000 ntdll
DEBUG_FLR_IMAGE_TIMESTAMP: 4a5bd98a
ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint has been reached.
EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid
PRIMARY_PROBLEM_CLASS: WRONG_SYMBOLS
BUGCHECK_STR: APPLICATION_FAULT_WRONG_SYMBOLS
LAST_CONTROL_TRANSFER: from 6c3291dd to 776f6344
STACK_TEXT:
WARNING: Stack unwind information not available. Following frames may be wrong.
0012f080 6c3291dd 0266000c 6c3291dd 6c350dd8 ntdll!KiFastSystemCallRet
0012f0a0 759b1abf 00230000 6021a558 75c161dd AcXtrnal+0x91dd
0012f0dc 75f82868 0266000c 00000102 00285360 KERNELBASE!LocalLock+0x29
0012f0f0 75f82801 002e04eb 00000001 0012f12c imm32!ImmLockIMC+0x76
0012f100 75f84a19 002e04eb 00000102 004eb714 imm32!ImmLockIMC+0xf
0012f12c 75c36b11 000801e8 04050405 00000025 imm32!ImmProcessKey+0x31
0012f154 776f627e 0012f16c 00000014 0012ff78 user32!GetLastActivePopup+0xc5
0012f1a8 75c12fdc 004eb714 000801e8 00000000 ntdll!KiUserCallbackDispatcher+0x2e
0012f1d4 0047f1cb 004eb714 000801e8 00000000 user32!PeekMessageA+0x12a
0012f1f0 00480bee 0044cb6e 01c27f28 004eab68 perilous_hearts!poll_window+0x7b [e:\c++ tests\bgt\main.cpp @ 113]
0012f1f4 0044cb6e 01c27f28 004eab68 01c4a9e8 perilous_hearts!LineCallback+0xe [e:\c++ tests\bgt\main.cpp @ 572]
0012f224 004367b2 01c27f28 004eab68 01c27fa8 perilous_hearts!asCScriptEngine::CallGlobalFunction+0x1e [e:\c++ tests\bgt\angelscript\source\as_scriptengine.cpp @ 3140]
0012f238 00438310 01c28058 01c27f28 0012f2fc perilous_hearts!asCContext::CallLineCallback+0x22 [e:\c++ tests\bgt\angelscript\source\as_context.cpp @ 3780]
0012f2fc 0043a7c8 00000006 75c5ea71 ffffffff perilous_hearts!asCContext::ExecuteNext+0x9d0 [e:\c++ tests\bgt\angelscript\source\as_context.cpp @ 2033]
0012f314 00466ee9 0012f72c 0012f7b8 00480be0 perilous_hearts!asCContext::Execute+0x1b8 [e:\c++ tests\bgt\angelscript\source\as_context.cpp @ 983]
0012f72c 0047c505 75c1147a 75c0e18a 00400000 perilous_hearts!execute+0x119 [e:\c++ tests\bgt\main.cpp @ 1035]
0012fd40 0047c5c3 0047c6be 00000000 00232027 perilous_hearts!RunApplication+0xb15 [e:\c++ tests\bgt\main.cpp @ 929]
0012fd44 0047c6be 00000000 00232027 00000cc0 perilous_hearts!run_script+0x93 [e:\c++ tests\bgt\main.cpp @ 1259]
0012feb0 0047cbdc 00000000 fffffffe 00000000 perilous_hearts!main_game+0x4e [e:\c++ tests\bgt\main.cpp @ 1367]
0012fef8 00492973 00400000 00000000 00232027 perilous_hearts!WinMain+0x3dc [e:\c++ tests\bgt\main.cpp @ 1551]
0012ff88 75ef1194 7ffd5000 0012ffd4 7770b429 perilous_hearts!__tmainCRTStartup+0x113 [f:\dd\vctools\crt_bld\self_x86\crt\src\crt0.c @ 263]
0012ff94 7770b429 7ffd5000 7700c664 00000000 kernel32!BaseThreadInitThunk+0x12
0012ffd4 7770b3fc 004929de 7ffd5000 00000000 ntdll!RtlInitializeExceptionChain+0x63
0012ffec 00000000 004929de 7ffd5000 00000000 ntdll!RtlInitializeExceptionChain+0x36
STACK_COMMAND: ~0s; .ecxr ; kb
FOLLOWUP_IP:
AcXtrnal+91dd
6c3291dd 8b1d0c11326c mov ebx,dword ptr [AcXtrnal+0x110c (6c32110c)]
SYMBOL_STACK_INDEX: 1
SYMBOL_NAME: AcXtrnal+91dd
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: AcXtrnal
IMAGE_NAME: AcXtrnal.dll
BUCKET_ID: WRONG_SYMBOLS
FAILURE_BUCKET_ID: WRONG_SYMBOLS_80000003_AcXtrnal.dll!Unknown
WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/perilous_hearts_exe/0_0_0_0/4dc830b1/unknown/0_0_0_0/bbbbbbb4/80000003/00000000.htm?Retriage=1
Followup: MachineOwner
我有很多这些例外,我根本无法弄清楚它们为什么会发生。我显然在某处做错了什么,但似乎无法在Xp上重现。我试图设置一个向量异常处理程序来查找这个特殊的异常,然后如果它被触发就继续执行,但那里没有运气。
引擎在编译器设置中使用/ Zi编译,但是使用了给链接器的/ OPT:REF命令。
作为旁注,如果有人愿意花一些时间与我一起深入了解这一点,我会非常乐意在经济上支付这些时间。
提前感谢您的帮助!
亲切的问候,
Philip Bennefall
答案 0 :(得分:1)
此崩溃转储无用,因为它缺少AcXtrnal.dll的符号,因此堆栈可能没有正确行走。
AcXtrnl.dll是Windows的应用程序兼容性DLL,如果在可执行文件的“属性”对话框的“兼容性”选项卡中选中“以兼容模式运行此程序”,则通常仅由进程加载。
如果您的Windows 7测试人员选中此设置,取消选中该设置是否允许您的程序正常运行?
我强烈建议您下载Application Compatibility Toolkit(更多信息here)并使用它运行程序,以诊断与Windows XP相比较的Windows版本的潜在兼容性问题。