简体   繁体   中英

How can I debug an application crash in Win7 after it's happened?

I have a Visual Basic 6 application that I've recently changed to use a couple of C++ DLLs I've written in Visual Studio 2008. The application works fine on my PC, but when we install it on one of our test PCs it tends to crash during shutdown - we see the Win 7 message "Your application has failed" or whatever it is.

I know Win 7 stores data that can be used to analyse the crash. I've got the source code and .PDB files from the build so I should be able to use that, but I can't figure out where Win 7 stores the data from the crash. The Event Viewer shows the crash but doesn't have any data and the directory C:\\Windows\\Minidump doesn't exist.

Where do the crash files get put?

Microsoft has documentation here which works back to Vista Service Pack 1: https://msdn.microsoft.com/en-us/library/windows/desktop/bb787181(v=vs.85).aspx

There is a registry key with 4 sub-values that control generic crashes:

# HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps

DumpType   # 1 = mini-dump, 2 = full dump, 0 = custom dump
DumpCount  # Maximum number of dump files to keep before purging
DumpFolder # Full path to folder to store dump files (no trailing slash)
DumpFlags  # Usually 0, flags only used if DumpType is 0

Once these registry values are in place crash files should be immediately written no matter what happens to whatever dialog might be displayed.

Note: Registry sub-keys with executable name can be used to control crash behavior for only one specified process.

Why don't you make your program save minidump wherever you want when the crash happens? I'm not familiar with VB, but try to use SetUnhandledExceptionFilter() and MiniDumpWriteDump() .

  • Get minidump for crash
  • Get WDK , Using Debugging Tools for Windows

  • Use Windbg to open crash dump

  • use command !analyze

    The !analyze extension displays information about the current exception or bug check.

  • Read more about window debugging

Creating Dump:

You can configure windbg as defaut debugging tool by giving command "windbg -I" in run.

Also Dr. Watson tool can do this for you.

You can even use a carsh reporting mechanism and get the locally saved dump file, then debug it using Visual Studio. There are pretty much freely available resources in Visual C++, but not much in VB.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM