checkCudaErrors没有打印错误信息

时间:2016-07-31 08:08:40

标签: c++ visual-studio error-handling cuda printf

我已添加helper_cuda.h,我在代码中的每个CUDA调用中使用checkCudaErrors宏。我通过以下代码强制错误:

checkCudaErrors(cudaMalloc(&GPUCameraData, sizeof(float) /*<-- Should be HCameraData */ ));
checkCudaErrors(cudaMemcpy(GPUCameraData, CPUCameraData, sizeof(HCameraData)
                                                       , cudaMemcpyHostToDevice));

应用程序只是以错误代码1退出,但不会打印任何信息。如果我在第一行中断并进入第二行,我会看到_cudaGetErrorEnum()中的helper_cuda.h确实返回"cudaErrorInvalidValue",但输出中没有打印任何信息。

我使用的开发环境是Visual Studio 2013,我在调试和发布模式下都对它进行了测试。

注意:我对OpenGL和glGetError也有同样的问题。好像来自代码的任何fprintf(stderr, ...);调用都不会直接在我自己的文件结构中打印出来。

1 个答案:

答案 0 :(得分:0)

原因可能是你正在创建一些其他类型的应用程序,而不是默认的C ++应用程序(在你的情况下重新编译CUDA和OpenGL),即你是将这个代码编译成一个库,用于另一个不是c ++的项目,或者某种链接问题(你有哪种类型的项目......需要信息!)。当我将cuda代码编译成Matlab-Mex文件时,我遇到了同样的问题,该文件将使用命令&#34; mexPrintf&#34;不是&#34; fprintf&#34;内部使用&#34; checkCudaErrors&#34;。您可以测试将helper_cuda.h中的打印命令从 fprintf更改为打印信息的命令,以便从程序中调用它。