[llvm-dev] [CUDA] Lost debug information when compiling CUDA code
Yuanfeng Peng via llvm-dev
llvm-dev at lists.llvm.org
Wed Jun 14 08:33:10 PDT 2017
Hi Tom,
Thanks for the response! I wonder whether there's any other way that I can get the source level information when using cuda-gdb to debug a binary compiled by LLVM? Or is there any way to feed the IR files to NVCC and get a binary with the debug info I need?
Thanks!
Yuanfeng
------------------ Original ------------------
From: "Tom Stellard";<tstellar at redhat.com>;
Send time: Wednesday, Jun 14, 2017 9:06 PM
To: "Yuanfeng Peng"<yuanfengp at foxmail.com>; "via llvm-dev"<llvm-dev at lists.llvm.org>;
Subject: Re: [llvm-dev] [CUDA] Lost debug information when compiling CUDA code
On 06/14/2017 02:59 AM, Yuanfeng Peng via llvm-dev wrote:
> Hi,
>
> I needed to debug some CUDA code in my project; however, although I used -g when compiling the source code, no source-level information is available in cuda-gdb or cuda-memcheck.
>
The NVPTX backend in LLVM does not support DWARF emission.
-Tom
> Specifically, below is what I did:
>
> 1) For a CUDA file a.cu, generate IR files: clang++ -g -emit-llvm --cuda-gpu-arch=sm_35 -c a.cu;
> 2) Instrument the device code a-cuda-nvptx64-nvidia-cuda-sm_35.bc (generated in the previous step), inserting a call to a hook function before each device memory access. The hook function is defined in another file, b.cu. Let's say we get a file named intrumented-a-device.bc after this step;
> 3) Generate IR files for b.cu: clang++ -g -emit-llvm --cuda-gpu-arch=sm_35 -c b.cu;
> 4) Link instrumented-a.device.bc with the device code generated for b.cu: llvm-link intrumented-a-device.bc b-cuda-nvptx64-nvidia-cuda-sm_35.bc -o ab-device.bc;
> 5) Use llc, ptxas & fatbinary on ab-device.bc to get ab-device.ptx, ab-device.o & ab-device.fatbin;
> 6) Call clang again the generate the host object file ab.o, with ab-device.o & ab-device.fatbin embedded;
> 7) Link against libraries and get the final binary: a.out.
>
> The binary a.out fails with an exception I when run it; but when I try to debug it with cuda-gdb or cuda-memcheck, no source information was available. Why?
>
> Thanks!
> Yuanfeng Peng
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170614/68407855/attachment.html>
More information about the llvm-dev
mailing list