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

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

  1. Abra o fonte .prw no VSCode
  2. Click na margem esquerda da linha onde quer parar (aparece um circulo vermelho)
  3. Se a linha tiver codigo executavel, o breakpoint fica solido. Se for comentario/branco, vira tracejado (nao para)

4. Iniciar debug

  1. Pressione F5
  2. VSCode pergunta o nome do programa (User Function) — ex: U_MinhaFunc
  3. SmartClient abre, conecta no AppServer, executa
  4. Quando atingir o breakpoint, VSCode para a execucao

5. Comandos de debug

6. Inspecionar variaveis

No painel esquerdo do VSCode em modo debug:

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

Veja também