-
Notifications
You must be signed in to change notification settings - Fork 100
TDS Replay
O TDSReplay é uma ferramenta investigativa que permite tirar uma foto do ERP TOTVS no momento exato de uma ocorrência, seja um erro de processamento ou execução, ou mesmo uma falha crítica que interrompa a execução do sistema.
Ele captura um conjunto de informações que permitirá a investigação pelo Suporte da TOTVS, sem a necessidade de montagens de ambiente, cópias de RPO ou Bancos de Dados.
O TDSReplay 2.0 foi aprimorado para acelerar e facilitar a obtenção das informações, e está disponível a partir das seguintes versões:
- Release 25
- AppServer igual ou superior a 19.3.1.0 (obrigatório BIN 19)
- Release 27
- AppServer igual ou superior a 19.3.1.0
- LIB
- Igual ou superior a Label 20200908
- Plugin do VsCode
- TDS-VSCode igual ou superior a 1.2.1, mais informações acesse: https://marketplace.visualstudio.com/items?itemName=totvs.tds-vscode
IMPORTANTE
: A gravação do TDSReplay para o SmartClient WebApp (HTML) estará disponível para build de AppServer igual ou superior a 19.3.1.0
- Para gravar as informações,
NÃO
é recomendado utilizar oSIGAMDI
. - Deve-se chamar o módulo diretamente ou usar o SIGAADV.
- O log é feito por thread. O Programa Inicial SIGAADV e o Programa Inicial que chama diretamente os módulos (SIGACOM por exemplo) abre apenas uma thread, sem abas. Já o SIGAMDI abre uma thread por aba aberta. Desta forma, o log valerá apenas para a aba aberta em que for iniciado.
Agora a obtenção dos dados poderá ser feita diretamente pelo usuário do sistema, da seguinte maneira:
-
Acesse a rotina que deve ser investigada a partir do ERP TOTVS.
-
Para iniciar a gravação da ocorrência pressione Shift+F6, abrindo o painel com as informações do sistema.
-
Pressione o botão Avançar até selecionar a opção Rastrear Fontes.
-
Confirme com o Suporte da TOTVS a necessidade de Gerar fontes de Lib, caso necessário marque a opção.
-
Pressione o botão Iniciar, aguarde o início do processo, e pressione o botão Concluir.
-
Execute a rotina até o ponto que reproduza a ocorrência / problema.
-
Caso haja uma falha crítica que interrompa a execução do sistema, o arquivo será automaticamente salvo.
-
Em qualquer outro caso de falha, como calculo, processo, etc, pressione novamente Shift+F6.
-
Pressione o botão Avançar até Rastrear Fontes.
-
Pressione o botão Finalizar.
-
O arquivo com as informações será gerado na pasta do SmartClient de sua estação, como no exemplo abaixo.
-
Anexe o arquivo gerado ao seu chamado.
- .
- Por fim, caso ainda não tenha feito, pressione o botão Concluir no painel com as informações do sistema.
As informações obtidas serão utilizadas pelo Suporte da TOTVS durante a investigação.
O TDSReplay faz parte do plugin tds-vscode, para mais informações acesse: https://marketplace.visualstudio.com/items?itemName=totvs.tds-vscode
Para criar um executor do TDSReplay, pressione (ctrl + shift + p no Windows / Linux ou command+p no Mac), e selecione a opção TDSReplay: Configure Launchers
.
Atenção: Os executores do TDSReplay e do depurador convencional não são compatíveis.
-
Choose Launcher
: Essa opção é uma caixa de seleção, caso necessite alterar um executor já cadastrado selecione o mesmo, caso esteja criando um novo, apenas digite seu nome. -
File
: Informe/Selecione o arquivo do TDSReplay obtido pelo cliente. -
Password
: Por padrão a senha será omitida durante a gravação dos dados, então deixe este campo em branco. -
Include Sources
: No momento do tratamento das informações é possível filtrar o conjunto de fontes que deseja importar.-
utilize o curinga asterisco (*) para auxiliar no filtro, e a vírgula (,) como separador dos filtros, ex: FINA04*.PRW,MAT*03*, ou utilize um único asterisco (*) para importar todos os fontes, porém atente que este processo terá um grande impacto sobre o tempo de importação e sobre a performance da execução durante a investigação.
-
-
Exclude Sources
: Essa opção permite filtrar o fontes que deseja ignorar durante a investigação, e aceita curingas da mesma maneira que oInclude Sources
. -
Ignore sources not found in workspace (debugging)
: Essa opção vai omitir da Linha do Tempo os fontes que não estiverem disponíveis para investigação. -
Import only the sources information
: Ao marcar essa opção, será importado apenas as informações dos fontes recuperadas do RPO (Até o momento: nome e data de compilação). Note que ao marcar essa opção não será possível configurar os campos: Include Sources, Exclude Sources e Ignore sources not found in workspace pois por padrao será importado todos os fontes disonivel no arquivo do TDS Replay informado.
No arquivo launch.json será criado a entrada: "importOnlySourcesInfo": true, que pode ser alterado, removido ou adicionado manualmente em qualquer entrada do executor com id totvs_tdsreplay_debug
-
forceImport
: Essa opção não aparece na tela, mas é possível adicioná-la diretamente no arquivo launch.json na configuração de execução. Ao colocar o valor como true ("forceImport": true) sempre que essa configuração for lançada, será feito uma nova importação. Atenção para isso pois caso o arquivo do TDS Replay seja muito grande, irá ocupar bastante espaço de armazenamento.
Atenção: Por padrão, caso ele já tenha sido importado, a mesma base será usada mesmo que o arquivo do TDS Replay seja movido ou renomeado. A reimportação automática acontecerá quando uma importação já tenha sido feita, mas a base não exista no caminho original. A opção "forceImport": true é útil para casos onde o próprio usuário julgar necessário uma nova importação.
Pressione Save ou Save/Close
, adicionando o executor arquivo arquivo launch.json
e habilitando seu uso.
O primeiro passo é a importação do arquivo, que será feito uma única vez, em sua primeira execução.
Selecione na visão Run (no painel à esquerda) o executor que inseriu no passo anterior, ele estará disponível na caixa de seleção superior, conforme imagem anterior.
O VSCode irá apresentar uma notificação com o progresso, e também, na visão Output
, irá exibir o progresso em modo texto.
O tempo de importação varia de acordo com o tamanho do arquivo gravado, e também com os filtros utilizados.
Após a o término da importação será exibida em uma nova aba a visão de Linha do Tempo
, permitindo sua reposição em tela, como na imagem abaixo:
A partir deste ponto o processo segue exatamente como um depuração convencional.
Note que ao utilizar um
Step Over
(ouF10
) a linha correspondente da execução será posicionada também na visão de Linha do Tempo, da mesma forma, selecionando um item na Linha do Tempo a depuração irá selecionar a linha correspondente no código fonte.
Importante: Ao desabilitar a opção
Ignore Source Not Found
, os fontes não localizados serão exibidos na corvermelha
, apenas parainformação
, enão poderão ser selecionados
. Note também o aumento no número de páginas da Linha do Tempo.
Da mesma forma que a depuração convencional, os valores das variaveis são exibidos nos painéis Variables e Watches.
Importante: Não é possível executar expressões durante a depuração do TDSReplay, pois este processo é apenas uma "foto" do que aconteceu, e não está associado a um AppServer em execução.
Caso um fonte tenha sido
filtrado na importação
, e umavariável
teve seu valor atribuído nesse fonte, será exibida a mensagem:N/A (Value exists in a source that was filtered)
, como no exemplo abaixo.
As tabelas são apresentadas como um escopo de variáveis e podem ser acessadas como um _array _ou objeto.
É possível visualizar o conteúdo da tabela na visão Expressions
apenas informando o nome dela.
A visão Debug Console
também permite visualizar a tabela inteira, porém é preciso usar o comando: table:NOME_DA_TABELA
Também é possível visualizar o conteúdo de um campo usando a visão Expressions
ou a visão Debug Console
. Para isso deve-se usar o formato: TABELA->CAMPO
É possível selecionar quais fontes serão apresentados na Linha de Tempo acionando-se a ação Sources
, que encontra-se no rodapé da visão.
No diálogo apresentado, selecione os fontes que deseja ver na Linha do Tempo e confirme (Apply
).
A ação Reset
, cancela as seleções efetuadas, deixando o padrão de seleção que são todos os fontes.
A ação Cancel
, fecha o diálogo sem aplicar as seleções no filtro.
Somente os eventos dos fontes serão apresentados e com destaque visual indicando que esta sendo aplicado um filtro.
Pode-se repetir a operação sempre que necessários, adicionando ou retirando novos fontes.