totvs / tds-vscode

Totvs Developer Studio for vscode
Apache License 2.0
171 stars 100 forks source link

Debugar ponto de entrada em rotina POUI (FINA716) Protheus #1102

Closed rodrigoteixeira1975 closed 1 year ago

rodrigoteixeira1975 commented 1 year ago

Olá,

Na nova release 12.1.2210 do Protheus, algumas rotinas estão sendo migradas para POUI, por exemplo a rotina FINA716-APLICAÇÕES/EMPRESTIMOS, acontece que, os pontos de entrada que existem na antiga rotina (FINA183) que é chamada pela FINA716 (POUI) não é possivel passar pelo debug do ponto de entrada, a nova versão POUI mostra as mensagens de controle no ponto de entrada, mas não "para" no ponto de entrada para debug.

Atte Rodrigo Teixeira

rodrigoteixeira1975 commented 1 year ago

DEBUG VSCODE ROTINA DESENVOLVIDA EM POUI.zip

lwtnb-wrk commented 1 year ago

@rodrigoteixeira1975 Veja em https://github.com/totvs/tds-vscode/blob/master/TROUBLESHOOTING.md#gerando-logs como gerar e nos envie os logs para analise. Em especial o dap.log.

rodrigoteixeira1975 commented 1 year ago

Olá meu caro! Aqui os logs gerados... logs.zip

lwtnb-wrk commented 1 year ago

@rodrigoteixeira1975 Grato pelas informações, mas realmente os logs não mostram nenhuma passagem pelo breakpoint na linha 21 da F183VNAT.PRW. Isso não quer dizer que não passou por essa linha, mas que o AppServer não nos enviou nenhuma informação ao passar por esse ponto. Desconheço essa rotina e ponto de entrada, mas estou desconfiando que essas rotinas podem estar sendo executadas em outra thread como jobs. E nesse caso, seria necessário debugar como se fossem jobs. Veja em https://github.com/totvs/tds-vscode/blob/master/docs/debugger.md#depura%C3%A7%C3%A3o-de-servi%C3%A7os-jobs como realizar depuração em Jobs. Se puder testar e validar se isso resolve seu problema, nos avise se funciona ou não enquanto tento levantar outras informações aqui.

ricardomansano commented 1 year ago

Bom dia @rodrigoteixeira1975 , pra vc conseguir depurar em multi-thread é muito importante que não esteja em um ambiente balanceado, acesse diretamente um servidor especifico

Como padrão, tbem não é recomendável depurar em um ambiente de produção, ou vai parar todos que estiverem conectados no mesmo servidos

Se seguir essas duas regras não deverá ter problemas pra depurar os pontos de entrada.

rodrigoteixeira1975 commented 1 year ago

Bom dia,

Este ponto de entrada está na rotina FINA183-APRORIAÇÃO CONTABIL de APLICAÇÕES FINANCEIRAS, antes esta rotina era chamada direto pelo menu, a partir da release 12.1.2210 ela passou a ser chamada pelo WIZARD POUI FINA716, e dai em diante parou de funcionar adequadamente, o Wizard passa pelo ponto de entrada mostra os erros, mas, pelo que percebi as variaveis publicas do padrão não estão sendo acessadas a partir desta nova release.

Agradeço imensamente pela ajuda e como tenho um ticket aberto na TOTVS para tratar deste problema e neste ticket foi solicitado pelo suporte que abrisse esta issue na comunidade Git, do que discordei, pois temos contrato de prestação de serviços que deve entergar um ERP funcional e para o qual existe desde sempre estes ponto de entrada que nos permite adequar a aplicação às regras de negocios e controle necessários, sendo assim, como a TOTVS fez esta mudança de tecnologia no desenvolvimento da aplicação onde funcionalidades deixam de existir, vejo uma possivel quebra de contrato nesta situação, por isso vou retomar o assunto via ticket e acionar o departamento juridico para que possam orientar no que pode ser feito.

Muito obrigado!

ricardomansano commented 1 year ago

Bom dia @rodrigoteixeira1975 ,

Isso é algo que ja levei pra pelo menos 5 reuniões internas, vcs como Clientes podem abrir chamados onde for mais conveniente, insista quando se sentir negligenciado, é seu direito.

A grande vantagem do Git é que as issues aqui chegam diretamente pro meu time e a comunidade pode ajudar, mas chamados internos são ferramentas importantes quando precisarmos acessar outros setores, e este parece ser seu caso.

Estou encerrando este atendimento por aqui, reforce no chamado aberto no Portal que em conversa comigo (se refira a mim como Mansano de TEC) foi sugerido continuidade do atendimento interno, meu email é mansano@totvs.com.br

Se eu puder ajudar em mais algo é só me acionar

lwtnb-wrk commented 1 year ago

@rodrigoteixeira1975 Poderia informar o número do chamado que abriu na TOTVS?

rodrigoteixeira1975 commented 1 year ago

@rodrigoteixeira1975Poderia informar o número do chamado que abriu na TOTVS? Sim.. sim... o numero é: 16706885

lwtnb-wrk commented 1 year ago

@rodrigoteixeira1975 Consegui reproduzir o comportamento que está tendo na depuração das rotinas de PO UI. Como eu havia comentado, as rotinas de PO UI rodam em um processo apartado do que você inicia a depuração. E para poder depurar a outra instância é necessário habilitar a depuração multi-thread. Adicione a seguinte linha ao seu launch.json: "enableMultiThread": true, Talvez seja necessário um ajuste da vírgula no final da linha, caso existe uma linha antes e/ou depois dela. Segue um exemplo completo para ficar mais claro: { "type": "totvs_language_debug", "request": "launch", "name": "SIGAFIN", "program": "SIGAFIN", "programArguments": [], "smartclientBin": "C:/totvs/bin/smartclient/smartclient.exe", "logFile": "${workspaceFolder}\daplog.log", "dpiMode": false, "isMultiSession": true, "enableMultiThread": true, "enableTableSync": true }, Enfim, com essa configuração, a depuração deve parar no ponto de parada informado e você deve conseguir depurar sua customização. At.,

rodrigoteixeira1975 commented 1 year ago

Aqui nova evidencia, onde mesmo configurado com MultiThread = True NÃO para no PE!!! FINA716 - FINA183 - EVIDENCIA MESMO HABILITADO MULTITRHEAD NAO PARA NO PONTO ENTRADA.zip

ricardomansano commented 1 year ago

Boa tarde, Tô reabrindo a questão por aqui já que estamos trocando arquivos. @leowww , só documenta o que for relevante no chamado pfv. Grato,

lwtnb-wrk commented 1 year ago

@rodrigoteixeira1975 A única diferença que notei agora foi que eu executei direto o SIGAFIN e você deve estar executando via SIGAMDI. Poderia retestar informando o SIGAFIN ou utilizando o SIGAADV ao invés do SIGAMDI para ver se faz no seu ambiente. Eu testei com o SIGAMDI aqui e mesmo assim parou no ponto de parada.

Outra coisa, poderia enviar o console.log de seu AppServer também?

rodrigoteixeira1975 commented 1 year ago

Leo, mesmo com SIGAFIN tb não parou no PE. Segue aqui os consoles.log e bkp console.log

ricardomansano commented 1 year ago

@rodrigoteixeira1975 , vi que tinham fechado o chamado no Portal e pedi que reabrissem. podemos interagir por lá, ou manter aqui atualizado caso alguem tenha o mesmo problema, o que prefere fazer?

rodrigoteixeira1975 commented 1 year ago

Ola Mansano, podemos reabrir, sem problemas ! Grato!

DanielYampolschi commented 1 year ago

bom dia @rodrigoteixeira1975 , sou da equipe do @leowww e do @ricardomansano. Fiz alguns testes por aqui e realmente, não parar no PE acontece apenas quando o enableMultiThread está com "false".

Olhando os primeiros logs que você enviou, vi que naquela execução essa era a situação (enableMultiThread:false), porém, como você informou por aqui e como está no vídeo, isso ainda acontece com esse parâmetro como true.

Então te peço pra por favor gerar os logs mais uma vez (caso não lembre com o fazer, segue o link que o Leo enviou anteriormente com as instruções: https://github.com/totvs/tds-vscode/blob/master/TROUBLESHOOTING.md#gerando-logs tem as instruções) para termos uma visão melhor do processo, se é alguma informação que o servidor não está enviando, ou algum fluxo nosso.

E após você enviar os logs, te peço um teste também, é um chute no escuro, mas... nos últimos logs, vi que a pasta onde os fontes estão localizados é: C:/Protheus12/Fontes/.vscode/

Se você tiver um drive D (ou qualquer outra letra que não o C) na tua máquina, transfira os fontes para lá (ah, e use a ultima pasta como algo diferente de .vscode, deixando esse nome apenas para a pasta da IDE), e tente abrir o vscode, e executar por ela.

Porém se você não tiver outro drive além do C, renomeie a sua pasta raiz .vscode (A pasta onde está tudo, e não a do próprio vscode, por exemplo, você tem uma pasta .vscode dentro da sua .vscode ficando assim: C:/Protheus12/Fontes/.vscode/.vscode) clique com o botão direito nela e garanta que essa pasta possui todas as permissões de leitura e escrita.

Muito obrigado.

DanielYampolschi commented 1 year ago

@rodrigoteixeira1975 esqueci de pedir mais um teste... mude uma ou mais strings quaisquer no seu fonte com o PE, colocando um "2 - " no inicio, ou algo assim.. compile o fonte e execute novamente tb.. e confirme se apareceu essa nova mensagem. Obrigado.

rodrigoteixeira1975 commented 1 year ago

Daniel / Leo / Mansano, após desinstalar o VS, deletar as pastas .vscode e reinstalar tudo novamente, reconfigurar o debug funcionou.

Muito obrigado!

Atte

lwtnb-wrk commented 1 year ago

@rodrigoteixeira1975 Ah excelente, então era alguma sujeira de configuração/instalação com problema mesmo.

Pedi sua confirmação no chamado aberto na TOTVS então por favor, responda lá também para que possamos encerrar esse caso.