1 #include <iostream>
 2 #include <stdio.h>
 3 #include "book.h"
 4
 5 __global__ void add(int a, int b, int *c) {
 6   *c = a + b;
 7 }
 8
 9 __global__ void kernel() {
10   printf("tttt\n");
11 }
12
13 int main(void) {
14   int c;
15   int *dev_c;
16   HANDLE_ERROR( cudaMalloc((void**)&dev_c, sizeof(int) ) );
17   int count;
18   HANDLE_ERROR( cudaGetDeviceCount(&count) );
19   printf("count: %d\n", count);
20   add<<<1,1>>>(2,7,dev_c);
21   HANDLE_ERROR( cudaMemcpy( &c, dev_c, sizeof(int),
22                             cudaMemcpyDeviceToHost ) );
23   printf("2 + 7 = %d\n", c);
24   cudaFree(dev_c);
25   return 0;
26 }
fircuda.cu  nvcc -g -G fircuda.cu

-g 表示将CPU代码(host)编译成可调式版本,-G表示将GPU代码(kernel)编译成可调式版本。

Breakpoint 2, add<<<(1,1,1),(1,1,1)>>> (a=2, b=7, c=0x7fffc7800000)
    at fircuda.cu:6
6      *c = a + b;

(cuda-gdb) p a
Python Exception <type 'exceptions.AttributeError'> 'gdb.Type' object has no attribute 'name':
Python Exception <type 'exceptions.AttributeError'> 'gdb.Type' object has no attribute 'name':
$1 = 2

...

(cuda-gdb) p *c

Python Exception <type 'exceptions.AttributeError'> 'gdb.Type' object has no attribute 'name':
Python Exception <type 'exceptions.AttributeError'> 'gdb.Type' object has no attribute 'name':
$6 = 9

01-05 02:20
查看更多