调试时无法显示变量的值

我在64win7+vs2010+cuda5.0+nsight3.0下单机调试程序,在cu文件中的kernel程序中设置断点,运行start cuda debugging开始调试,-G的参数也加了,程序能够在断点停下开始单步运行,不过局部变量这个窗口无法显示函数里的临时变量nvalue(只有blockDim,blockIdx这类的),监视也不行,显示“Could not resolve name ‘nvalue’.”这是怎么回事?我的电脑上只有一块显卡,是否需要再加另一块显卡?

绝对不需要再添加另外一块显卡的。

您这个是常见问题,最大的可能是您的nvalue没有在有效生存期内(如果你前文描述都正确的话):
例如:
int dog = …;
for (int i = 0; i < 100; i++)
{
int cat = f(dog, i);

}
如果您在第一行的int dog = …;处中断,即使您提供了-G, 您依然无法从local窗口中看到cat的值的,而此时如果您在watch窗口里添加cat, 则会提示无法解析的名字"cat", 这个是正常的。

以及,这是情况之一,因为您没有提供具体代码,只能提供一个案例进行分析了。不排除还有其他情况。

请考虑如上因素。
以及,这绝对和几块显卡无关。

感谢来访。

谢谢您的回答。只是我遇到的还不是那种在定义前查看变量的情况。我的情况是,cu文件的kernel函数中,连入口变量的值都看不到,只有那几个固定变量的值。
到底是什么情况,我会在以后的开发中跟踪这个现象。

所有的局部变量都看不到么?连kernel的参数也看不到么?

请您检查这几个方面:
(1) 确定您:compute_*,sm_*的配置和贵卡完全一致。
(2) 确定您的kernel所在的.cu使用了-G编译。
(3) 确定您重新关闭并打开local variables窗口1次。
(4) 确定您关闭了TDR(否则您可以得到一些???的值)
(5) 如果local窗口依然看不到,请发下您的代码,看看是否是一些比较奇特的代码。

感谢来访。