<div>Hi Tom,</div><div><br></div><div>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?</div><div><br></div><div>Thanks!</div><div>Yuanfeng</div><div><div><br></div><div><br></div><div style="font-size: 12px;font-family: Arial Narrow;padding:2px 0 2px 0;">------------------ Original ------------------</div><div style="font-size: 12px;background:#efefef;padding:8px;"><div><b>From: </b> "Tom Stellard";<tstellar@redhat.com>;</div><div><b>Send time:</b> Wednesday, Jun 14, 2017 9:06 PM</div><div><b>To:</b> "Yuanfeng Peng"<yuanfengp@foxmail.com>; "via llvm-dev"<llvm-dev@lists.llvm.org>; <wbr></div><div></div><div><b>Subject: </b> Re: [llvm-dev] [CUDA] Lost debug information when compiling CUDA code</div></div><div><br></div>On 06/14/2017 02:59 AM, Yuanfeng Peng via llvm-dev wrote:<br>> Hi,<br>> <br>> 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.  <br>> <br><br>The NVPTX backend in LLVM does not support DWARF emission.<br><br>-Tom<br><br>> Specifically, below is what I did:<br>> <br>> 1) For a CUDA file a.cu, generate IR files: clang++ -g -emit-llvm --cuda-gpu-arch=sm_35 -c a.cu;<br>> 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;<br>> 3) Generate IR files for b.cu: clang++ -g -emit-llvm --cuda-gpu-arch=sm_35 -c b.cu;<br>> 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;<br>> 5) Use llc, ptxas & fatbinary on ab-device.bc to get ab-device.ptx, ab-device.o & ab-device.fatbin;<br>> 6) Call clang again the generate the host object file ab.o, with ab-device.o & ab-device.fatbin embedded;<br>> 7) Link against libraries and get the final binary: a.out.<br>> <br>> 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?<br>> <br>> Thanks!<br>> Yuanfeng Peng<br>>  <br>> <br>> <br>> _______________________________________________<br>> LLVM Developers mailing list<br>> llvm-dev@lists.llvm.org<br>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev<br>> <br><br><br><br><br></div>