如何在混合cuda C ++程序中调试主机代码?

时间:2014-04-08 17:03:21

标签: c++ debugging cuda nsight

我的工作平台是VS2010和Nsight 3.1。

使用Nsight,可以在cuda内核中设置断点,调试器也能正常工作。如果断点在主机代码中设置,则Nsight只会忽略它们。

我不知道是否可以在主机代码中设置断点并使用VS2010提供的调试器。我试过了,但程序在遇到第一个cudaMalloc函数时停止了。有人可以告诉我如何在混合cuda和c ++程序中调试主机代码吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

我担心你无法在VS上调试CUDA和c ++程序。这是一个解决方法。希望它可以帮到你

  1. 启动Windows命令行。设置NSIGHT_CUDA_DEBUGGER = 1
  2. 在此命令行中,执行您的CUDA应用程序(这里我认为这是一个长期执行)。
  3. 打开一个VS.工具菜单 - >附加到流程。选择传输为Nsight CPU Debugger并附加到您的应用程序。然后你可以调试CUDA代码
  4. 打开另一个VS.选择transport作为Default。附加到应用程序然后您可以调试C ++代码
  5. 请注意,如果应用程序被VS暂停,则其他VS无法调试。您必须恢复当前的一个,然后切换到另一个。