Skip to main content

使用 Microsoft Visual Studio 调试脚本工具

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

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

在 ArcGIS Pro 中调试 Python 代码

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

  1. 在 ArcGIS Pro 中,在地理处理窗格中打开要调试的工具。

  2. 启动 Microsoft Visual Studio 并打开要调试的脚本。

    对于脚本工具(.atbx 文件),可能需要一些额外的设置来调试执行代码。

  3. 在 Microsoft Visual Studio 主菜单中,单击调试 > 附加到进程

  4. 连接到进程对话框中,单击选择按钮。

  5. 选择代码类型对话框中,相继选中调试这些代码类型Python,然后单击确定

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

  6. 在可用进程列表中,单击 ArcGISPro.exe 进程,然后单击附加按钮。

  7. 根据需要放置断点。

  8. 运行 ArcGIS Pro 中的工具开始调试。

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

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

注:

Microsoft Visual Studio 2019 及更高版本使用基于 debugpy 的 Python 调试程序,该调试程序受 ArcGIS Pro 原生支持,无需任何额外的设置。

调试脚本工具执行代码

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

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

  1. 打开脚本工具属性对话框,然后单击执行选项卡。

  2. 如果已嵌入执行脚本,请单击将脚本导出至文件按钮。

  3. 继续处理导出的 .py 文件。

调试脚本工具验证代码

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

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

  1. 打开脚本工具属性对话框,然后单击验证选项卡。

  2. 将代码复制到 .py 文件中(在本例中为 validate_code.py)。

  3. 验证选项卡上的代码替换为以下示例代码:

    在以下示例中,validate_code.py(内容未显示)包含 ToolValidator 类,并保存到与工具箱相同的目录中。 将下面的代码段放到工具属性对话框“验证”选项卡的代码编辑器中,以便将调试中继到 validate_code.py

    import os
    import sys
    sys.path.append(os.getcwd())  # Ensure directory containing module is in Python path
    import validation_code
    # 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   
    
  4. 继续使用 validate_code.py 文件进行调试。

  5. 完成调试后,将工具属性对话框验证选项卡上的代码编辑器的内容替换为 .py 文件的内容(示例代码中的 validate_code.py)。

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