cuda-gdb

1.14 UNIX调试方法

1.14.1 NVIDIA cuda-gdb调试器(1)

若要使用CUDA调试器cuda-gdb,在使用nvcc进行源代码编译时就必须加入-g -G命令行参数。其中,-g表示主机代码编译为可调试版本;-G表示GPU代码编译为可调试版本(如例1.16所示)。

例1.16 编译程序为cuda-gdb可调试版本的nvcc命令

 

下面是一些常用的调试命令列表(括号内给出了单字母缩写形式),以及各命令的简要介绍。

breakpoint(b):设置断点,使代码在指定位置暂停执行。其参数可以是方法名,也可以是行号。

run(r):在调试器内执行程序。

next(n):单步执行到下一行代码。

continue(c):继续执行已暂停的程序至下一个断点或程序结尾处。

backtrace(bt):显示当前方法调用的栈中的内容。

thread:列出当前的主机线程。

cuda thread:列出当前活跃的GPU线程(若有的话)。

cuda kernel:列出当前活跃的GPU Kernel,并允许将“焦点”转移到指定的GPU线程。

使用cuda-gdb命令启动调试器,如例1.17所示。

例1.17 cuda-gdb启动界面

 

使用“l”命令显示fill的源代码,如例1.18所示。

例1.18 cuda-gdb列出源代码

 

在源代码第12行处设置断点,并执行程序。我们会看到Thrust Kernel执行,然后程序会命中fillKernel()中的断点,如例1.19所示。

例1.19 cuda-gdb设置断点

 


打印线程编号tid的值,如例1.20所示。

例1.20 cuda-gdb打印变量值

 

切换到第403号线程,再次打印tid的值。tid的值仍会正确输出,如例1.21所示。

例1.21 cuda-gdb切换线程并打印变量值

 

退出cuda-gdb(如例1.22所示)。

例1.22 退出cuda-gdb

 
上面的内容仅展示了cuda-gdb的一小部分功能。手册《CUDA-GDB NVIDIA CUDA Debugger for Linux and Mac》中提供了更多的细节信息,该手册随CUDA工具套件发布而不断更新。笔者的《Doctor Dobb’s Journal》系列教程中的第14部分和第17部分比较深入地讨论了cuda-gdb技术与功能。此外,任何关于gdb或ddd的优秀教程都将有助于初学读者掌握cuda-gdb的细节。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值