visual-studio - 在 Visual Studio 2008 中继续 N 次

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

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

我注意到 VS2008 调试器的几个不错的功能,例如使用“hitcount”功能每 N 次或 N 次后才中断的能力。我还注意到能够运行宏或打印消息而不是中断。然而,这些功能似乎都不适用于 NSight 调试器(正如 NVidia 网站上针对 NSight v1.5 的说明)。

使用 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 显然依赖于底层调试器来实现命中计数或打印消息等功能(而不是仅在顶层实现),因此我不知道如何立即完成此操作。

最佳答案

事实证明,您可以创建一个宏来执行此操作!下面是一个可以跳过 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 需要做更多的工作,是吗?

关于visual-studio - 在 Visual Studio 2008 中继续 N 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16925568/

相关文章:

sql-server - 文本限定符仍未在我的 CSV 上传中正确包含逗号

找不到 XML 注释文件 - Swagger

c++ - 我的 dll 中的内存分配大小上限为 20MB

c++ - Visual Studio 2008 C++ 中灵活的字符串处理

c# - 查找所有函数调用

c++ - 为什么代码不会在代码块的断点处中断

debugging - 如何修复创建 MPI 派生数据类型期间的无效参数

jquery - 最好的 jQuery 调试插件是什么?

visual-studio-2008 - 在VS2008中,对于网站的FTP发布,是否可以保存FTP登录密码?

visual-studio-2008 - BSCMAKE : error BK1506 : cannot open file StdAfx. sbr 没有那个文件或目录