Normalmente los depuradores/IDEs de Python asumen que el script de Python se está ejecutando en el mismo proceso que él mismo, por lo que depurar un script que se ejecuta en ArcMap.exe está fuera de lugar -- necesitas tener suficiente del entorno de scripting de GP arrancado en un script de Python como para depurar con él.
Un método que me ha funcionado muy bien en los últimos años es escribir un sencillo script que sólo llame a la herramienta y utilizarlo como mi script principal en el IDE de Python (Wing o Pythonwin) y tener mis breakpoints establecidos en el archivo .py de la herramienta también abierto en la misma sesión del IDE.
Así que básicamente hago esto:
- Obtener el conjunto de entradas que no funcionan en mi herramienta de script
- Abra un simple archivo .py 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 breakpoints en el archivo de la herramienta de script
- Ejecutar el script de llamada
Y el guión de mi llamada suele ser bastante sencillo:
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 los scripts que se ejecutan en ArcMap pero nunca he tenido suerte. Si quieres probarlo y consigues que funcione bien, por favor comparte tus hallazgos.