[lldb-dev] Where is lldb.py?

Greg Clayton gclayton at apple.com
Wed Jul 2 14:20:52 PDT 2014


Following up on pipe support for windows, I added a host layer which should improve things on windows. Please test the changes and make them work if I didn't catch everything as I can't build on windows, but tried to get everything right. The commit was:

% svn commit
Sending        include/lldb/Core/ConnectionFileDescriptor.h
Adding         include/lldb/Host/Pipe.h
Sending        lldb.xcodeproj/project.pbxproj
Sending        source/Core/ConnectionFileDescriptor.cpp
Sending        source/Host/common/CMakeLists.txt
Adding         source/Host/common/Pipe.cpp
Sending        source/Interpreter/ScriptInterpreterPython.cpp
Sending        source/Target/Process.cpp
Transmitting file data ........
Committed revision 212220.


> On Jul 2, 2014, at 1:23 PM, Zachary Turner <zturner at google.com> wrote:
> 
> Ahh, yea that was it.  Strange, I actually did a recursive file search from the root and it didn't find anything.
> 
> 
> On Wed, Jul 2, 2014 at 1:21 PM, Deepak Panickal <deepak at codeplay.com> wrote:
> The LLDB python package is created within the build directory.
> Assuming it's a debug build, could you check llvm/build/Debug/lib/site-packages?
> 
> 
> On 02/07/2014 21:19, Zachary Turner wrote:
>> So it seems something is still wrong.  I'm generating the build files with this command:
>> 
>> cmake -G Ninja -DLLDB_DISABLE_PYTHON=0 -DPYTHON_INCLUDE_DIR=c:\Python27\include -DPYTHON_LIBRARY=C:\Python27\libs\python27.lib ..\..
>> 
>> (I have the patch I posted in the other thread applied, so LLDB_DISABLE_PYTHON=0 implies LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION=1)
>> 
>> I successfully run a build, and after the build I observe the following:
>> 
>> 1) LLDBWrapPython.cpp and lldb.py are in llvm/build/ninja/tools/lldb/scripts
>> 
>> 2) There is no _lldb.pyd anywhere.
>> 
>> 3) My Python is installed in C:\Python27, and C:\Python27\Lib\site-packages is empty.
>> 
>> #2 and #3 seem like an error, am I doing something wrong in my build?
>> 
>> 
>> On Wed, Jul 2, 2014 at 12:27 PM, Deepak Panickal <deepak at codeplay.com> wrote:
>> That problem is due to PYTHONPATH not being exported to the location where the python packages are built.
>> Similar to Linux, you have to export PYTHONPATH to build_dir/lib/site-packages/python.
>> The _lldb.pyd file symlinks to liblldb.dll on Windows.
>> 
>> Regardles, you would still get an error on the command-line due to the missing python termios module on Windows.
>> In ScriptInterpreterPython.cpp:2628, the termios module is imported, which would fail immediately.
>> 
>>  
>> PyRun_SimpleString
>> 
>>                         
>> (
>> "sys.dont_write_bytecode
>> 
>>                           = 1; import lldb.embedded_interpreter; from
>>                           lldb.embedded_interpreter import
>>                           run_python_interpreter; from
>>                           lldb.embedded_interpreter import run_one_line;
>>                           from termios import *"
>> ); 
>> 
>> We have yet to solve this dependency on Windows.
>> However, we can use the API directly for now.
>> 
>> AFAIK, these modules are only used for the command-line interpreter, so does not affect using the API directly.
>> If we comment out these out, we can run the examples in lldb/examples/python/, such as globals.py to load an ELF file and dump the globals using the Python API on Windows.
>> 
>> Thanks,
>> Deepak
>> 
>> 
>> On 02/07/2014 19:48, Zachary Turner wrote:
>>> One more problem.  Compiled successfully, and ran LLDB.  Upon startup I get this warning:
>>> 
>>> Traceback (most recent call last):
>>>   File "<string>", line 1, in <module>
>>> ImportError: No module named lldb.embedded_interpreter
>>> (lldb)
>>> 
>>> So something is wrong there.  Typing "script" with no arguments gives this:
>>> 
>>> Traceback (most recent call last):
>>>   File "<string>", line 1, in <module>
>>> NameError: name 'run_one_line' is not defined
>>> Traceback (most recent call last):
>>>   File "<string>", line 1, in <module>
>>> NameError: name 'run_one_line' is not defined
>>> Traceback (most recent call last):
>>>   File "<string>", line 1, in <module>
>>> NameError: name 'run_one_line' is not defined
>>> Traceback (most recent call last):
>>>   File "<string>", line 1, in <module>
>>> NameError: name 'run_one_line' is not defined
>>> Traceback (most recent call last):
>>>   File "<string>", line 1, in <module>
>>> NameError: name 'run_one_line' is not defined
>>> 
>>> Just curious, what has been your use case for this so far?  Do you have it working on your end?  If so, what kind of things can you successfully do with it?
>>> 
>>> 
>>> On Tue, Jul 1, 2014 at 4:52 PM, Deepak Panickal <deepak at codeplay.com> wrote:
>>> Thanks, I'll look into the CMake warning.
>>> 
>>> For now, you have to enable the variable LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION specifically to use the new python scripts, when LLDB_DISABLE_PYTHON is disabled. 
>>> Which is why not using the variable would break the build on Windows. On Linux, it would work both ways.
>>> 
>>> I added this variable so that the new scripts can be tested without affecting normal builds on other platforms.
>>> Could you please try,
>>> cmake -DLLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION=1 -DLLDB_DISABLE_PYTHON=0 -DPYTHON_INCLUDE_DIR=c:\python27\include -DPYTHON_LIBRARY=C:\Python27\libs\python27.lib ..\..
>>> 
>>> Thanks,
>>> Deepak
>>> 
>>> 
>>> On 01/07/2014 23:56, Zachary Turner wrote:
>>>> Also getting the following error:
>>>> 
>>>> For reference, I ran cmake as 
>>>> 
>>>> cmake -DLLDB_DISABLE_PYTHON=0 -DPYTHON_INCLUDE_DIR=c:\python27\include -DPYTHON_LIBRARY=C:\Python27\libs\python27.lib ..\..
>>>> 
>>>> D:\src\llvm\build\ninja>ninja lldb
>>>> [88/433] Building lldb python wrapper
>>>> FAILED: cmd.exe /c cd /D D:\src\llvm\build\ninja\tools\lldb\scripts && env PYTHON_EXECUTABLE=C:/Python27/python.exe D:/src/llvm/tools/lldb/scripts/build-swig-wrapper-classes.sh D:/src/llvm/tools/lldb D:/src/llvm/build/ninja/tools/lldb/scripts D:/src/llvm/build/ninja/tools/lldb/scripts D:/src/llvm/bu
>>>> ild/ninja -m && env PYTHON_EXECUTABLE=C:/Python27/python.exe D:/src/llvm/tools/lldb/scripts/finish-swig-wrapper-classes.sh D:/src/llvm/tools/lldb D:/src/llvm/build/ninja/tools/lldb/scripts D:/src/llvm/build/ninja/tools/lldb/scripts D:/src/llvm/build/ninja -m
>>>> env: D:/src/llvm/tools/lldb/scripts/build-swig-wrapper-classes.sh: Exec format error
>>>> [88/433] Building CXX object tools\lldb\source\Plugins\Process\mach-core\CMakeFiles\lldbPluginProcessMachCore.dir\ProcessMachCore.cpp.obj
>>>> ninja: build stopped: subcommand failed.
>>>> 
>>>> 
>>>> 
>>>> On Tue, Jul 1, 2014 at 3:41 PM, Zachary Turner <zturner at google.com> wrote:
>>>> I get the following warning when running cmake with no special options passed via -D
>>>> 
>>>> CMake Warning (dev) at tools/lldb/CMakeLists.txt:234 (target_link_libraries):
>>>>   Policy CMP0023 is not set: Plain and keyword target_link_libraries
>>>>   signatures cannot be mixed.  Run "cmake --help-policy CMP0023" for policy
>>>>   details.  Use the cmake_policy command to set the policy and suppress this
>>>>   warning.
>>>> 
>>>>   The keyword signature for target_link_libraries has already been used with
>>>>   the target "liblldb".  All uses of target_link_libraries with a target
>>>>   should be either all-keyword or all-plain.
>>>> 
>>>>   The uses of the keyword signature are here:
>>>> 
>>>>    * cmake/modules/AddLLVM.cmake:331 (target_link_libraries)
>>>> 
>>>> Call Stack (most recent call first):
>>>>   tools/lldb/source/CMakeLists.txt:214 (add_lldb_library)
>>>> This warning is for project developers.  Use -Wno-dev to suppress it.
>>>> 
>>>> 
>>>> On Tue, Jul 1, 2014 at 10:54 AM, Deepak Panickal <deepak at codeplay.com> wrote:
>>>> Hi,
>>>> 
>>>> I'm planning to upstream the Windows Python API changes now. 
>>>> 
>>>> This has been done by completely rewriting the shell scripts used for the API generation in Python so that it's portable across different platforms. We have tested it on both Windows and Linux successfully. 
>>>> 
>>>> I have added a new CMake variable "LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION", to control if the new Python scripts for managing SWIG generating the API are enabled or not. This is disabled by default to not                                                       impact other platforms. This variable can be removed once we move all the platforms to the Python scripts from the shell scripts. There's some cleanup to be done, which I'll be working on.
>>>> 
>>>> Please let me know if there are any issues or comments.
>>>> 
>>>> Thanks,
>>>> Deepak
>>>> 
>>>> 
>>>> On 24/06/14 12:23, Deepak Panickal wrote:
>>>>> Yes, it was compiling with MSVC 2013. It hasn't been updated though since the review was submitted.
>>>>> We're working on it now, so should be fixed to current tip and upstreamed soon.
>>>>> 
>>>>> Thanks,
>>>>> Deepak
>>>>> 
>>>>> On 24/06/14 01:24, Zachary Turner wrote:
>>>>>> By the way, does this compile with MSVC 2013?  Many of the changes I had to make to get things compiling don't seem to be present in this patch.
>>>>>> 
>>>>>> 
>>>>>> On Mon, Jun 23, 2014 at 5:16 PM, Zachary Turner <zturner at google.com> wrote:
>>>>>> Interesting.  I had already made some progress towards this in my own branch, so I'll have a look.
>>>>>> 
>>>>>> BTW, I'm not sure what your solution was regarding the missing python modules, but the pexpect one in particualr is pretty trivial to fix.  Just change it to subprocess.run() and remove the import of pexpect.
>>>>>> 
>>>>>> 
>>>>>> On Mon, Jun 23, 2014 at 5:09 PM, Deepak Panickal <deepak at codeplay.com> wrote:
>>>>>> We have already ported the lldb.py generating scripts to Python for portability and got the API working in Windows and Linux.
>>>>>> We can load an ELF file, dump symbols, do remote debugging etc.
>>>>>> This work has been put into review sometime ago, so might need some updation.
>>>>>> 
>>>>>> http://reviews.llvm.org/D2980
>>>>>> 
>>>>>> We're planning to fix it up quite soon to match with the current tip.
>>>>>> 
>>>>>> Thanks,
>>>>>> Deepak
>>>>>> 
>>>>>> 
>>>>>> On 23/06/2014 22:09, Zachary Turner wrote:
>>>>>>> I'm already volunteering, just want to make sure it's ok before I do the work :)
>>>>>>> 
>>>>>>> That being said, Greg mentions in an earlier message that it might not be possible because we wish to support a Python-less build.   Who uses this out of curiosity?  I don't think any Windows developers mind installing Python as a requirement.  It's also mentioned on the Building LLDB page (http://lldb.llvm.org/build.html) that Python is a dependency
>>>>>>> 
>>>>>>> 
>>>>>>> On Mon, Jun 23, 2014 at 2:07 PM, Todd Fiala <tfiala at google.com> wrote:
>>>>>>> You can volunteer to write it more portably ;-)
>>>>>>> 
>>>>>>> 
>>>>>>> On Mon, Jun 23, 2014 at 1:55 PM, Zachary Turner <zturner at google.com> wrote:
>>>>>>> Hmm, a shell script.  kind of a non-starter for Windows.  Any reason this can't be a python script?
>>>>>>> 
>>>>>>> 
>>>>>>> On Mon, Jun 23, 2014 at 1:52 PM, Greg Clayton <gclayton at apple.com> wrote:
>>>>>>> It is generated by running swig with many options. See:
>>>>>>> 
>>>>>>> lldb/scripts/build-swig-wrapper-classes.sh
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> > On Jun 23, 2014, at 1:41 PM, Zachary Turner <zturner at google.com> wrote:
>>>>>>> >
>>>>>>> > I'm trying to get the test suite into a working state on windows, or at the very least get it to the point where it fails by saying that none of the tests are supported on this platform.  I seem to be missing this file lldb.py though.  Is it supposed to be in the tree, or is it generated somehow?
>>>>>>> > _______________________________________________
>>>>>>> > 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
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> -- 
>>>>>>> Todd Fiala |	 Software Engineer |	 tfiala at google.com |	 650-943-3180
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> 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