<div dir="ltr">Hi,<div><br></div><div>I want to make a new symbol provider to teach LLDB to understand microsoft PDB files.  I've been looking over the various symbol APIs, and I have a few questions.  </div><div><br></div><div>1. Under what circumstances do I need a custom SymbolVendor?  The way pdb works is that generally there is 1 file that contains all the debug info needed for a single binary (so or executable).  Given a list of paths, we can then determine if there is a matching PDB in one of those paths.  Is it better to do this in the CalculateAbilities() function of the symbol file plugin (by just returning 0 if we don't find a match) or do we need to do something more complicated?</div><div><br></div><div>2. Why is there a function called ParseCompileUnitLanguage?  The CompileUnit class already stores the language when ParseCompileUnit is called, and ParseCompileUnitLanguage is implemented by just getting that value out.  What is the poitn of this function?</div><div><br></div><div>3. There's a function called ParseCompileUnitDebugMacros.  Is this referring to C / C++ macros?  Like #define FOO 7?  What is that used for?  I don't believe info about preprocessor definitions are stored in PDB.  Is this going to cause problems?</div><div><br></div><div>4. ParseCompileUnitSupportFiles.  What are "support files"?  Given a file "foo.cpp" is this supposed to be header files etc?</div><div><br></div><div>5. ParseCompileUnitLineTable.  On the LineTable class you can add "line sequences" or individual entries.  What's the difference here?  Is there any disadvantage to adding every single line entry in the line table using the InsertLineEntry instead of building a line sequence and inserting the sequence?</div><div><br></div><div>I will probably have some more questions as I continue down this path.  For now I'm planning to implement the minimum amount of functionality required just to make LLDB locate and open a PDB for an executable without actually returning anything useful from it.  So when I start filling out types, functions, etc I may have some more questions.</div></div>