[LLVMdev] debugging LLVM generated executables???
Chris Lattner
sabre at nondot.org
Wed May 7 11:49:27 PDT 2008
On Wed, 7 May 2008, Mark Oskin wrote:
> I could do that, but before I venture there, if I did that, could I
> have llvm-gcc produce native object files (not LLVM bytecode) that way
> (using my pass)? thanks, -Mark
Yes, of course. 'llvm-gcc -O0 -g foo.c -o foo.o -c' would compile to
native .o file using your pass.
-Chris
> On May 7, 2008, at 11:40 AM, Chris Lattner wrote:
>
>> On Wed, 7 May 2008, Mark Oskin wrote:
>>> Just re-sending this. Anyone have any suggestions on how to proceed
>>> with debugging LLVM produced executables? The problem appears to be
>>> register-allocated variables. Global variables and syntax lines do
>>> get symbols using the llc / as method I described below. -Mark
>>
>> Have you considered adding your pass to llvm-backend.cpp in
>> llvmgcc? This
>> would allow you to use llvm-gcc from the command line, without
>> having to
>> invoke individual tools directly.
>>
>> -Chris
>>
>>> On May 6, 2008, at 7:36 AM, Mark Oskin wrote:
>>>
>>>>
>>>>> I think you probably need to pass -O0 to llvm-ld. The link-time
>>>>> optimizations are probably killing your debug info.
>>>>>
>>>> No dice. Doing it this way makes gdb spew out this:
>>>>
>>>> warning: Could not find object file "/var/folders/cQ/cQ+L3+RP2RWOpE
>>>> +8ZNQdPU+++TI/-Tmp-//ccVljWhn.o" - no debug information available
>>>> for
>>>> "defs.h"
>>>>
>>>> And then no debug symbols are available.
>>>>
>>>> I also discovered a major down side to the "solution" I found last
>>>> night. While the line number data does get successfully transfered
>>>> into gdb, I cannot inspect any variables. Those appear to have been
>>>> lost.
>>>>
>>>> Any other suggestions out there?
>>>>
>>>> thanks!
>>>>
>>>> -mark
>>>>
>>>>> --Owen
>>>>>
>>>>> On May 5, 2008, at 8:21 PM, Mark Oskin wrote:
>>>>>
>>>>>> Hi everyone again,
>>>>>>
>>>>>> I did discover the following works (see below). However, does
>>>>>> anyone
>>>>>> know of the "proper" way with LLVM?
>>>>>>
>>>>>> llvm-gcc -g -c -emit-llvm helloworld.c
>>>>>> opt -load=mypass.dylib -mypass < helloworld.o > helloworld-
>>>>>> mypass.o
>>>>>> llc -fast -f -o helloworld.s helloworld-mypass.o
>>>>>> as -o helloworld-prime.o
>>>>>> gcc -o helloworld helloworld-prime.o
>>>>>> gdb helloworld
>>>>>>
>>>>>> On May 5, 2008, at 4:17 PM, Mark Oskin wrote:
>>>>>>
>>>>>>> Hi everyone,
>>>>>>>
>>>>>>> I have a question that seems simple, but has been confounding me
>>>>>>> for
>>>>>>> several hours. I'd like to debug a binary produced with LLVM.
>>>>>>> For
>>>>>>> the life of me, I can't get any symbols into gdb and llvm-db
>>>>>>> won't
>>>>>>> even start the program nor load any useful information about it.
>>>>>>> Here's my current strategy (which isn't working):
>>>>>>>
>>>>>>> llvm-gcc -g -O0 -c -emit-llvm helloworld.c
>>>>>>> opt -load=mypass.dylib -mypass < helloworld.o > helloworld-
>>>>>>> mypass.o
>>>>>>> llvm-ld -native -o helloworld helloworld-mypass.o
>>>>>>> gdb helloworld
>>>>>>>
>>>>>>> I've tried several variations on the above.
>>>>>>>
>>>>>>> Any suggestions?
>>>>>>>
>>>>>>> Note, what is critical about the whole thing is I must run
>>>>>>> "mypass" on
>>>>>>> the bytecode file. I'm hoping there's an easy fix, that will
>>>>>>> both
>>>>>>> allow me to run my arbitrary pass, and debug a program.
>>>>>>>
>>>>>>> thanks,
>>>>>>>
>>>>>>> -Mark
>>>>>>> _______________________________________________
>>>>>>> LLVM Developers mailing list
>>>>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>>>>
>>>>>> _______________________________________________
>>>>>> LLVM Developers mailing list
>>>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>>>
>>>>> _______________________________________________
>>>>> LLVM Developers mailing list
>>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>>
>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>
>>
>> -Chris
>>
>> --
>> http://nondot.org/sabre/
>> http://llvm.org/
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
-Chris
--
http://nondot.org/sabre/
http://llvm.org/
More information about the llvm-dev
mailing list