为什么调试kernel时,cuda debugger没启动就退出了

为什么调试kernel时,cuda debugger没启动就退出了(nsight显示connect,然后立即就disconnect了)。我用cuda 新建cuda project的例子程序addKernel,是可以进去debug的。

但是我的工程有点长,是不是WDD TDR ENABLE的原因呢?我尝试改成false,为什么改不动呢?

谢谢大家了!

您的kernel没有使用-G参数进行编译。请如此解决:

右键点击您的.cu, 选择属性,在属性页里,选择CUDA C/C++, 并在右侧选择-G选项。

然后rebuild all, 重新进行nsight->cuda debugging.

我检查了的
在cuda c/c++下面的host, device选项里面的generate host debug information与generate device debug information都是选的“是”。

那就奇怪了,首先说,可以排除您的"TDR导致无法调试的关系“,

(1)因为您新建项目可以正常调试,而这个上去就提示断开连接,和TDR无关。
(2)其次nsight现在不需要关闭TDR watchdog也可以正常调试。

所以(3)唯一可能有关系的就是编译参数了,而最大可能是-G。
但是您已经给予了否定,说不是这个原因。我不知道了。

建议咨询其他版主/会员/nv官方支持。

你的分析师正确的,我只要以管理员身份登陆系统,TDR选项就能正确修改了。

目前还在排查没法进入kernel调试的原因,谢谢版主!

原因找到了,我的main(int agrc, char *argv)的参数解析直接用的是CPU的那套东西,比如atol之类的函数,我注释掉这段,就能cuda debug了。请问在cuda下面,如何解析main入口的参数呢?

这个和能否cuda调试真心没关系。

如果说真的有关系,那就是对命令行参数解析后,直接退出了进程。
直接立刻退出,导致根本就没有启动kernel,而没有启动,自然无法调试。

但这真心不是一个问题。您在询问如何调试kernel, 至少需要保证您的kernel被您运行了。否则无法为您解释如何修改命令行参数的解析,以及如何解析可以继续运行等等,这些,不是本论坛负责的范围。