I am wondering what the diffrence between “public symbols” and “private
symbols” is. I suppose “public symbols” refers to the .pdb file generated by
“checked build”, and “private symbols” refers to the .pdb file generated by
“free build”.
No. Public and private apply to both types of builds. Internally, a
pdb’s symbols can be marked as public. There is a Microsoft tool, the
name of which I do not recall, which strips all symbols not marked
public, that is, private, from the pdb. Usually, this is done before a
release, as is the case with basically everything (with the notable
mistake of the 5270 beta of Vista) that exists on http://msdl.microsoft.com/download/symbols. That is, the symbol files
for Windows only contain public symbols. If this step isn’t performed,
any symbol file generated by CL/ML will contain both types. As to what
exactly becomes public v. private, I don’t recall exactly, except that
globals and file scope symbols are public, and locals are an example of
private symbols.
Hope this helps,
mm
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of John Smith
Sent: Thursday, August 30, 2007 07:19
To: Kernel Debugging Interest List
Subject: [windbg] What is the difference between “public symbols” and
“private symbols”?
Hello all,
I am wondering what the diffrence between “public symbols” and “private
symbols” is. I suppose “public symbols” refers to the .pdb file
generated by
“checked build”, and “private symbols” refers to the .pdb file generated
by
“free build”.
Private symbols have all information in them for the debugger to resolve data (local variables, structure type information, functions, source file name/line info, etc).
Public symbols are essentially stripped versions of private symbols. Usually just contain the function info so that stack traces work, and sometimes limited type information is in so that debugger extensions can work.
To make the post complete, there’s also export symbols. These are the symbols that are contained inside the binary, so you have these without a .pdb. They contain the public/exported function names.
Jason
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of John Smith
Sent: Thursday, August 30, 2007 4:19 AM
To: Kernel Debugging Interest List
Subject: [windbg] What is the difference between “public symbols” and “private symbols”?
Hello all,
I am wondering what the diffrence between “public symbols” and “private
symbols” is. I suppose “public symbols” refers to the .pdb file generated by
“checked build”, and “private symbols” refers to the .pdb file generated by
“free build”.
On 8/30/07, Martin O’Brien wrote: > There is a Microsoft tool, the > name of which I do not recall, which strips all symbols not marked > public, that is, private, from the pdb.
binplace.exe also comes in ddk or wdk whereby you can make a public pdb yourself of your executables
“raj_r” xxxxx@windbg… > On 8/30/07, Martin O’Brien wrote: >> There is a Microsoft tool, the >> name of which I do not recall, which strips all symbols not marked >> public, that is, private, from the pdb. > > binplace.exe also comes in ddk or wdk whereby you can make a public > pdb yourself of your executables >