[cfe-dev] Debugging Clang with LLDB

Jan Svoboda via cfe-dev cfe-dev at lists.llvm.org
Mon Mar 25 06:08:10 PDT 2019


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)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20190325/c552c386/attachment.html>


More information about the cfe-dev mailing list