[LLVMdev] Debugging using gdb

Ben Perry pianoman at udel.edu
Sat Apr 24 16:07:25 PDT 2010


For what it's worth, I develop using Eclipse - it has a superb GUI around
gdb.  The trick to debugging a custom compiler pass in Eclipse is putting a
break in PassManager::run and disabling / re-enabling one of the breakpoints
in your pass after you launch the debugger.  

 

-ben

 

 

--

"Believe you can, believe you can't; either way you're right."  -Henry Ford

 

From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On
Behalf Of Pranav Garg
Sent: Tuesday, April 20, 2010 12:16 AM
To: John Criswell
Cc: llvmdev at cs.uiuc.edu
Subject: Re: [LLVMdev] Debugging using gdb

 

Hi John,

Yes, it was the problem of the namespace. Sorry for bugging for such a silly
mistake.

Thanks
Pranav

On Mon, Apr 19, 2010 at 9:33 AM, John Criswell <criswell at uiuc.edu> wrote:

Pranav Garg wrote:

Hi,

I am trying to debug my llvm pass called -aa-eval-garg11 using gdb. However
I am not able to establish a breakpoint in any function of my pass. I have
compiled my
pass with a debug build and I have also compiled the input file (using
llvm-gcc) with the -g flag. Given below is the exact output.


(gdb) break llvm::PassManager::run
Breakpoint 1 at 0x86be87c: file
/home/engr/cs426/llvm/llvm-2.6/lib/VMCore/PassManager.cpp, line 1558.
(gdb) run pointer.bc -load ../Debug/lib/libMP1.so -basicaa -aa-eval-garg11
Starting program: /home/engr/cs426/llvm/llvm-2.6-x86/Debug/bin/opt
pointer.bc -load ../Debug/lib/libMP1.so -basicaa -aa-eval-garg11
[Thread debugging using libthread_db enabled]

Breakpoint 1, llvm::PassManager::run (this=0xbfffe6f0, M=...) at
/home/engr/cs426/llvm/llvm-2.6/lib/VMCore/PassManager.cpp:1558
1558      return PM->run(M);
(gdb) break llvm::AAEvalTemp::PointsToFunc
Can't find member of namespace, class, struct, or union named
"llvm::AAEvalTemp::PointsToFunc"
Hint: try 'llvm::AAEvalTemp::PointsToFunc<TAB> or
'llvm::AAEvalTemp::PointsToFunc<ESC-?>
(Note leading single quote.)
Make breakpoint pending on future shared library load? (y or [n]) n


Is there some clear mistake in my way of using the gdb ?

 

Are you sure that your pass is declared within the llvm namespace?  Use the
nm program on libMP1.so to see if AAEvalTemp::PointsToFunc is declared in
the llvm namespace or not.  Note: you may need to pipe the output of nm
through c++filt to get readable results.

-- John T.


Thanks.
Pranav

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100424/e074446e/attachment.html>


More information about the llvm-dev mailing list