[lldb-dev] [LLVMdev] PDB support in LLVM

Mukul Sabharwal mjsabby at gmail.com
Tue Jul 21 11:11:11 PDT 2015


It is not restricted to mobile devices.

But as I said, the OP states he cares about using Visual Studio to
drive LLDB and not necessarily PDB output.

I was replying to that intent, didn't mean to confuse the thread about
PDB creation.

On Tue, Jul 21, 2015 at 11:02 AM, Zachary Turner <zturner at google.com> wrote:
> the lldb-mi plugin for Visual Studio they've announced only enables (afaik)
> debugging of mobile devices from within Visual Studio.  The code running on
> these mobile devices, however, was never compiled with MSVC to begin with,
> and thus does not have PDB debug information, it uses DWARF.  So it's kind
> of orthogonal to PDB and won't really help I think.
>
> On Tue, Jul 21, 2015 at 9:50 AM Mukul Sabharwal <mjsabby at gmail.com> wrote:
>>
>> Should have clarified, the OP mentions in the thread that they doesn't
>> specifically care about PDB generation as much as being able to use Visual
>> Studio with LLDB.
>>
>> On Tue, Jul 21, 2015 at 9:09 AM Jim Ingham <jingham at apple.com> wrote:
>>>
>>> I don't think MIEngine will help with support for the PDB debugging
>>> format.  It allows Visual Studio to use lldb to drive a Visual Studio
>>> debugging session, but in this mode all the symbol & debug reading work is
>>> off-loaded to lldb.
>>>
>>> It is possible to do a hybrid model where the low level debugger doesn't
>>> do symbol reading, and some other driver tells it "what it needs to know".
>>> For instance, this is the way the OS X port of MetroWerks' CodeWarrior was
>>> implemented.  But that was a real pain to support.  There are times
>>> particularly down in the bowels of the stepping machinery where you really
>>> need symbol information.  This never worked really well.
>>>
>>> Jim
>>>
>>>
>>> > On Jul 20, 2015, at 7:03 PM, Mukul Sabharwal <mjsabby at gmail.com> wrote:
>>> >
>>> > FYI if you're still looking, Microsoft published the source code for
>>> > the MIEngine that is essentially a Visual Studio Debugger Extension
>>> > that implements the Core Debug Interfaces
>>>
>>> > (https://msdn.microsoft.com/en-us/library/bb146305.aspx)
>>>
>>>
>>> >
>>> > It can talk to LLDB and GDB.
>>> >
>>>
>>> > https://github.com/Microsoft/MIEngine
>>>
>>>
>>> >
>>> > On Tue, Apr 7, 2015 at 11:02 AM, Greg Clayton <gclayton at apple.com>
>>> > wrote:
>>> >> There seems to be an DWARF to PDB converter here:
>>> >>
>>>
>>> >> https://github.com/rainers/cv2pdb
>>>
>>>
>>> >>
>>> >> Not sure how good it is or what the license looks like...
>>> >>
>>> >>> On Apr 7, 2015, at 10:19 AM, Colin Riley <colin at codeplay.com> wrote:
>>> >>>
>>> >>> I think that's what I used. Hence why I want lldb C# bindings! But
>>> >>> yeah. Horridly underdocumented.
>>> >>> From: Zachary Turner
>>> >>> Sent: ‎07/‎04/‎2015 18:10
>>> >>> To: Colin Riley; lldb-dev at cs.uiuc.edu
>>> >>> Subject: Re: [lldb-dev] [LLVMdev] PDB support in LLVM
>>> >>>
>>> >>> Btw the python tools project doesn't use Dbgeng extensibility model,
>>> >>> it's a newer richer extensibility framework that is even less documented
>>> >>> (most people probably wouldn't even know it exists) but much more powerful.
>>> >>> And it's all in managed code, so you get the c# stuff for free.
>>> >>>
>>> >>> But still, 4-5 weeks seems very aggressive
>>> >>> On Tue, Apr 7, 2015 at 9:48 AM Colin Riley <colin at codeplay.com>
>>> >>> wrote:
>>> >>> You could try extending the codeview and then relying on the ms
>>> >>> linker to emit a pdb from it (last time I checked it converts on the fly -
>>> >>> this may have changed recently, and what it converts may not be fully
>>> >>> featured).
>>> >>>
>>> >>> The Debug Engine extensibility for visual studio is, as Zach says,
>>> >>> not well documented at all. Despite that, in the past I have had LLDB
>>> >>> chatting in a limited way to visual studio. It was incredibly messy, and the
>>> >>> way I chose to do it was go from Visual Studio -> c# -> c++/CLI -> C++ lldb
>>> >>> api. Don't do it that way if you attempt it: Create lldb C# bindings instead
>>> >>> and go that direction. I've been looking at that lately but it's a side
>>> >>> project so cant be relied on if you need it quickly.
>>> >>>
>>> >>> As for the time frame, 4-5 weeks isn't going to get far given the
>>> >>> lack of documentation. The debug engine samples don't go far enough in terms
>>> >>> of requiring a native C++ environment.
>>> >>>
>>> >>> Colin
>>> >>>
>>> >>>
>>> >>> On 07/04/2015 17:25, Zachary Turner wrote:
>>> >>>> It sounds like if you have a time frame of 4-5 weeks, you've got a
>>> >>>> tall order cut out for yourself.  I don't want to say impossible, but...
>>> >>>> that's pretty rough.
>>> >>>>
>>> >>>> I think you've got two options:
>>> >>>> 1) Try to figure out how to emit PDB.  The format is undocumented,
>>> >>>> so you're kind of on your own here.
>>> >>>> 2) Try to figure out how to get Visual Studio to understand DWARF.
>>> >>>> Visual Studio has a reasonably rich extensibility model which is also not
>>> >>>> very well documented, so you're probably on your own here as well.  You may
>>> >>>> want to have a look at PythonTools for Visual Studio.  It's entirely open
>>> >>>> source and adds Python debugging to Visual Studio.  Obviously you don't need
>>> >>>> to be able to debug Python, but it's the best source of documentation I know
>>> >>>> of for extending Visual Studio in this kind of way so maybe it will help.
>>> >>>> If you end up doing this, it would be great if you could try to upstream it
>>> >>>> back to LLDB.  Visual Studio integration with LLDB would be nice to have.
>>> >>>>
>>> >>>> On Mon, Apr 6, 2015 at 5:02 PM Rohan Bajaj <rohanbajaj84 at gmail.com>
>>> >>>> wrote:
>>> >>>> Moving to lldb-dev per suggestion.
>>> >>>>
>>> >>>> Using Visual Studio is only criteria for us. It could be DWARF or
>>> >>>> PDB.
>>> >>>>
>>> >>>> But I need to implement this soon (4-5 weeks from now). What do you
>>> >>>> recommend?
>>> >>>>
>>> >>>> Zachary do you also suggest using LLDB on Windows?
>>> >>>>
>>> >>>>
>>> >>>> On Mon, Apr 6, 2015 at 4:35 PM, Zachary Turner <zturner at google.com>
>>> >>>> wrote:
>>> >>>>
>>> >>>>
>>> >>>> On Mon, Apr 6, 2015 at 4:16 PM Chandler Carruth
>>> >>>> <chandlerc at google.com> wrote:
>>> >>>> On Mon, Apr 6, 2015 at 3:46 PM Rohan Bajaj <rohanbajaj84 at gmail.com>
>>> >>>> wrote:
>>> >>>> Is making PDB files for corresponding IR supported in LLVM latest
>>> >>>> version?
>>> >>>>
>>> >>>> Not today.
>>> >>>>
>>> >>>>
>>> >>>> After some searching I see llvm-pdbdump, but I want to annotate the
>>> >>>> IR with debug information so that when I write bitcode it has pdb
>>> >>>> information.
>>> >>>>
>>> >>>> I've heard of CodeView, but it seems to be only for line
>>> >>>> information. I want variable values also.
>>> >>>>
>>> >>>> I would be ok to use DWARF if Visual Studio could understand it
>>> >>>> using LLDB but I don't know how to do that or if it is support.
>>> >>>>
>>> >>>> Zach (CC-ed) and others are actively working on making LLDB work
>>> >>>> well on Windows, including reading DWARF debug information on Windows and
>>> >>>> potentially integration with Visual Studio (although I think that is further
>>> >>>> away at the moment). However, further discussion might be better on the LLDB
>>> >>>> mailing lists.
>>> >>>>
>>> >>>> It's worth pointing out that CodeView is **not** only for line
>>> >>>> information. It's for everything.  It's just that LLVM currently only
>>> >>>> understands a subset of CodeView record types related to line information.
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>> _______________________________________________
>>> >>>> lldb-dev mailing list
>>> >>>>
>>> >>>> lldb-dev at cs.uiuc.edu
>>> >>>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>>> >>>
>>> >>> --
>>> >>> - Colin Riley
>>> >>> Senior Director,
>>> >>> Parallel/Graphics Debugger Systems
>>> >>>
>>> >>> _______________________________________________
>>> >>> lldb-dev mailing list
>>> >>> lldb-dev at cs.uiuc.edu
>>> >>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>>> >>> _______________________________________________
>>> >>> lldb-dev mailing list
>>> >>> lldb-dev at cs.uiuc.edu
>>> >>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> lldb-dev mailing list
>>> >> lldb-dev at cs.uiuc.edu
>>> >> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>>> >
>>> > _______________________________________________
>>> > lldb-dev mailing list
>>> > lldb-dev at cs.uiuc.edu
>>> > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>>>
>> _______________________________________________
>> lldb-dev mailing list
>> lldb-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev




More information about the lldb-dev mailing list