使用 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),可能需要一些额外的设置来调试执行代码。 调试 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 Pro 中的工具开始调试。

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

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

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

注:

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

调试脚本工具执行代码

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

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

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

调试脚本工具验证代码

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

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

  1. 打开脚本工具属性对话框,然后单击验证选项卡。
  2. 将代码复制到 .py 文件中(在本例中为 validate_code.py)。
  3. .py 文件中,在导入后添加 arcpy.SetupDebugger() 调用。
  4. 验证选项卡上的代码替换为以下示例代码:
  5. 在以下示例中,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
  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 函数。

相关主题