visual-studio - Visual Studio 在使用nsight时忽略断点;启动CUDA调试"

  显示原文与译文双语对照的内容
142 5

Visual Studio 2013中. cu 文件中的断点在使用"本地 Windows 调试器"时工作良好。 但是当使用"。nsight CUDA调试的开始"时,断点被忽略。 这怎么可能在nsight的站点上,他们说:? "使用熟悉的Visual Studio 局部变量,表,内存和断点 Windows"。 因此,我想可以使用正常的断点?

编辑:

  • Enable CUDA Memory Checker :打开/关闭没有区别
  • Generate GPU Debug Information :没有/是( -G0 ) 没有任何区别
  • Start CUDA/Graphics debugging: 忽略断点
时间: 原作者:

121 4
  • "启动CUDA调试"调试设备( 内核) 代码,使用 nvcc> bunch of preprocessing> cudafe++> cicc 工具路径编译 换句话说,内容。
  • 基于web的"本地 Windows 调试器"调试主机代码,用 nvcc -> bunch of preprocessing -> cl 编译的内容或者只是 cl

你的代码在哪个文件,.cpp.cu 或者 .h 中不重要。 唯一重要的是你的代码是否被注释为 __device__ 或者 __global__ 或者不。

在 7.5 RC ( 2015 ) 中,在 Windows 上,你只能一次调试其中一个。 在Linux和OSX上,你可以同时使用 cuda-gdb 进行调试。

请参见: NVIDIA CUDA驱动程序驱动程序 NVCC 。

其他可能导致 Windows 调试过程中失败的事项:

  • 你正在设置一个配置/平台对的属性,但是运行另一个
  • 主机和设备模块的.pdb 文件出现错误。 检查 nvccclnvlinklink 选项。 例如可以在同一文件中写入主机和设备调试信息,从而覆盖彼此。
  • 激进的优化:内联,优化局部变量,等等 发布代码几乎不可能针对人类进行调试。 调试器也可以被欺骗。
  • 存在未定义行为和/或者内存访问冲突的存在。 它们可以容易地导致调试器导致意外结果,如未命中的断点。
  • 你忘了检查一下,或者内核调用中的错误,出现错误,并且内核不再运行了。 但是你还不知道。 你的主机代码继续运行,并且期望内核断点命中,但是它永远不会发生,因为内核不会被调用。
  • 上面描述的所有 Bug 都可以在库中。 不要指望图书馆是免费的。
  • 编译器,调试器和驱动程序也有 Bug 。 但是你应该始终假设代码是错误的,如果没有帮助,请调查并将 Bug 报告归档给供应商。
原作者:
...