From 3c59ba60f07f3d6218ee65057d1952b7322a7fab Mon Sep 17 00:00:00 2001 From: Quintus Marais Date: Fri, 23 Jun 2017 14:16:39 +0200 Subject: [PATCH] Update README Fixed a number of small language errors --- README.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 7107811..7099f06 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,9 @@ This repo contains information from Microsoft about the PDB (Program Database) The intent here is to provide code that will show all the binary level formats and simple tools that can use the pdb. -Simply put ...We will make best efforts to role this foward with the new compilers and tools that we ship every release. We will continue to innovate and change binary API's and ABI's for all the Microsoft platforms and we will try to include the community by keeping this PDB repo in synch with the latest retail products (compilers,linkers,debuggers) just shipped. +Simply put ...We will make best efforts to roll this forward with the new compilers and tools that we ship every release. We will continue to innovate and change binary API's and ABI's for all the Microsoft platforms and we will try to include the community by keeping this PDB repo in synch with the latest retail products (compilers,linkers,debuggers) just shipped. -By publishing this source code, we are by passing the publically documented API we provided for only reading a PDB - that was DIA +By publishing this source code, we are bypassing the publicly documented API we provided for only reading a PDB - that was DIA https://msdn.microsoft.com/en-us/library/x93ctkx8.aspx With this information we are now building the information for other compilers (and tools) to efficiently write a PDB. @@ -30,17 +30,16 @@ Important points: • Mscorpdb.dll is what our linker and compiler uses to create PDB files. • Mscorpdb.dll implements the “stream” abstractions. -Also there is another file that we ship that should allow you to determine whether you have correctly produced an “empty” PDB which contains the minimal encoding to let another tool open and correctly parse that “empty” file. “Empty” really meaning a properl -y formated file where the sections contain the correct information to indicate zero records or symbols are present +Also, there is another file that we ship that should allow you to determine whether you have correctly produced an “empty” PDB which contains the minimal encoding to let another tool open and correctly parse that “empty” file. “Empty” really meaning a properly formatted file where the sections contain the correct information to indicate zero records or symbols are present A tool that I thought we also ship that would easily verify your “empty” PDB file is dia2dump.exe So in summary, by using the externally defined function entry points in pdb.h you can call into mscorpdb.dll. ##What is a PDB -PDBs are files with multiple ‘streams’ of information in them. You can almost assume each stream as an individual file, except that storing them as individual files is wasteful and inconvenient, hence this multiple streams approach. PDB streams are not NTFS streams though. They can be implemented as NTFS streams, but since they are to be made available on Win9X as well, they use a home brewed implementation. The implementation allows a primitive form of two-phase commit protocol. The writers of PDB files write what ever they want to in PDBs, but it won’t be committed until an explicit commit is issued. This allows the clients quite a bit of flexibility - say for example, a compiler can keep on writing information, and just not commit it, if it encounters an error in users’ source code. +PDBs are files with multiple ‘streams’ of information in them. You can almost assume each stream as an individual file, except that storing them as individual files is wasteful and inconvenient, hence this multiple streams approach. PDB streams are not NTFS streams though. They can be implemented as NTFS streams, but since they are to be made available on Win9X as well, they use a home brewed implementation. The implementation allows a primitive form of two-phase commit protocol. The writers of PDB files write whatever they want to in PDBs, but it won’t be committed until an explicit commit is issued. This allows the clients quite a bit of flexibility - say for example, a compiler can keep on writing information, and just not commit it, if it encounters an error in users’ source code. -Each stream is identified with a unique stream number and an optional name. In a nutshell here’s how the PDB looks like - +Each stream is identified with a unique stream number and an optional name. In a nutshell, here’s what the PDB looks like - | Stream No. | Contents |Short Description |--------------|---------------------------------|-------------------