Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
125 views
in Technique[技术] by (71.8m points)

c++ - Breakpoint exceptions from Windows dll's on Windows 7

I am having some trouble with crashes on Windows 7 32 bit in my game engine. It runs without any such crashes on Windows xp 32 bit, which is my development machine. I have compiled a debug build of the engine, and this is some output generated from a crash dump that I received from a tester:

Microsoft (R) Windows Debugger Version 6.11.0001.404 X86
Copyright (c) Microsoft Corporation. All rights reserved.


Loading Dump File [E:Perilous Heartsdebugperilous_hearts.DMP]
User Mini Dump File with Full Memory: Only application data is available

Symbol search path is: E:Perilous Heartsdebug
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: kerne

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This crash dump is unhelpful because it's missing symbols for AcXtrnal.dll, so it's likely that the stack isn't being walked properly.

AcXtrnl.dll is an Application Compatibility DLL for Windows, and is usually only loaded by a process if "Run this program in compatibility mode" is checked in the Compatibility tab of the Properties dialog for the executable.

If your Windows 7 testers have this setting checked, does unchecking it allow your program to run correctly?

I'd highly recommend downloading the Application Compatibility Toolkit (more information here) and running your program with it to diagnose potential compatibility issues with versions of Windows newer than Windows XP.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...