[lldb-dev] Using LLDB API on windows

Russell Greene via lldb-dev lldb-dev at lists.llvm.org
Mon Apr 3 20:21:41 PDT 2017


Ooh, I'd definitely be interested.

Sounds like a very fun project.

I'll have to familiarize myself with the internals (I'm currently learning
the API, which seems to resemble the internals moderately well...)

I'll start educating myself tomorrow morning when I wake.

-Russell

On Mon, Apr 3, 2017, 9:00 PM Zachary Turner <zturner at google.com> wrote:

> As the person who added most of the support for debugging Windows
> executables, I can tell you that I never tested a MinGW executable (nor was
> it one of my original goals).  It doesn't entirely surprise me that things
> are behaving this way, but I'm not sure what the exact cause would be off
> the top of my head.  MinGW executables and msvc Win32 executables use an
> entirely different ABI, so I would exepct the non lldb-server path to be a
> little wonky since I always assumed MSVC ABI in my implementation.  On the
> other hand, as you said there is no lldb-server.
>
> If you're interested in digging into the source code and trying to add a
> patch for MinGW support, I can give you some pointers.
>
> On Mon, Apr 3, 2017 at 3:41 PM Russell Greene via lldb-dev <
> lldb-dev at lists.llvm.org> wrote:
>
> Also, forgot to include this part: it's pretty important:
>
> PS C:\Users\IEUser> C:\msys64\mingw64\bin\lldb.exe
> C:\msys64\home\IEUser\chigraph\build\bin\chi.exe
> (lldb) target create
> "C:\\msys64\\home\\IEUser\\chigraph\\build\\bin\\chi.exe"
> Current executable set to
> 'C:\msys64\home\IEUser\chigraph\build\bin\chi.exe' (x86_64).
> (lldb) target list
> Current targets:
> * target #0: C:\msys64\home\IEUser\chigraph\build\bin\chi.exe (
> arch=x86_64-pc-windows-msvc, platform=host )
> (lldb)  r
> error: process launch failed: unable to locate lldb-server
> (lldb)
>
>
> -Russell
>
> On Mon, Apr 3, 2017 at 4:39 PM Russell Greene <russellgreene8 at gmail.com>
> wrote:
>
> Interesting:
>
>
> PS C:\Users\IEUser> C:\msys64\mingw64\bin\lldb.exe
> C:\msys64\home\IEUser\chigraph\build\bin\chi.exe
> (lldb) target create
> "C:\\msys64\\home\\IEUser\\chigraph\\build\\bin\\chi.exe"
> Current executable set to
> 'C:\msys64\home\IEUser\chigraph\build\bin\chi.exe' (x86_64).
> (lldb) target list
> Current targets:
> * target #0: C:\msys64\home\IEUser\chigraph\build\bin\chi.exe (
> arch=x86_64-pc-windows-msvc, platform=host )
> (lldb)
>
>
> -Russell
>
>
> On Mon, Apr 3, 2017 at 10:54 AM Ted Woodward <ted.woodward at codeaurora.org>
> wrote:
>
> I wonder if lldb isn’t using the windows platform. In the lldb command
> line, load up your target, then type “target list”. I’d like to see what
> plaform it chose, and what the triple is.
>
>
>
> --
>
> Qualcomm Innovation Center, Inc.
>
> The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a
> Linux Foundation Collaborative Project
>
>
>
> *From:* Russell Greene [mailto:russellgreene8 at gmail.com]
> *Sent:* Monday, April 03, 2017 11:24 AM
> *To:* Ted Woodward <ted.woodward at codeaurora.org>; LLDB <
> lldb-dev at lists.llvm.org>
> *Subject:* Re: [lldb-dev] Using LLDB API on windows
>
>
>
> That makes sense, and I'm sure it works great when using MSVC as a
> compiler, but I think LLDB recognizes mingw as a unix compiler and tries to
> do GDBRemoteCommunication::StartDebugserverProcess when it should be doing
> PlatformWindows::DebugProcess.
>
>
>
> Not sure though. All I know is when I try to do a SBTarget::Launch on
> windows under mingw (msys2) it says cannot find lldb-server...
>
>
>
> -Russell
>
>
>
> On Mon, Apr 3, 2017 at 9:32 AM Ted Woodward <ted.woodward at codeaurora.org>
> wrote:
>
> Hi Russell,
>
>
>
> I assume you mean for SBTarget::Launch or LaunchSimple to launch a Windows
> application.
>
>
>
> The short answer is, this already works.
>
>
>
> SBTarget::Launch calls Target::Launch, which calls DebugProcess in the
> relevant platform. For cases where we use lldb-server, the platform make a
> call that eventually gets to
>  GDBRemoteCommunication::StartDebugserverProcess to start up lldb-server.
> On Windows, PlatformWindows::DebugProcess calls Process::Launch, which (on
> Windows) will do the correct thing to start up and connect to a Windows
> process.
>
>
>
> See PlatformWindows::DebugProcess in
> source\Plugins\Platform\Windows\PlatformWindows.cpp and
> ProcessLauncherWIndows::LaunchProcess in
> source\Host\windows\ProcessLauncherWindows.cpp .
>
>
>
> Ted
>
>
>
> --
>
> Qualcomm Innovation Center, Inc.
>
> The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a
> Linux Foundation Collaborative Project
>
>
>
> *From:* lldb-dev [mailto:lldb-dev-bounces at lists.llvm.org] *On Behalf Of *Russell
> Greene via lldb-dev
> *Sent:* Sunday, April 02, 2017 4:38 PM
> *To:* lldb-dev at lists.llvm.org
> *Subject:* [lldb-dev] Using LLDB API on windows
>
>
>
> Hey so I am developing a project using LLDB as a debugger and am looking
> to make it cross-platform.
>
>
>
> As I see it, the LLDB API boots up an instance of lldb-server, but
> lldb-server isn't available on windows. Is there a way to use the LLDB C++
> API on windows?
>
>
>
> On the status page <https://lldb.llvm.org/status.html> I see the lldb
> commandline tool is OK for windows, which uses the LLDB API, how is this
> achieved?
>
>
>
> -Russell
>
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20170404/c70abff0/attachment-0001.html>


More information about the lldb-dev mailing list