Question

I'm working on an nvcc compiled static library for a g++ linked project. How do I use cuda-gdb on the final executable? All I get is "Program exited normally" without any printf output or anything.

nvcc is definitely being given the -g -G arguments when compiling the static library.

Here is my command line buffer:

cuda-gdb /home/sean/cuda-workspace/cudasplat/Debug/cudasplat 
NVIDIA (R) CUDA Debugger
5.0 release
Portions Copyright (C) 2007-2012 NVIDIA Corporation
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/sean/cuda-workspace/cudasplat/Debug/cudasplat...done.
(cuda-gdb) set args -t a1-31 a2-31 a3-31 a4-31 -L 30 -o tx_coverage -d /var/www/userman/plot-temp/ -db -85 -ngs -dbm -R 20
(cuda-gdb) run
Starting program: /home/sean/cuda-workspace/cudasplat/Debug/cudasplat -t a1-31 a2-31 a3-31 a4-31 -L 30 -o tx_coverage -d /var/www/userman/plot-temp/ -db -85 -ngs -dbm -R 20
[Thread debugging using libthread_db enabled]
Exiting...

Program exited normally.
(cuda-gdb)

This is what normally happens without debugging:

/home/sean/cuda-workspace/cudasplat/Debug/cudasplat -t  a1-31 a2-31 a3-31 a4-31 -L 30 -o tx_coverage -d /var/www/userman/plot-temp/ -db -85 -ngs -dbm -R 20
            --==[ Welcome To CUDASPLAT! HD v1.4.0a ]==--

Loading "51:52:113:114-hd.sdf" into page 1... Done!
Loading "50:51:113:114-hd.sdf" into page 2... Done!
Loading "50:51:114:115-hd.sdf" into page 3... Done!
Loading "51:52:114:115-hd.sdf" into page 4... Done!
copying 444 mb into device memory (3878 mb free)
finished copy
min_north 50, max_north 52, min_west 113, max_west 115
allocated antenna memory
invalid argument in ../cudapath.cu at line 551
Was it helpful?

Solution

  1. You should set a breakpoint before issuing a run command.
  2. Does your application perform proper error checking? Note that cuda-gdb may "hide" GPUs used to render you OS graphical interface. E.g. if you have a single GPU system and run CUDA application from cuda-gdb in windowing environment (such as GTK or KDE) you application may fail because no GPUs will be detected.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top