<div>Hi,</div><div><br></div><div>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.  </div><div><br></div><div>Specifically, below is what I did:</div><div><br></div><div>1) For a CUDA file a.cu, generate IR files: clang++ -g -emit-llvm --cuda-gpu-arch=sm_35 -c a.cu;</div><div>2) Instrument the device code a<span style="font-variant-ligatures: no-common-ligatures; font-family: Menlo; font-size: 11px;">-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;</span></div><div><span style="font-variant-ligatures: no-common-ligatures; font-family: Menlo; font-size: 11px;">3) Generate IR files for b.cu: clang++ -g -emit-llvm --cuda-gpu-arch=sm_35 -c b.cu;</span></div><div><span style="font-variant-ligatures: no-common-ligatures; font-family: Menlo; font-size: 11px;">4) Link instrumented-a.device.bc with the device code generated for b.cu: llvm-link intrumented-a-device.bc b-</span><span style="font-family: Menlo; font-size: 12px; font-variant-ligatures: no-common-ligatures;">cuda-nvptx64-nvidia-cuda-sm_35.bc -o ab-device.bc;</span></div><div><span style="font-family: Menlo; font-size: 12px; font-variant-ligatures: no-common-ligatures;">5) Use llc, ptxas & fatbinary on ab-device.bc to get ab-device.ptx, ab-device.o & ab-device.fatbin;</span></div><div><span style="font-family: Menlo; font-size: 12px; font-variant-ligatures: no-common-ligatures;">6) Call clang again the generate the host object file ab.o, with ab-device.o & ab-device.fatbin embedded;</span></div><div><span style="font-family: Menlo; font-size: 12px; font-variant-ligatures: no-common-ligatures;">7) Link against libraries and get the final binary: a.out.</span></div><div><span style="font-family: Menlo; font-size: 12px; font-variant-ligatures: no-common-ligatures;"><br></span></div><div><font face="Menlo"><span style="font-size: 12px; font-variant-ligatures: no-common-ligatures;">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?</span></font></div><div><font face="Menlo"><span style="font-size: 12px; font-variant-ligatures: no-common-ligatures;"><br></span></font></div><div><font face="Menlo"><span style="font-size: 12px; font-variant-ligatures: no-common-ligatures;">Thanks!</span></font></div><div><font face="Menlo"><span style="font-size: 12px; font-variant-ligatures: no-common-ligatures;">Yuanfeng Peng</span></font></div><div><span style="font-family: Menlo; font-size: 12px; font-variant-ligatures: no-common-ligatures;"> </span></div>




<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; background-color: #ffffff}
span.s1 {font-variant-ligatures: no-common-ligatures}
</style>