Geralmente, os depuradores / IDEs do Python assumem que o script Python está sendo executado no mesmo processo que o próprio, portanto, a depuração de um script executado no ArcMap.exe está correta - você precisa obter o suficiente do ambiente de script GP inicializado em um script Python para poder depurar com.
Um método que funcionou muito bem para mim nos últimos anos é escrever um script simples que apenas chame a ferramenta e use-o como meu script principal no IDE do Python (Wing ou Pythonwin) e tenha meus pontos de interrupção definidos no arquivo .py da ferramenta O arquivo também é aberto na mesma sessão do IDE.
Então, basicamente, eu faço isso:
- Obter o conjunto de entradas que não estão funcionando na minha ferramenta de script
- Abra um arquivo .py simples na mesma pasta que o .tbx que chama a ferramenta
- Abra o script de chamada e o arquivo .py da ferramenta de script no IDE
- Definir pontos de interrupção no arquivo da ferramenta de script
- Execute o script de chamada
E meu script de chamada geralmente é bem simples:
import os
import arcpy
arcpy.ImportToolbox(os.path.join(os.path.dirname(__file__), 'my.tbx'))
arcpy.MyToolThatIsFailing_myalias("inputs", "that", "don't" "work")
Eu tentei o winpdb para depurar scripts em execução no ArcMap, mas nunca tive sorte. Se você quiser experimentá-lo e fazê-lo funcionar bem, compartilhe suas descobertas.