[cfe-dev] Debugging Clang with LLDB

Jan Svoboda via cfe-dev cfe-dev at lists.llvm.org
Mon Mar 25 13:13:22 PDT 2019


The `argv.size()` expression doesn't crash with SIGSEGV when used directly
in the Clang binary though, only when evaluated in LLDB.
I'm running x64 Linux (Ubuntu 18.04) and compiled the binary in debug mode
using Clang, LLD, libc++ (all in version 8.0.0) installed from the official
APT repository.

On Mon, 25 Mar 2019 at 20:56, Adrian Prantl <aprantl at apple.com> wrote:

>
>
> > On Mar 25, 2019, at 6:08 AM, Jan Svoboda via cfe-dev <
> cfe-dev at lists.llvm.org> wrote:
> >
> > Hi,
> > I'm trying to use LLDB to debug Clang built with the LLVM toolchain.
> >
> > However, whenever I try to evaluate a method call in the debugger,
> > I get the following error instead of the actual result:
> >
> > error: Execution was interrupted,
> > reason: signal SIGSEGV: invalid address (fault address: 0x0).
> >
> > (See the full output below.)
> >
> > What am I doing wrong? GDB works fine in this scenario. LLDB works
> > fine with other projects I have on hand. Any help appreciated.
> >
> > Thanks,
> > Jan
> >
> > --
> >
> > $ lldb-8 ./llvm-project/build/bin/clang
> > (lldb) target create "./llvm-project/build/bin/clang"
> > Current executable set to './llvm-project/build/bin/clang' (x86_64).
> > (lldb) b main
> > Breakpoint 1: where = clang`main + 25 at driver.cpp:322:18, address =
> 0x00000000043142d9
> > (lldb) r
> > Process 4920 launched: '/home/jan/Code/llvm-project/build/bin/clang'
> (x86_64)
> > Process 4920 stopped
> > * thread #1, name = 'clang', stop reason = breakpoint 1.1
> >     frame #0: 0x00000000043142d9 clang`main(argc_=1,
> argv_=0x00007fffffffdf28) at driver.cpp:322:18
> >    319     }
> >    320
> >    321     int main(int argc_, const char **argv_) {
> > -> 322       llvm::InitLLVM X(argc_, argv_);
> >    323       SmallVector<const char *, 256> argv(argv_, argv_ + argc_);
> >    324
> >    325       if (llvm::sys::Process::FixupStandardFileDescriptors())
> > (lldb) n
> > Process 4920 stopped
> > * thread #1, name = 'clang', stop reason = step over
> >     frame #0: 0x00000000043142ed clang`main(argc_=1,
> argv_=0x00007fffffffdf28) at driver.cpp:323:39
> >    320
> >    321     int main(int argc_, const char **argv_) {
> >    322       llvm::InitLLVM X(argc_, argv_);
> > -> 323       SmallVector<const char *, 256> argv(argv_, argv_ + argc_);
> >    324
> >    325       if (llvm::sys::Process::FixupStandardFileDescriptors())
> >    326         return 1;
> > (lldb) n
> > Process 4920 stopped
> > * thread #1, name = 'clang', stop reason = step over
> >     frame #0: 0x000000000431430c clang`main(argc_=1,
> argv_=0x00007fffffffdf28) at driver.cpp:325:7
> >    322       llvm::InitLLVM X(argc_, argv_);
> >    323       SmallVector<const char *, 256> argv(argv_, argv_ + argc_);
> >    324
> > -> 325       if (llvm::sys::Process::FixupStandardFileDescriptors())
> >    326         return 1;
> >    327
> >    328       llvm::InitializeAllTargets();
> > (lldb) e argv
> > (llvm::SmallVector<const char *, 256>) $0 = {
> >   llvm::SmallVectorImpl<const char *> = {
> >     llvm::SmallVectorTemplateBase<const char *, true> = {
> >       llvm::SmallVectorTemplateCommon<const char *> = {
> >         llvm::SmallVectorBase = (BeginX = 0x00007fffffffd598, Size = 1,
> Capacity = 256)
> >       }
> >     }
> >   }
> >   llvm::SmallVectorStorage<const char *, 256> = {
> >     InlineElts = {
> >       ... // actual elements here
> >     }
> >   }
> > }
> > (lldb) e argv.size()
> > error: Execution was interrupted, reason: signal SIGSEGV: invalid
> address (fault address: 0x0).
> > The process has been returned to the state before expression evaluation.
> > (lldb)
>
> This error message indicates that the expression you compiled
> "argv.size()" crashed with a SIGSEV. If this is unoptimized code this looks
> like it could be a bug in LLDB. What OS are you using and what compiler did
> you compile clang with?
>
> -- adrian
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20190325/7d32cc57/attachment.html>


More information about the cfe-dev mailing list