使用 Microsoft Visual Studio 调试脚本工具

要在 Microsoft Visual Studio 中调试脚本工具,必须安装 Visual Studio Python 开发工作负载。

有关详细信息,请参阅 Microsoft Learn 站点上的修改 Visual Studio 工作负载、组件和语言包。

在 ArcGIS AllSource 中调试 Python 代码

要在 ArcGIS AllSource 中开始调试 Python 代码,请完成以下步骤:

  1. 在 ArcGIS AllSource 中,在地理处理窗格中打开要调试的工具。
  2. 启动 Microsoft Visual Studio 并打开要调试的脚本。

    对于脚本工具 (.atbx),可能需要一些额外的设置来调试执行代码。 调试 Python 工具箱 (.pyt) 也需要额外的设置。 有关详细信息,请参阅以下部分。

  3. 在正在调试的脚本顶部的所有导入语句之后插入 arcpy.SetupDebugger() 函数。
  4. 在 Microsoft Visual Studio 主菜单上单击调试 > 连接到进程。
  5. 在连接到进程对话框中,单击选择按钮。
  6. 在选择代码类型对话框中,相继选中调试这些代码类型和 Python,然后单击确定。

    您必须选择附加到:Python 代码。 请勿使用默认代码类型自动:托管(v4.6、v4.5、v4.0)代码、Python 代码。

  7. 在可用进程列表中,单击 ArcGISPro.exe 进程,然后单击附加按钮。
  8. 根据需要放置断点。
  9. 运行 ArcGIS AllSource 中的工具开始调试。

完成调试后,根据需要从代码中移除 arcpy.SetupDebugger() 调用。

从 ArcGIS AllSource 分离集成开发环境 (IDE) 后,Python 代码中的异常将无法正确显示。 要解决此问题,请重新启动 ArcGIS AllSource。

有关在 Visual Studio 中调试 Python 代码的详细信息,请参阅 Microsoft Learn 站点中的在 Visual Studio 中调试 Python 代码。

注:

Microsoft Visual Studio 2017 可用于调试 ArcGIS AllSource 2.1 及更高版本。 这些应用程序的早期版本不受支持。 Microsoft Visual Studio 2022 及更高版本使用不同的 Python 调试程序,并且调试 ArcGIS AllSource Python 脚本时需要添加 arcpy.SetupDebugger() 函数。

调试脚本工具执行代码

当嵌入脚本工具的执行代码时,必须先从工具箱导出脚本,然后才能进行调试。

要调试脚本工具的执行代码,请完成以下步骤:

  1. 打开脚本工具属性对话框,然后单击执行选项卡。
  2. 如果已嵌入执行脚本,请单击将脚本导出至文件按钮。
  3. 在导入后添加 arcpy.SetupDebugger() 调用。
  4. 继续处理导出的 .py 文件。

调试脚本工具验证代码

当脚本工具验证中的 Python 代码嵌入到工具中时,必须首先将代码复制到外部 Python 文件 (.py) 以对其进行调试。 然后可以打开 IDE 中的 Python 文件并设置断点,将 IDE 附加到 ArcGIS AllSource,之后运行脚本工具。 完成代码修改后,将 Python 文件内容复制回工具验证。

要调试脚本工具验证代码,请完成以下步骤:

  1. 打开脚本工具属性对话框,然后单击验证选项卡。
  2. 将代码复制到 .py 文件中(在本例中为 validate_code.py)。
  3. 在 .py 文件中,在导入后添加 arcpy.SetupDebugger() 调用。
  4. 将验证选项卡上的代码替换为以下示例代码:
  5. 在以下示例中,validate_code.py(内容未显示)包含 ToolValidator 类,并以工具箱形式保存到相同的目录中。 将下面的代码段放到工具属性对话框“验证”选项卡的代码编辑器中,以便将调试中继到 validate_code.py。

    import os
    import sys
    import validation_code
    
    sys.path.append(os.getcwd())  # Ensure directory containing module is in Python path
    
    # The following code will reload the val.py module if it's modified
    if 'validation_code' in sys.modules:
        import importlib
        importlib.reload(validation_code)
    
    # ToolValidator should exist at the global scope
    ToolValidator = validation_code.ToolValidator
  6. 继续使用 validate_code.py 文件进行调试。
  7. 完成调试后,将工具属性对话框验证选项卡上的代码编辑器的内容替换为 .py 文件的内容(示例代码中的 validate_code.py),然后移除 arcpy.SetupDebugger()。

当用户与工具进行交互时,会反复执行脚本工具验证中的验证代码。

调试 Python 工具箱

无法直接调试 Python 工具箱 (.pyt),必须使用 .py 文件进行调试。

要调试 Python 工具箱,请完成以下步骤:

  1. 在与 Python 工具箱相同的目录中创建外部 .py 文件(在此示例中为 execute_code.py)。
  2. 将 Python 工具箱 execute 函数中的代码复制到新 Python 文件中的函数 (func),并复制所有其他必要函数。
  3. 以下是 execute_code.py 的内容示例,它与 .pyt 文件保存在同一目录中。

    import arcpy
    
    def func(parameters):
        arcpy.AddMessage("This is where your code goes.")
        return
  4. 将 Python 工具箱 execute 方法中的代码替换为以下内容:
  5. 下面的代码是 Python 工具箱中修改的 execute 函数示例。

    
    arcpy.SetupDebugger()
    import execute_code
    execute_code.func(parameters)
  6. 使用 execute_code.py 文件继续进行调试。
  7. 完成调试后,将 func 的内容从 Python 文件(在示例中为 execute_code.py)复制回工具的 execute 函数。

相关主题