Ok, acabei de verificar que sou capaz de percorrer o código usando esse processo. Estou fazendo isso no ArcMap, mas acho que deve se aplicar ao ArcCatalog, pois o processo lida com DLLs de depuração e não com um item específico da ESRI. Eu confirmei isso no ArcMap 10.2.2 e no ArcCatalog 10.2.2. Como este é um processo do Windows que lida com DLLs diretamente, as versões do software ESRI não devem importar.
Estou usando o Visual Studio para anexar a um processo .
Eu sou capaz de percorrer uma extensão compilada (DLL) usando esse processo quando a DLL é invocada em outro programa.
Aqui está o que estou fazendo ...
No Visual Studio, abra seu projeto de extensão. Criei minha extensão no VS 2010 C # Express, mas estou usando o VS 2013 Ultimate para fazer isso. Não tenho certeza se Anexar ao processo é uma opção na versão 2010 Express. Eu não vi, mas poderia estar escondido em algum lugar, pois era a versão Express.
Abra o seu produto ESRI e instale o suplemento. Agora, de volta ao VS, clique em Anexar ao processo e selecione o processo do seu produto ESRI. O meu era o ArcMap.exe . A partir daqui, o Visual Studio deve anexar seu depurador ao programa e, quando a DLL for executada, aberta e com pontos de interrupção definidos, ela será interrompida por aí. Isso funcionará como qualquer outro programa que você está depurando no Visual Studio. Ele pode esticar alguma depuração em alguns dos itens ESRI embora o código é mais provável ofuscado por isso não tão útil.
Certifiquei-me de instalar o suplemento do diretório Release para o meu projeto. Até onde eu sei, a ESRI não copia a DLL em uma de suas pastas, mas eles usam o Esri Assembly Registration Utility para registrar a localização da DLL, para que o sistema saiba onde encontrá-la quando referenciada em um produto ESRI.
FYI: Eu uso esse processo para depurar bibliotecas de classes que escrevo em um projeto que estão sendo utilizadas em outro. A mesma teoria deve aplicar os suplementos ESRI, pois são apenas DLLs (bibliotecas de classes) sendo chamadas para outro programa. Além do Visual Studio, acredito que qualquer outro depurador do Windows possa se conectar à DLL.
Por favor, postar comentários sobre este. Eu pensei que isso funcionaria por um tempo e estou muito curioso para ver como os outros são justos com esse método.
EDIT Acabei de criar um novo suplemento ArcCatalog, que consiste em um botão simples. Adicionei uma atribuição de sequência string stophere = "debugger stopped!";
no manipulador de eventos para o evento de clique do botão. Por meio do ArcCatalog, ele parou de usar o método Attach to Process . As informações do Visual Studio 2010 sobre o processo estão aqui .
Existem algumas coisas no MSDN sobre depuração de DLLs através de vários métodos no Visual Studio e no Windows Debugger. Pessoalmente, acho o Attach to Process melhor do que iniciar um método de programa externo e também melhor do que usar o depurador remoto .
A única desvantagem desse método é que você perde a abordagem F5 onde você depura diretamente de dentro do Visual Studio. Isso significa que, faça alterações no seu código, instale a atualização, inicie o ArcCatalog, Anexe ao Processo e atinja seus pontos de interrupção. No entanto, acho que esse método é muito bom de se saber se você tiver problemas como o seu. Esse processo pode demorar um pouco mais, mas é um método infalível para obter resultados.