在导出DLL的非启动项目中使用Nsight调试CUDA代码

Posted

技术标签:

【中文标题】在导出DLL的非启动项目中使用Nsight调试CUDA代码【英文标题】:Using Nsight to debug CUDA codes in non-startup project which exports DLL 【发布时间】:2013-11-29 15:46:40 【问题描述】:

我是否有机会调试在解决方案中输出 DLL 文件的 非启动 项目?我正在使用 CUDA 5.0、GeForce GTX 670、VS2010、Nsight 3.0.013150、本地主机。

目前,我在单击“开始 CUDA 调试”后立即收到断开连接消息

顺便说一句,CUDA 代码是从另一个 DLL 文件导入到此项目的。

请帮忙!!谢谢!!!!!!

【问题讨论】:

你可以试试attach to a running CUDA process @RobertCrovella 感谢您的建议。我按照说明进行了操作,不幸的是,它不起作用,我的愿望过程是灰色的,并且 CUDA 也没有显示在 Type 列中。有什么想法吗? 也许你没有正确设置一些调试环境变量,如here所示 @RobertCrovella,谢谢,我已将环境变量设置为 1,它不起作用 【参考方案1】:

您还可以将“启动外部程序”设置为加载 DLL 的 EXE。这可以从 Nsight 用户属性中完成。看看Launching the CUDA Debugger章节

谢谢

【讨论】:

感谢您的回复。这是我的问题:我的解决方案(.sln)有两个项目,项目A是启动项目(.exe),项目B是一个项目导出dll然后由A调用,我的CUDA代码在另一个DLL中,由项目B调用。似乎“启动外部程序”只接受EXE,这意味着我不能将它启动到项目B?这也是一个DLL,对吧?

以上是关于在导出DLL的非启动项目中使用Nsight调试CUDA代码的主要内容,如果未能解决你的问题,请参考以下文章

如何调用 DLL 的非导出函数?

多个.cu、.h和.c文件之间的Nsight CUDA链接问题

如何使用 nv-nsight-cu-cli 查找 gld_throughput 和 gst_throughput

如何使用 Nsight 调试(GLSL)着色器?

如何添加对由 C# 项目调用的非托管 C++ 项目的引用?

使用 .NET Native 构建时,参数不会传递给 x86 上的非托管 DLL