[lldb-dev] lldb problems on linux

Kal Conley kcconley at gmail.com
Tue Aug 6 14:27:49 PDT 2013


Hi Andy,
So I figured out the python issue. Host::GetLLDBPath() is broken. It was
failing for me because I am building in Release mode. It only works in
Debug mode by luck :) The problem is lines 1035+ in
source/Host/common/Host.cpp. llvm::Twine should only be used for
temporary objects! See http://llvm.org/docs/ProgrammersManual.html#dss-twine

I have attached a patch this fixes the issue. I haven't found time to
investigate my other issue yet.

Thanks!
-Kal

Am 8/6/13 4:29 PM, schrieb Kaylor, Andrew:
>
> Hmm...  I've never seen the -P option print the wrong path.  Looking
> at the code (in Host::GetLLDBPath) it doesn't even look possible for
> it to print what you're seeing.
>
>  
>
> On the other hand, the second directory you mention should be the
> correct one.  If you set PYTHONPATH to that does "python -c 'import
> lldb'" work?
>
>  
>
> -Andy
>
>  
>
> *From:*Kal Conley [mailto:kcconley at gmail.com]
> *Sent:* Tuesday, August 06, 2013 2:00 AM
> *To:* Kaylor, Andrew
> *Cc:* lldb-dev at cs.uiuc.edu
> *Subject:* Re: [lldb-dev] lldb problems on linux
>
>  
>
> Hi Andy,
> I tried
> export PYTHONPATH=`$llvm/build/Debug+Asserts/bin/lldb -P`
> but it didn't work for me. If I run `build/bin/lldb -P` it outputs
> "build/lib7/site-packages" which doesn't exist.
> There is a directory build/lib/python-2.7/site-packages but if I set
> the PYTHONPATH to this directory I get the same errors.
>
> I can import lldb; in python successfully though.
>
> Any other ideas?
>
> -Kal
>
>  
>
> 2013/8/5 Kaylor, Andrew <andrew.kaylor at intel.com
> <mailto:andrew.kaylor at intel.com>>
>
> Hi Kal,
>
>  
>
> For the second problem, you need to set the PYTHONPATH environment
> variable.  Try this:
>
>  
>
> export PYTHONPATH=`$llvm/build/Debug+Asserts/bin/lldb -P`
>
>  
>
> Regarding the source information, I would start by using the following
> command within lldb (after you have created the target you want to debug):
>
>  
>
> target modules dump sections
>
>  
>
> If you don't see debug sections in that list, then that's the
> problem.  If you do, try enabling DWARF logging ('log enable dwarf
> all') and see if anything obvious turns up in the output when you try
> to set a breakpoint.
>
>  
>
> -Andy
>
>  
>
> *From:*lldb-dev-bounces at cs.uiuc.edu
> <mailto:lldb-dev-bounces at cs.uiuc.edu>
> [mailto:lldb-dev-bounces at cs.uiuc.edu
> <mailto:lldb-dev-bounces at cs.uiuc.edu>] *On Behalf Of *Kal Conley
> *Sent:* Sunday, August 04, 2013 11:27 AM
> *To:* lldb-dev at cs.uiuc.edu <mailto:lldb-dev at cs.uiuc.edu>
>
>
> *Subject:* [lldb-dev] lldb problems on linux
>
>  
>
> Hi,
>
> I recently build lldb from trunk (revision 187708) and source-level
> debugging isn't working for me. It seems its not loading any source
> information. What is the best way to troubleshoot this?
>
> Also make check-lldb doesn't work on Linux when building with CMake. I
> just get error:
>
> This script requires lldb.py to be in either
> /home/user/tools/llvm_3.4~svn187708/tools/lldb/build/Debug/LLDB.framework/Resources/Python,
> /home/user/tools/llvm_3.4~svn187708/tools/lldb/build/Release/LLDB.framework/Resources/Python,
> or
> /home/user/tools/llvm_3.4~svn187708/tools/lldb/build/BuildAndIntegration/LLDB.framework/Resources/Python
>
> I get the same error with lldb-3.3.
>
>  
>
> Thanks!
>
>  
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20130806/db496674/attachment.html>
-------------- next part --------------
Index: source/Host/common/Host.cpp
===================================================================
--- source/Host/common/Host.cpp	(revision 187708)
+++ source/Host/common/Host.cpp	(working copy)
@@ -53,9 +53,10 @@
 #include "lldb/Target/Process.h"
 #include "lldb/Target/TargetList.h"
 
+#include "llvm/ADT/SmallString.h"
 #include "llvm/Support/Host.h"
 #include "llvm/Support/MachO.h"
-#include "llvm/ADT/Twine.h"
+#include "llvm/Support/raw_ostream.h"
 
 
 
@@ -1031,17 +1032,15 @@
                         ::strncpy (framework_pos, "/Resources/Python", PATH_MAX - (framework_pos - raw_path));
                     }
 #else
-                    llvm::Twine python_version_dir;
-                    python_version_dir = "/python"
-                                       + llvm::Twine(PY_MAJOR_VERSION)
-                                       + "."
-                                       + llvm::Twine(PY_MINOR_VERSION)
-                                       + "/site-packages";
+                    llvm::SmallString<256> python_version_dir;
+                    llvm::raw_svector_ostream os(python_version_dir);
+                    os << "/python" << PY_MAJOR_VERSION << '.' << PY_MINOR_VERSION << "/site-packages";
+                    os.flush();
 
                     // We may get our string truncated. Should we protect
                     // this with an assert?
 
-                    ::strncat(raw_path, python_version_dir.str().c_str(),
+                    ::strncat(raw_path, python_version_dir.c_str(),
                               sizeof(raw_path) - strlen(raw_path) - 1);
 
 #endif


More information about the lldb-dev mailing list