Kbase P148139: How to trap a windows crash and generate a memory dump
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  22/10/2009 |
|
Status: Unverified
GOAL:
How to trap a windows crash and generate a memory dump
GOAL:
How to replace Dr Watson with another debugger to generate a useful memory dump
GOAL:
How to use adplus in Citrix or terminal server environments
GOAL:
How to trap crashes on Citrix/terminal server environments automatically
FACT(s) (Environment):
Windows Server 2003
Windows Server 2008
Windows XP
OpenEdge 10.x
FIX:
This solution contains information about modifying the registry.
Before you modify the registry, make sure to back it up and make sure that you understand how to restore the registry if a problem occurs.
In certain environments, where Citrix or terminal server is used to execute Progress application, if crashes occurs in unknown points of the application is virtually impossible to use Adplus to trap the crash and generate the dump, once Adplus depends on the target process to be already running in order to attach to it. In those cases, an alternative is to replace Dr Watson as the default debugger with another Microsoft provided utility named cdb. This utility can be used to generate full memory dumps.
To do it, follow the steps below:
1 - Download and install Microsoft debugging tools from Microsoft debugging tool download site from
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx#a
2 - After installing, open a command window, and go to the debugging tools directory
3 - Run cdb -iaec "-c \".dump /u /ma <your desired path for memory dump>;q\"" (This step modifies the computer registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\debugger, setting to be cdb instead of Dr. Watson).
4 - Make sure the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\auto value is 1, otherwise crash traps are not enabled.
5 - Send the file to Tech Support when requested.
Please notice that the
1 - <path for memory dump> should have a "\" in the end, otherwise the file name will be appended to the directory name (this is not suppose to be user friendly!).
2 - The desired file will be in the desired directory starting with _<process id>_<date>