samp.directory
← Scripts y librerías

NullSablex/PawnPro-Debugger

Visual debugger (DAP) for the Pawn language on SA-MP and open.mp. Brings source-level debugging to gamemodes on a local development server, shipping as a server plugin plus a debug adapter written in Rust and driven by the PawnPro editor extension.

Plugin★ 0actualizado hace 31 díasAGPL-3.0RustArchivado
Abrir en GitHub

El autor archivó este repositorio, así que ya no se mantiene.

README.md

[!IMPORTANT] Este repositório foi arquivado. O depurador — adaptador, protocolo e o plugin do servidor — passou a fazer parte do PawnPro-Core, onde o desenvolvimento continua: é de lá que saem o código, as releases e a documentação, e é lá que vão issues e pull requests.

O código publicado aqui permanece sob AGPL-3.0-or-later; no núcleo vale a licença dele. O histórico e as releases deste repositório ficam de pé, para referência.


Depure código Pawn direto no editor, num servidor local de desenvolvimento: breakpoints, step, inspeção e edição de variáveis, e pausa na linha exata de um erro de runtime — antes de a VM abortar. Integrado à extensão PawnPro, que lança o adaptador e cuida do ciclo (recompilar, subir o servidor, conectar).

Recursos

RecursoDetalhe
BreakpointsPor linha, condicionais (var OP valor) e por contagem de acertos (N, ==N, >=N, <=N, >N, <N, %N).
Breakpoints de funçãoParar ao entrar numa função pelo nome.
LogpointsMensagem com {expressão} interpolada, sem pausar.
StepIn, over e out.
Call stack multi-frameCaminha a cadeia de frames (FRM→retorno): função, linha e variáveis por frame.
Inspeção de variáveisint, Float:, bool: e hex; arrays expansíveis (elementos como filhos) e arrays de char como string.
Watch / hoverExpressões com + - * / % e comparações, variáveis e arr[i].
AutocompleteSugestão de variáveis em escopo no watch e no console.
Editar variávelDurante a pausa, por painel (setVariable) ou por expressão (setExpression), inclusive elementos de array (arr[i] = 10).
Data breakpointsPausar quando um valor muda — globais, locais e elementos de array; watches de locais expiram ao retornar o frame.
Ler memóriaHex view da memória de dados crua a partir de qualquer variável (readMemory).
Pausar em erro de runtimeDivisão por zero, índice fora do limite, colisão pilha/heap (STACKERR), underflow de heap (HEAPLOW) e acesso inválido à memória (MEMACCESS) — na linha, antes do abort. SA-MP e open.mp.
Mensagens localizadaspt-BR, en, es, ro, ru — seguem o idioma do editor.

Detalhes em Recursos e, para a pausa no erro, em Como funciona a pausa no erro.

Estrutura (workspace Cargo)

CrateTipoPapel
crates/protocollibProtocolo próprio plugin ↔ adaptador (NDJSON sobre socket local) e as mensagens localizadas.
crates/debug-plugincdylibPlugin carregado pelo servidor: debug hook, breakpoints, step, inspeção e leitura da memória da VM.
crates/dap-adapterbinAdaptador DAP: fala com o editor e com o plugin.

O parser do formato AMX_DBG (endereço ↔ linha ↔ símbolo) e as primitivas de VM vêm do SDK rust-samp (samp::debug / samp_sdk::debug), fonte única compartilhada entre o plugin e o adaptador.

Este repositório contém apenas o código Rust do debugger; a integração com o editor (contributes.debuggers + launch.json) fica na extensão PawnPro.

Build

cargo build    # workspace inteiro
cargo test     # todos os testes
cargo clippy --workspace --all-targets -- -D warnings -W clippy::pedantic

O plugin é compilado para a arquitetura do servidor (SA-MP e open.mp são 32-bit → i686-unknown-linux-gnu); o adaptador, para a do host.

Licença

GNU AGPL v3 ou posterior (AGPL-3.0-or-later). Trabalhos derivados devem permanecer sob a mesma licença e ter o código-fonte disponível.

amxdapdebug-adapter-protocoldebuggerdebugging-toolgamedevopen-mppawnrustsa-mpsampvscode

Esta página se genera con lo que GitHub publica sobre el repositorio. samp.directory no aloja el código. Informar de un problema con esta ficha