c++ - checkCudaErrors没有打印错误信息

标签 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, ...);调用都不会打印任何内容。

最佳答案

原因可能是您正在创建其他类型的应用程序,而不是默认的C++应用程序(在您的情况下,将CUDA和OpenGL进行升级),即正在将此代码编译为要在非c++或其他项目中使用的库中链接问题(您需要哪种类型的项目...需要信息!)。当我将cuda代码编译为Matlab-Mex文件时,会遇到相同的问题,该文件将使用在“checkCudaErrors”中使用的命令“mexPrintf”而非“fprintf”进行打印。您可能会测试将helper_cuda.h中的print命令从 fprintf更改为可以打印信息的命令,以防您从程序中调用它。

关于c++ - checkCudaErrors没有打印错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38682005/

相关文章:

c++ - 使用 C++ 连接到 MySQL 服务器

C++ 用另一个名称重命名 STL vector

error-handling - 通过 ABAP 删除 BOPF 消息(来自/bobf/if_frw_message)

c# - 在代码隐藏中使用资源图像

asp.net - 捕获HTTP错误403.7-在ASP.NET中被禁止

android - 致命异常: main Android

c++ - 获取元素在 boost::multi_index_container 的有序索引中的位置

c++ - C++中HTML元素的无损解析和修改

c# - 异步测试在自己的测试完成后执行其他测试中的方法

git - 如何在 Visual Studio 2015 中 stash 团队事件行?