生成CUDA5.0自带的程序出现warning

版主您好:
我在生成cuda自带的simpleCUFFT时,很多调试行后面出现:Cannot find or open the PDB file;
不知道是什么原因?

没关系,这个提示是debugger给出的,可以无视。

找不到一堆pdb正常的很,它是你调试的时候,告诉你无法载入调试信息的。
具体说,
(1)是无法为windows的众多dll载入它们的调试信息。
因为一般我们用的windows都是去掉了调试信息的版本。以及它们也不妨碍你实际调试你的“代码”。
(2)无法为cudart*.dll和其他第三方库载入调试信息。
因为nvidia没有提供源代码/或者符号信息供您调试cuda的runtime dll,其他公司的库类似。以及,它们实际不影响你调试你的“代码”。

因为你实际上不是去调试windows /cuda 内部本身,而是在调试你自己的代码,所以可以无视这些警告。

以及,如果需要,可以免费获取windows的dll们的调试信息,以及在签署了一定条约后,可以阅读windows的源代码。

以及,如果真的需要调试cuda rutnime内部,请成为NVIDIA员工或者联系nv的开发组,看看它们能否给你内部使用的调试信息或者源代码。

以及,也建议您在发布您的项目(除了自己debug时候),不要泄漏您的pdb文件,有了它们,会导致逆向工程变得更加容易,您的源代码会更容易被推导出来。

一个极端的例子是C#,没有pdb的时候就已经相当容易得出等价代码了(除了函数名等信息无法知道),而此时,如果是exe+pdb发布的,那么相当于免费赠送源代码了。

类似的,很多公司产品都这样考虑,防止信息泄漏,所以不提供,所以您也不能直接在VS里面调试他们的产品。

一个例外可能是windows, windows有专门的调试版(MSDN订阅用户可以下载)。以及,哪怕是普通的release版本的windows, 也可以从微软的服务器上免费下载pdb文件。但这不是本坛的讨论内容,这里不具体说明了。

版主您好:
同样的程序,只是一些关键字不一样,我用CUDA4.0+VS2008调试之后出现了窗口,并显示了结果,但是在VS2010+CUDA5.0调试之后,显示结果的窗口闪了一下,没有其结果,但是就是调试信息后面出现了上述警告。而且很多自带的代码都是同样的原因;
不知道什么原因?

这个警告和您的CUDA版本无关,也和您的VS无关的,请仔细看上文解释。

至于为何调试后,窗口一闪而过,这个请仔细考虑您是否在程序结束的时候加入了断点,以便方便您查看结果(可以使用鼠标左键点击行首设置断点)。

如果您设置了断点,但没有最后停下,请确定您没有中途退出(例如您抄袭的类似SAFE_CALL之类的宏)。