Feedback
Did this article resolve your question/issue?

   

Article

What is the purpose of .PDB files?

« Go Back

Information

 
TitleWhat is the purpose of .PDB files?
URL NameP178951
Article Number000133004
EnvironmentProduct: OpenEdge
Versions: 10.1C02, 10.2B, 11.x, 12.x
OS: Windows
Question/Problem Description

What are PDB files, and when should they be used?
How to assure reliable debugging information is populated in a Windows protrace file?
What are the PDB files provided with Windows Install media?
Where to find pdb files?
Are .pdb files changed between FCS and Service Packs?
When a Hotfix is applied do the %DLC%\pdbfiles need to be updated?

 

Steps to Reproduce
Clarifying Information
Error Message
Defect Number
Enhancement Number
Cause
Resolution

PDB files are symbol files for Windows-based executable's. Without these files, it's not possible to get a readable C-level stack trace from the OpenEdge executable's on Windows platforms.

Progress PDB files can be used with the Windows debugger to unwind the C-level call stack when analysing memory dumps, which in a number of cases contains valuable information to assist with understanding and eventually resolving the problem under investigation. 

It is important that the pdbfiles used to unwind the stack trace must match the exact OpenEdge release used: Version & Service Pack & Hotfix. When the wrong version is used or when they are not available in the install directory, incorrect symbol mapping will result providing an invalid stack trace from which reliable conclusions cannot be drawn.

Assuring that the PDB files are in place is part of an OpenEdge Deployment procedure. This assures that in addition to a properly unwound call stack, they also provide as much information as possible about what the executable was doing at the time. Without symbol files, the stack information in a protrace file is effectively limited to the session startup parameters and if applicable, the ABL stack and list of Persistent procedures/Classes.

  • Since OpenEdge 10.1C02 and 10.2B, our PDB files are shipped with the installation media for Windows
  • With OpenEdge Major version (FCS) and Service Packs (SP), our pdb files are provided with the install media in a separate "pdbfiles" subdirectory.
  • Prior to OpenEdge 12PDB files are not installed with the product. They need to be manually copied from the install media to the installation directory %DLC%\pdbfiles
  • OpenEdge 12 provides an Option to copy the pdbfiles during installation which we recommend should be used.
  • OpenEdge 12 Silent installs, will unpack the pdb files into %DLC%\pdbfiles when this Option is configured to be used:
    [Configuring / Installing Components Dialog]
    InstallingPdbFiles=1
  • With OpenEdge Hotfixes, pdbfiles are provided in a pdbfiles subdirectory within the hotfix archive. As part of extracting the hotfix archive into %DLC% creates the pdbfiles subdirectory under DLC. For further information refer to Article How to apply a Progress OpenEdge Hotfix  

To enable a readable C-level stack trace in a protrace file:

  1. Prior to OpenEdge 12 or if the option to unpack pdb files was not enabled, copy the "pdbfiles" directory from the installation media into the OpenEdge installation directory: %DLC%\pdbfiles\*
  2. For OpenEdge 10.2B 32-bit, copy the dbghelp.dll from the Debugging Tools for Windows to the OpenEdge %DLC%\bin directory. This is no longer necessary since OpenEdge 11.0 and later where the correct dbghelp.dll file is shipped as part of the install procedure.
  • Starting with OpenEdge 10.2B 32-bit, .pdb files are used to provide a readable C-level stack trace into a protrace file.
  • Specific to OpenEdge 10.2B 64-bit - the first Windows 64-bit product release was never setup to use the PDB files to get a readable C-level stack trace into a protrace file. This means that the protrace C-Stack information will not resolve even when the correct PDB files are in place.  Memory dump files are needed instead as with previous 32-bit versions (see below). Since OpenEdge 11.0 64-bit,  .pdb files are setup to write the C-stack process information when a protrace is generated.
Further information and guidance on interpreting the information provided in a protrace in the following Articles:
For assistance in analysing protrace files, open a Support Case providing the associated evidence.

To obtain readable traces from Windows minidump (.dmp) files 
To resolve internal functions correctly, use the .pdb files in combination with the Debugging Tools for Windows available in the Windows Driver Kit:

https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk  

  • For OpenEdge 10.2B - once the download has completed, the dbghelp.dll that needs to be copied to %DLC%\bin can be found under:
[installdir] > Windows Kits > 10 > Debuggers
  • To be able to extract Windows .dmp files, follow the instruction for 'As a standalone tool set':
  1.  Install the Windows SDK 
  2. During the install select the Debugging Tools for Windows box and clear all the other boxes.

 

Workaround
Notes
Last Modified Date11/4/2021 7:28 PM
Attachment 
Files
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.