Nsight visual studio 断点调试

2024-06-17 16:18

本文主要是介绍Nsight visual studio 断点调试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

记Nsight Debug时总是跳过断点的解决方案

1. 在对工程做了任何修改后,特别是对代码的修改,都应该重新生成解决方案:

生成->重新生成解决方案(Build->Rebuild Solution)

2. 路径中一定一定不能有中文


GPU调试一直是一个很头疼的问题,在kernel比较简单的时候可以选择把一些计算结果打印出来进行查看,但当kernel很复杂的时候就没法这样进行调试了。听说Nsight可以提供帮助,使得GPU可以像CPU一样进行调试。Nsight在window下作为visual studio的插件,在Linux下作为eclipse的插件供我们使用。 
然而博主在使用Nsight时设置断点后,发现调试并不能进入断点。于是百度,谷歌,stack-overflow,官方文档一个一个查过去也能找到对口的解决方案,然后在我不知所措的时候突发奇想试了一种我一直不屑试的情况,然后——知道真相的我眼泪流下来。如果你跟博主是同样的情况,那很幸运的。如果不太一样,在文章的最后面也会列出一些常见的造成跳过断点的可能方式,希望能在有所帮助。 
因而本文解决的问题如标题所示,即:Nsight Debug时所设置的断点总是被跳过怎么破?

编程环境

首先列出博主的编程环境: 
- OS: Win7 
- IDE: Visual Studio 2015 
- CUDA Toolkit Version: 8.0 
- Nsight Version: 5.3

博主的情况

为了避免歧义,博主会讲的比较详细,不要嫌啰嗦哈~ 
首先建立CUDA工程,步骤如下: 
1. 建立一个CUDA工程:文件->新建->工程(File->New->Project)。我把这个Project命名为MyCudaProject。 
Build-MyCudaProject
注意:这个工程我放在了桌面,路径为C:\Users\Administrator\Desktop\,路径是全英文的。因而你的工程路径也一定不能出现中文。 
2. 在解决方案资源管理器(Solution Explorer)中,可以看见一个自动生成的kernel.cu文件,我们在 
__global__ void addKernel函数int i = threadIdx.x;前设置断点。 
BreakPoint 
3. 生成->生成解决方案(Build->Build Solution),等待解决方案的生成。 
Generate-Resolution 
4. Nsight->Start CUDA Debugging 
Nsight-Debugging 
此时是可以停在断点处的。但如果新建一个.cu文件,如main.cu文件,将刚刚kernel.cu的代码拷贝过来,在同样位置打上断点,再将kernel.cu移除(避免多个main入口),再使用Nsight->Start CUDA Debugging启动debug,此时就会出现忽略断点的情况了。

解决方案

与CPU调试不同的是,在GPU调试过程中,对程序任何地方有修改,都应该重新生成解决方案。否则Nsight调试的依旧是之前的代码。 
因而在上文提到的情况下,我们删除了旧的断点,新增了断点却没有重新生成解决方案,当然会跳过断点了。 
因而解决方案就是:生成->重新生成解决方案(Build->Rebuild Solution)。(是不是知道真相的你眼泪也流了下来)

其他可能跳过断点的可能情况

 

5.Device的 generate GPU Debut Infomation 设置为 YES

 

6. 路径中避免中文的出现。

  1. 请确保是使用Nsight的debug方式调试,即Nsight->Start CUDA Debugging。
  2. Nsight只能进行GPU调试,即断点只有在是__global__和__device__函数中才能生效。
  3. Visual Studio,CUDA Toolkit和Nsight的版本之间是否匹配。可能是Nsight的版本过低,不能支持较高版本的Visual Studio和CUDA Toolkit。此时你应该先查看一下已安装的Nsight是否支持你所安装的Visual Studio和CUDA Toolkit,如果不支持,就把它进行更新。
  4. 是否使用-G编译kernel。在解决方案资源管理器(Solution Explorer)中,右键点击要设置断点的.cu文件,属性->Host->Generate Host Debug Infromation设置为Yes。 
    -g-Compile

参考

[1] https://developer.nvidia-china.com/forum.php?mod=viewthread&tid=7379&extra=&page=1 
[2] http://blog.csdn.net/imcomma/article/details/53007869 
[3] http://developer.nvidia-china.com/forum.php?mod=viewthread&tid=7503&page=3 
[4] https://stackoverflow.com/questions/32295834/neglected-breakpoints-when-using-nsights-start-cuda-debugging

 

这篇关于Nsight visual studio 断点调试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1069934

相关文章

UnrealScriptIDE调试环境部署

先安装vs2010   再安装VSIsoShell.exe, 下载地址 https://pan.baidu.com/s/10kPNUuDGTbWXbz7Nos-1WA       fd3t   最后安装unside,下载地址 https://archive.codeplex.com/?p=uside  安装中间有一步选择Binary文件夹要选对路径。   安装好以后,启动 UDKDe

IDEA配置Tomcat远程调试

因为不想把本地的Tomcat配置改乱或者多人开发项目想测试,本文主要是记录一下,IDEA使用Tomcat远程调试的配置过程,免得一段时间不去配置到时候忘记(毕竟这次是因为忘了,所以才打算记录的…) 首先在catalina.sh添加以下内容 JAVA_OPTS="-Dcom.sun.management.jmxremote=-Dcom.sun.management.jmxremote.port

Eclipse+ADT与Android Studio开发的区别

下文的EA指Eclipse+ADT,AS就是指Android Studio。 就编写界面布局来说AS可以边开发边预览(所见即所得,以及多个屏幕预览),这个优势比较大。AS运行时占的内存比EA的要小。AS创建项目时要创建gradle项目框架,so,创建项目时AS比较慢。android studio基于gradle构建项目,你无法同时集中管理和维护多个项目的源码,而eclipse ADT可以同时打开

Visual Studio中,MSBUild版本问题

假如项目规定了MSBUild版本,那么在安装完Visual Studio后,假如带的MSBUild版本与项目要求的版本不符合要求,那么可以把需要的MSBUild添加到系统中,然后即可使用。步骤如下:            假如项目需要使用V12的MSBUild,而安装的Visual Studio带的MSBUild版本为V14。 ①到MSDN下载V12 MSBUild包,把V12包解压到目录(

基于Java医院药品交易系统详细设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W+,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码+数据库🌟 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人  Java精品实战案例《600套》 2023-2025年最值得选择的Java毕业设计选题大全:1000个热

Chromium 调试指南2024 - 远程开发(下)

1. 引言 在《Chromium 调试指南2024 - 远程开发(上)》中,我们探讨了远程开发的基本概念、优势以及如何选择合适的远程开发模式。掌握了这些基础知识后,接下来我们将深入了解如何在远程环境中高效地进行Chromium项目的调试工作。 调试是开发过程中至关重要的一环,特别是对于像Chromium这样复杂的大型项目。远程调试不仅可以充分利用远程服务器的强大计算资源,还能确保开发环境的一致

Android HttpUrlConnection 断点下载

前言 在经过一段时间使用OKHttp之后,偶尔需要应用别人的jar,但是别人的jar中已经包含了OKHttp之后,又是各种麻烦修改,考虑种种之后想办法自己在HttpUrlConnection方面写一个断点下载,同时如果自己不需要断点下载,简单的设置以下就可以了。 知识点 (1)断点传递给服务器端,请求需要的从断点开始的数据 // 统一资源URL httpUrl = new URL(url

使用 devtool 本地调试 nodejs

安装 # 全局安装$ npm install devtool -g# 或临时安装$ npx devtool [file] [opts] 用法 Usage:devtool [入口文件] [opts]Options:--watch, -w enable file watching (for development) # 动态检测文件变更,不用每次手动重启--qui

android gradle调试debug不到代码问题

自己写了gradle插件,模块如下: 并发布到本地仓库,在另一个module引入这个插件 准备好调试的一切后,点击右侧,发现点没走进去 后来发现在这里执行不行,需要通过命令行,代码如下: mayunlongdeMacBook-Pro:AndroidApkPlugin mayunlong$ cd demomayunlongdeMacBook-Pro:demo mayunlong$ ../.

Android Studio 下项目的依赖配置

Android Studio 下项目的依赖配置 背景 项目需要用到一个github上的开源库swipelistview,原来在eclipse环境下配置过相关的依赖(导入jar包或者是lib依赖),但是在Android Studio下还是没有操作过。上网查了一下相关的资料,在stackoverflow上找到了答案。根据上面的介绍,结合实际情况,完成了依赖配置。 stackoverflow答案