[lldb-dev] LLDB /w Windows and MinGW64

Eran Ifrah via lldb-dev lldb-dev at lists.llvm.org
Thu Mar 31 11:55:45 PDT 2016


Ping...

On Mon, Mar 28, 2016 at 10:19 PM, Eran Ifrah <eran.ifrah at gmail.com> wrote:

> Sorry, the current status is that lldb-server is no longer needed, however
> the debuggee process hangs and the lldb.exe is "froze" (i.e. it does not
> accept user input)
>
> Here is the backtrace: http://pastebin.com/mbLFgCA6
> I will try and get lldb built in debug mode for better debugging... but
> this will take sometime as the generated files are too large to written to
> the file system - (clang sources)
>
> I will teak the CMakeLists.txt files to fix this and will report back
> In the meantime, if you have any more hints/tips - I will be happy to try
> them here
>
>
> Thanks
>
>
>
> On Mon, Mar 28, 2016 at 10:13 PM, Eran Ifrah <eran.ifrah at gmail.com> wrote:
>
>> I was able to locate the problematic
>> code: ProcessWindowsLive::Initialize() was not called due to wrong macros
>> http://reviews.llvm.org/D18520
>>
>>
>> On Mon, Mar 28, 2016 at 9:31 PM, Eran Ifrah <eran.ifrah at gmail.com> wrote:
>>
>>> Done.
>>>
>>> http://reviews.llvm.org/D18519
>>>
>>>
>>> On Mon, Mar 28, 2016 at 9:28 PM, Zachary Turner <zturner at google.com>
>>> wrote:
>>>
>>>> Almost, there's one more step.  Click Create a New Revision on that
>>>> screen, then give it a title and a description.  For reviewers put zturner,
>>>> and for subscribers put lldb-commits
>>>>
>>>> On Mon, Mar 28, 2016 at 11:20 AM Eran Ifrah <eran.ifrah at gmail.com>
>>>> wrote:
>>>>
>>>>> Is this what you meant:
>>>>> http://reviews.llvm.org/differential/diff/51809/
>>>>>
>>>>> Thanks
>>>>>
>>>>> On Mon, Mar 28, 2016 at 8:58 PM, Zachary Turner <zturner at google.com>
>>>>> wrote:
>>>>>
>>>>>> For the patch, can you create an account on reviews.llvm.org, and
>>>>>> upload your patch there?  This makes interactive reviewing / commenting
>>>>>> much easier.  Let me know if you need help getting that set up.
>>>>>>
>>>>>> On Mon, Mar 28, 2016 at 10:58 AM Zachary Turner <zturner at google.com>
>>>>>> wrote:
>>>>>>
>>>>>>> If you compile with MSVC or Clang-cl it wouldn't ask for
>>>>>>> lldb-server.  So most likely there is some code that is using #if
>>>>>>> defined(_MSC_VER) when it should be using #if defined(LLVM_ON_WINDOWS).
>>>>>>>
>>>>>>> You'll have to hunt that down, but a good starting point might be to
>>>>>>> put a breakpoint in ProcessWindowsLive::CreateInstance and then work
>>>>>>> backwards to see why that isn't getting called (assuming it's not).
>>>>>>>
>>>>>>> On Mon, Mar 28, 2016 at 9:05 AM Eran Ifrah <eran.ifrah at gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> On Mon, Mar 28, 2016 at 6:56 PM, Zachary Turner <zturner at google.com
>>>>>>>> > wrote:
>>>>>>>>
>>>>>>>>> Patches welcome. If you can split it into independent pieces that
>>>>>>>>> would be helpful, but it's not always possible.
>>>>>>>>>
>>>>>>>>> Patch is attached, I think you will find it quite straight forward
>>>>>>>> - feel free to comment and send it back for revise
>>>>>>>>>>>>>>>>
>>>>>>>>
>>>>>>>>> The NativeProcessProtocol error, that's the interface that
>>>>>>>>> converts debugging events that occur on the inferior into packets that can
>>>>>>>>> be sent to the server, and vice versa. Since Windows doesn't currently use
>>>>>>>>> lldb server, this piece has never been written for Windows
>>>>>>>>
>>>>>>>> ​So this raises the question: how come lldb asks for it? (see my
>>>>>>>> first emai inl this conversation)
>>>>>>>> I would have build LLDB in debug mode, but it seems that MinGW
>>>>>>>> as.exe fails to write some of the files "File too big"
>>>>>>>>>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Mon, Mar 28, 2016 at 8:41 AM Eran Ifrah <eran.ifrah at gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> On Mon, Mar 28, 2016 at 6:10 PM, Zachary Turner <
>>>>>>>>>> zturner at google.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> I'm the main Windows maintainer,
>>>>>>>>>>
>>>>>>>>>> Hi
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> and while We've gotten things working pretty well on Windows,
>>>>>>>>>>> our effort has been 100% on building with msvc and/or clang-cl. Building
>>>>>>>>>>> with mingw has a different set of pre processor defines and some other
>>>>>>>>>>> subtle differences, so it doesn't surprise me that things don't work quite
>>>>>>>>>>> right.
>>>>>>>>>>>
>>>>>>>>>>> ​I got it to compile (I have a big patch that I can send you if
>>>>>>>>>> you are interested)
>>>>>>>>>> mainly involves blocking code under __MINGW32__ and some updates
>>>>>>>>>> to the various CMakeLists.txt and AddLLDB.cmake module files
>>>>>>>>>> Some functions are missing in MinGW implementations (like gets_s
>>>>>>>>>> and others :/)
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> You can try getting lldb-server to build and run under Windows,
>>>>>>>>>>> or you can try to get it to use the non lldb server codepath on MinGW, but
>>>>>>>>>>> you may still run into some
>>>>>>>>>>
>>>>>>>>>> ​I got lldb-server to compile and run on Windows, however, it
>>>>>>>>>> crashes immediately and the backtrace shows this:
>>>>>>>>>>
>>>>>>>>>> 0  0x0000000000724615
>>>>>>>>>>  lldb_private::NativeProcessProtocol::Launch(lldb_private::ProcessLaunchInfo&,
>>>>>>>>>> lldb_private::NativeProcessProtocol::NativeDelegate&,
>>>>>>>>>> lldb_private::MainLoopBase&,
>>>>>>>>>> std::shared_ptr<lldb_private::NativeProcessProtocol>&)
>>>>>>>>>> 1  0x00000000005f815d
>>>>>>>>>>  lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::LaunchProcess()
>>>>>>>>>>
>>>>>>>>>> 2  0x00000000004020e5
>>>>>>>>>>  handle_launch(lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS&,
>>>>>>>>>> int, char const* const*)
>>>>>>>>>> 3  0x000000000040335e  main_gdbserver(int, char**)
>>>>>>>>>> 4  0x000000000188329c  main
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> I had to #ifndef __MINGW32__ around lldb-platform.cpp as it
>>>>>>>>>> contains too much Linux code that can not be compiled under Windows (fork,
>>>>>>>>>> exec*)
>>>>>>>>>> and basically lldb-server calls the main_gdbserver instead of
>>>>>>>>>> main_platform function
>>>>>>>>>>
>>>>>>>>>> ​Looking at the function that crashes, I see this:
>>>>>>>>>>
>>>>>>>>>> llvm_unreachable("Platform has no NativeProcessProtocol support");
>>>>>>>>>>
>>>>>>>>>> Any ideas?
>>>>>>>>>> Thanks!
>>>>>>>>>>
>>>>>>>>>> issues after that as well, since you're the first person afaik to
>>>>>>>>>>> try building with MinGW
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> On Sun, Mar 27, 2016 at 10:29 PM Eran Ifrah via lldb-dev <
>>>>>>>>>>> lldb-dev at lists.llvm.org> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi,
>>>>>>>>>>>>
>>>>>>>>>>>> I have built LLDB on Windows 7 using MinGW64/4.9.2 (took some
>>>>>>>>>>>> effort to get the job done...)
>>>>>>>>>>>> When I tried to debug a simple hello world executable, I get
>>>>>>>>>>>> this output:
>>>>>>>>>>>>
>>>>>>>>>>>> D:\software\msys-for-clang\1.0\home\PC\build-release-64-lldb\bin>lldb.exe
>>>>>>>>>>>> HelloWorld.exe
>>>>>>>>>>>> (lldb) target create "HelloWorld.exe"
>>>>>>>>>>>> Current executable set to 'HelloWorld.exe' (x86_64).
>>>>>>>>>>>> (lldb) b main.cpp:7
>>>>>>>>>>>> Breakpoint 1: where = HelloWorld.exe`main + 26 at main.cpp:7,
>>>>>>>>>>>> address = 0x000000000040154a
>>>>>>>>>>>> (lldb) r
>>>>>>>>>>>> error: process launch failed: unable to locate lldb-server
>>>>>>>>>>>> (lldb)
>>>>>>>>>>>>
>>>>>>>>>>>> I can't seem to locate lldb-server anywhere, and according
>>>>>>>>>>>> to LLDBConfig.cmake, this target should not get built on Windows:
>>>>>>>>>>>>
>>>>>>>>>>>> # Figure out if lldb could use lldb-server.  If so, then we'll
>>>>>>>>>>>> # ensure we build lldb-server when an lldb target is being
>>>>>>>>>>>> built.
>>>>>>>>>>>> if ((CMAKE_SYSTEM_NAME MATCHES "Darwin") OR
>>>>>>>>>>>>     (CMAKE_SYSTEM_NAME MATCHES "FreeBSD") OR
>>>>>>>>>>>>     (CMAKE_SYSTEM_NAME MATCHES "Linux") OR
>>>>>>>>>>>>     (CMAKE_SYSTEM_NAME MATCHES "NetBSD"))
>>>>>>>>>>>>     set(LLDB_CAN_USE_LLDB_SERVER 1)
>>>>>>>>>>>> else()
>>>>>>>>>>>>     set(LLDB_CAN_USE_LLDB_SERVER 0)
>>>>>>>>>>>> endif()
>>>>>>>>>>>>
>>>>>>>>>>>> and in the tools/CMakeLists.txt file we have this:
>>>>>>>>>>>>
>>>>>>>>>>>> if (LLDB_CAN_USE_LLDB_SERVER)
>>>>>>>>>>>>   add_subdirectory(lldb-server)
>>>>>>>>>>>> endif()
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Any ideas?
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Eran Ifrah,
>>>>>>>>>>>> Author of
>>>>>>>>>>>> ​CodeLite
>>>>>>>>>>>> , a cross platform open source C/C++ IDE:
>>>>>>>>>>>> http://www.codelite.org
>>>>>>>>>>>> CodeLite IDE Blog: http://codeliteide.blogspot.com/
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> lldb-dev mailing list
>>>>>>>>>>>> lldb-dev at lists.llvm.org
>>>>>>>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Eran Ifrah,
>>>>>>>>>> Author of codelite, a cross platform open source C/C++ IDE:
>>>>>>>>>> http://www.codelite.org
>>>>>>>>>> CodeLite IDE Blog: http://codeliteide.blogspot.com/
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Eran Ifrah,
>>>>>>>> Author of codelite, a cross platform open source C/C++ IDE:
>>>>>>>> http://www.codelite.org
>>>>>>>> CodeLite IDE Blog: http://codeliteide.blogspot.com/
>>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Eran Ifrah,
>>>>> Author of codelite, a cross platform open source C/C++ IDE:
>>>>> http://www.codelite.org
>>>>> CodeLite IDE Blog: http://codeliteide.blogspot.com/
>>>>>
>>>>
>>>
>>>
>>> --
>>> Eran Ifrah,
>>> Author of codelite, a cross platform open source C/C++ IDE:
>>> http://www.codelite.org
>>> CodeLite IDE Blog: http://codeliteide.blogspot.com/
>>>
>>
>>
>>
>> --
>> Eran Ifrah,
>> Author of codelite, a cross platform open source C/C++ IDE:
>> http://www.codelite.org
>> CodeLite IDE Blog: http://codeliteide.blogspot.com/
>>
>
>
>
> --
> Eran Ifrah,
> Author of codelite, a cross platform open source C/C++ IDE:
> http://www.codelite.org
> CodeLite IDE Blog: http://codeliteide.blogspot.com/
>



-- 
Eran Ifrah,
Author of codelite, a cross platform open source C/C++ IDE:
http://www.codelite.org
CodeLite IDE Blog: http://codeliteide.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20160331/936133ab/attachment-0001.html>


More information about the lldb-dev mailing list