Is is wise to redistribute the pdb files along with a commercial application?
Occasionally, I\'m using the stack trace to get a more detailed error reporting logs fr
The managed .pdb files contain the following information:
Everything else is contained in the binary itself, including the names of all types, members and function arguments.
Source: PDB files: what every developer must know.
You could try using dia2dump to look at the contents.
The PDB-files also include all comments of your source files. So with EXE AND PDB-file it is possible to generate a 1:1-copy from your original source code.
Newer .Net compiler versions can embed the full source code with all comments in the PDB file.
The free JetBrains dotPeek decompiler uses this Blob to show the decompiled code. Check Assembly -> Metadata -> Portable PDB Metadata -> CustomDebugInformation -> Kind: guid 0003 0E8A571B-6926-466E-B4AD-8AB04611F5FE (Embedded Source).
This is documented here: https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/specs/PortablePdb-Metadata.md#EmbeddedSource
It basically adds information for:
which all combined makes reverse engineering very easy for native code.
Luckily you can create a stripped down version of your PDB files which only contains public information with /PDBSTRIPPED parameter.
Oh you edited to add C#/.NET, so I'm not sure if "PDBSTRIPPED" is applicable. However .NET applications are very easy to reverse engineer even without any symbol information. I wouldn't mind including them in a .NET project.