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

相关文章

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

起点中文网防止网页调试的代码展示

起点中文网对爬虫非常敏感。如图,想在页面启用调试后会显示“已在调试程序中暂停”。 选择停用断点并继续运行后会造成cpu占用率升高电脑卡顿。 经简单分析网站使用了js代码用于防止调试并在强制继续运行后造成电脑卡顿,代码如下: function A(A, B) {if (null != B && "undefined" != typeof Symbol && B[Symbol.hasInstan

Weex入门教程之2,Android Studio安装Weex插件

插件位置及描述 https://plugins.jetbrains.com/idea/plugin/8460-weex 貌似对windows还不是很支持,先放着吧。 安装 插件功能 先预览下都有什么功能 安装完成Weex插件后,如果在main toolbar找不到这些功能图标,那么就需要手动添加到main toolbar 添加到main toolbar 红框内就是

php 7之PhpStorm + Nginx + Xdebug运行调试

操作环境: windows PHP 7.1.10 PhpStorm-2017.2.4 Xdebug 2.5.4 Xdebug helper 1.6.1 nginx-1.12.2 注意查看端口占用情况 netstat -ano //查看所以端口netstat -aon|findstr "80" //查看指定端口占用情况 比如80端口查询情况 TCP 0.0.0.0:8

安装SQL2005后SQL Server Management Studio 没有出来的解决方案

一种情况,在安装 sqlServer2005 时 居然出现两个警告: 1 Com+ 目录要求 2 Edition change check 郁闷!网上说出现两个警告,是肯定装不成功的!我抱着侥幸的态度试了下,成功了。 安装成功后,正准备 “ 仅工具、联机丛书和示例(T)” 但是安装不了,他提示我“工作站组件”安装过了对现有组件无法更新或升级。 解决办法: 1 打开“控