Debug AdvPL com SmartClient e TDS-VSCode
Como debugar codigo AdvPL com breakpoints visuais, inspecao de variaveis e execucao passo-a-passo usando TDS-VSCode + SmartClient.
Debug visual em AdvPL e uma das maiores melhorias do TDS-VSCode sobre o TDS-Eclipse antigo. Quebra um breakpoint, ve variaveis em runtime, navega a stack — sem ConOut por todo lado.
1. Pre-requisitos
- TDS-VSCode instalado e conectado num server
- SmartClient instalado localmente (
../totvs/bin/smartclient/smartclient.exe) - Fonte AdvPL ja compilado no RPO
- Permissao de debug no AppServer
2. Configurar launch.json
Na pasta .vscode/launch.json do projeto:
{
"version": "0.2.0",
"configurations": [
{
"type": "totvs_language_debug",
"request": "launch",
"name": "TOTVS Language Debug",
"program": "${command:AskForProgramName}",
"smartclientBin": "../totvs/bin/smartclient/smartclient.exe",
"cwb": "${workspaceFolder}",
"enableMultiThread": false,
"enableTableSync": true
}
]
}3. Colocar breakpoint
- Abra o fonte
.prwno VSCode - Click na margem esquerda da linha onde quer parar (aparece um circulo vermelho)
- Se a linha tiver codigo executavel, o breakpoint fica solido. Se for comentario/branco, vira tracejado (nao para)
4. Iniciar debug
- Pressione
F5 - VSCode pergunta o nome do programa (User Function) — ex:
U_MinhaFunc - SmartClient abre, conecta no AppServer, executa
- Quando atingir o breakpoint, VSCode para a execucao
5. Comandos de debug
- F5 — Continue (roda ate proximo breakpoint)
- F10 — Step Over (proxima linha, sem entrar em funcoes)
- F11 — Step Into (entra dentro da funcao)
- Shift+F11 — Step Out (sai da funcao atual)
- Ctrl+Shift+F5 — Restart
- Shift+F5 — Stop
6. Inspecionar variaveis
No painel esquerdo do VSCode em modo debug:
- VARIABLES: Locals, Privates, Publics, Statics — expandiveis
- WATCH: adicione expressoes (ex:
SA1->A1_COD,Len(aArray)) - CALL STACK: pilha de chamadas
- BREAKPOINTS: lista de todos, da pra desativar sem remover
7. Inspecionar tabelas Protheus
No painel WATCH, adicione: SA1->A1_NOME, SE1->E1_SALDO — ve o valor do registro CORRENTE da alias. Util pra debug de RecLock/MsUnlock.
8. Pegadinhas
- Fonte alterado e nao recompilado: breakpoint cai na linha errada
- Multi-thread: se
enableMultiThread: true, breakpoints podem disparar fora de ordem - Permissao: nem todo usuario do Protheus pode debugar — confirmar no Configurador
- JOB sem terminal: rotinas em job nao param em breakpoint sem TDS conectado