[lldb-dev] LLDB /w Windows and MinGW64

Eran Ifrah via lldb-dev lldb-dev at lists.llvm.org
Mon Mar 28 12:19:05 PDT 2016


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/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20160328/00b99e71/attachment-0001.html>


More information about the lldb-dev mailing list