Por lo general, los depuradores / IDE de Python asumen que el script de Python se está ejecutando en el mismo proceso que él mismo, por lo que la depuración de un script que se ejecuta en ArcMap.exe es inmediata: debe obtener suficiente del entorno de scripting GP arrancado en un script de Python como pueda para depurar con.
Un método que me ha funcionado muy bien en los últimos años es escribir un script simple que simplemente llame a la herramienta y usarlo como mi script principal en Python IDE (Wing o Pythonwin) y tener mis puntos de interrupción establecidos en la herramienta .py El archivo también se abre en la misma sesión IDE.
Entonces básicamente hago esto:
- Obtener el conjunto de entradas que no funcionan en mi herramienta de script
- Abra un archivo .py simple en la misma carpeta que el .tbx que llama a la herramienta
- Abra el script de llamada y el archivo .py de la herramienta de script en el IDE
- Establecer puntos de interrupción en el archivo de herramienta de script
- Ejecute el script de llamada
Y mi script de llamada suele ser bastante simple:
import os
import arcpy
arcpy.ImportToolbox(os.path.join(os.path.dirname(__file__), 'my.tbx'))
arcpy.MyToolThatIsFailing_myalias("inputs", "that", "don't" "work")
He intentado winpdb para depurar scripts que se ejecutan en ArcMap pero nunca he tenido suerte. Si quiere probarlo y consigue que funcione bien, comparta sus hallazgos.