Existe uma maneira para depurar um aplicativo em execução compilado no modo de versão?
-
22-08-2019 - |
Pergunta
Eu tenho um serviço do Windows dotnet que atualmente está pendurado, mas correndo. Existe uma maneira de anexar um depurador a ele, apesar da falta de símbolos; e que já está sendo executado?
Solução
Ignorar o aviso "há símbolos". Depois de ter um depurador nativo anexado (i preferem WinDbg para coisas como esta), em seguida, carregar o pacote de ferramentas SoS:
.loadby sos mscorwks
Agora você pode obter um callstack gerenciados usando o comando !clrstack
, e esperança que lhe dá informações suficientes para descobrir o jeito. Aqui está um prático cábula com alguns outros se isso não fazer isso por você.
Não vai ajudá-lo neste momento, mas ... adquirir o hábito de ligar a geração de arquivo símbolo para depuração e -mode compilações. Não há nenhuma razão para não, e ele vai fazer a sua vida um pouco mais fácil em situações como esta.
Outras dicas
De IDE MS dev Debug -> Processos -> Anexar (Depois de escolher um processo.) Você pode ter que clicar na caixa "Mostrar processos do sistema". Pode haver nenhuma informação útil embora ...
Aqui está o código de exemplo, links para ferramentas, e apresentações sobre como depurar um processo .NET hung .
Você provavelmente também quer assistir este apresentação de vídeo, que apresenta as mesmas ferramentas e amostras. Apesar do texto em língua sueca na página da web, o vídeo está em Inglês.