在Visual Studio 2008中继续N次

时间:2013-06-04 19:06:07

标签: visual-studio debugging visual-studio-2008 cuda nsight

我正在使用Visual Studio 2008调试我正在处理的一些CUDA代码(NSight v3)。

我注意到了VS2008调试器的几个不错的功能,例如只能使用“hitcount”功能每N次或N次中断。我也注意到了运行宏或打印消息而不是破坏的能力。但是,这些功能似乎都不适用于NSight调试器(并且在NSid v1.5的NVidia网站上也有说明。)

使用GDB,我只需输入“continue 300”即可继续300次。这对于循环的第300次迭代非常有用。我如何在Visual Studio 2008中执行此操作?请注意,我不希望在第N次打破某个断点,我想在第N次打破任何断点被击中。

什么也可以解决我的问题是能够从循环内打印出任何一个(但只有一个!)CUDA线程的特定变量。由于调试器非常好,不能在线程之间跳转,我可以使用像这样的GDB脚本来实现这一点:

c
print my_value
c
print my_value
... N - 2 more times

我显然会使用Python或bash或其他东西制作。

由于显然VS2008依赖于底层调试器来实现命中计数或打印消息(而不是仅仅在顶级实现它),我不会立即看到如何实现这一点。

1 个答案:

答案 0 :(得分:2)

原来你可以创建一个宏来做到这一点!这是一个简单地跳过5次:

Option Strict Off
Option Explicit Off
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics

Public Module RecordingModule


    Sub ClickContinue()
        DTE.Debugger.Go(True)
        DTE.Debugger.Go(True)
        DTE.Debugger.Go(True)
        DTE.Debugger.Go(True)
        DTE.Debugger.Go(True)
    End Sub
End Module

这个会提示你输入一个数字,然后继续这么多次。

Option Strict Off
Option Explicit Off
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics

Public Module RecordingModule


    Sub ClickContinue()
        numToSkip = InputBox("How many times to continue?")
        For i = 0 To CInt(numToSkip)
            DTE.Debugger.Go(True)
        Next

    End Sub
End Module

我通过使用“记录宏”功能并稍微修改结果来获得这些。比continue N还要多得多,呃?