Comandos de execução do depurador

Passo único para instruções <quantidade> ( F11 ).
Passo único durante instruções <quantidade> ( F10 ).
Passo único até que o manipulador atual da sub-rotina/execução
retorne ( Shift-F11 ).
Retoma a execução ( F5 ).
Retoma a execução até que a próxima verdadeira ramificação seja executada.
Retoma a execução até que a próxima falsa ramificação seja executada.
Retoma a execução até que a exceção seja criada.
Retoma a execução até que a interrupção seja obtida ( F7 ).
Retoma a execução até a próxima instrução mais adiante.
Retoma a execução até que o atraso determinado tenha decorrido.
Retoma a execução até o próximo intervalo de apagamento vertical [2] ( F8 ).
Retoma a execução até a próxima alternância da CPU ( F6 ).
Foca o depurador apenas na <CPU>.
Para a depuração na <CPU>.
Retoma a depuração na <CPU>.
Rastreia a determinada CPU para um arquivo.
Rastreia a determinada CPU para um arquivo, mas ignore as
sub-rotinas.
Elimina todos os arquivos de rastreamento que estiverem abertos.

step

s[tep] [<quantidade>]

Avança uma ou mais instruções sobre a CPU que estiver atualmente em execução. Executa uma instrução caso <quantidade> seja omitido ou a <quantidade> de passos para as instruções caso seja informada.

Exemplos:

s
Avança uma instrução na CPU atual.
step 4
Avança 4 instruções na CPU atual.

Retorna para Comandos de execução do depurador.

over

o[ver] [<quantidade>]

O comando over avança um único passo sobre uma ou mais instruções que estiverem sendo executadas na CPU, passando por cima das chamadas da sub-rotina e das capturas do manipulador e contando-os como uma única instrução. Observe que, ao passar por cima de uma chamada da sub-rotina o código pode ser executado nas outras CPUs antes do retorno da chamada.

Passa por cima de uma instrução caso a <quantidade> seja omitida, ou passe por cima das instruções caso a <quantidade> seja informada.

Observe que esta funcionalidade pode não estar implementada em todos os tipos de CPU. Caso não esteja, então o comando over se comportará exatamente como o comando step.

Exemplos:

o
Avança uma instrução na CPU atual.
over 4
Avança 4 instruções na CPU atual.

Retorna para Comandos de execução do depurador.

out

out

O comando out avança um único passo até encontrar um retorno da sub-rotina ou caso o retorno de uma instrução em exceção seja encontrada. Observe que como ele detecta o retorno das condições da exceção, caso tente sair de uma sub-rotina e uma interrupção/exceção ocorra antes de atingir o final, será possível interromper o final das exceções do manipulador prematuramente.

Observe que a funcionalidade para sair pode não estar implementada em todos os tipos de CPU. Caso não esteja, então o comando out se comportará exatamente como o comando step.

Exemplo:

out
Continua os passos até que uma sub-rotina ou um manipulador das exceções retorne.

Retorna para Comandos de execução do depurador.

go

g[o] [<endereço>]

Retoma a execução. O controle não será devolvido ao depurador até que um ponto de interrupção ou que um ponto de controle [1] seja atingido ou até que você faça uma interrupção manual. Caso o <endereço> opcional seja fornecido, um ponto temporário de interrupção incondicional será definido na CPU que estiver visível no endereço determinado. Este ponto será eliminado automaticamente quando for atingido.

Exemplos:

g
Retoma a execução até que o ponto de interrupção/controle seja atingido ou até que uma interrupção (break) seja manualmente requisitada.
g 1234
Retoma a execução parando no endereço 1234 até que outra condição faça com que a execução pare antes dela.

Retorna para Comandos de execução do depurador.

gbf

gbf [<condição>]

Retoma a execução. O controle não será devolvido ao depurador até que um ponto de interrupção ou de controle seja acionado ou até que uma ramificação condicional ou uma instrução ignorada não seja tomada, após qualquer slot atrasado.

O parâmetro opcional <condição> permite que você especifique uma expressão que será avaliada cada vez que uma ramificação condicional seja encontrada. Caso o resultado da expressão seja verdadeiro (não zero), a execução será interrompida se a ramificação não tiver sido tomada; caso contrário, a execução continuará sem qualquer notificação.

Exemplos:

gbf
Retoma a execução até que o ponto de interrupção/controle seja atingido ou até
a próxima ramificação falsa.
gbf {pc != 1234}
Retoma a execução até que a próxima ramificação seja falsa, independente da
instrução no endereço 1234.

Retorna para Comandos de execução do depurador

gbt

gbt [<condição>]

Retoma a execução. O controle não será devolvido ao depurador até que um ponto de interrupção ou de controle seja acionado ou até que uma ramificação condicional ou uma instrução ignorada seja tomada, seguido de qualquer slot atrasado.

O parâmetro opcional <condição> permite que você especifique uma expressão que será avaliada cada vez que uma ramificação condicional seja encontrada. Caso o resultado da expressão seja verdadeiro (não zero), a execução será interrompida após a ramificação ter sido tomada; caso contrário, a execução continuará sem qualquer notificação.

Examplos:

gbt
Retoma a execução até que o ponto de interrupção/controle seja atingido ou até
a próxima ramificação verdadeira.
gbt {pc != 1234}
Retoma a execução até que a próxima ramificação seja verdadeira, independente
da instrução no endereço 1234.

Retorna para Comandos de execução do depurador

gex

ge[x] [<exceção>,[<condição>]]

Retoma a execução. O controle não será devolvido ao depurador até que um ponto de interrupção ou de controle seja atingido, ou até que seja levantada uma condição de exceção na CPU atual. Use o parâmetro opcional <exceção> para parar a execução apenas numa condição de exceção específica. Caso a <exceção> não seja usada, a execução irá parar em qualquer condição de exceção.

O parâmetro opcional <condição> permite determinar uma expressão que será avaliada cada vez que uma condição específica de exceção for levantada. Caso o resultado da expressão seja verdadeiro (não zero), a exceção interromperá a execução; caso contrário, a execução continuará sem qualquer notificação.

Exemplos:

gex
Retoma a execução até que o ponto de interrupção/controle seja atingido ou até que uma condição de exceção seja levantada na CPU atual.
ge 2
Retoma a execução até que o ponto de interrupção/controle seja atingido ou até que uma condição de exceção 2 seja levantada na CPU atual.

Retorna para Comandos de execução do depurador.

gint

gi[nt] [<irqline>]

Retoma a execução. O controle não será devolvido ao depurador até que um ponto de interrupção ou de controle seja atingido, ou até que uma interrupção seja confirmada e reconhecida na CPU atual. Use o parâmetro opcional <irqline> para parar a execução apenas na interrupção determinada da linha que está sendo confirmada e reconhecida. Caso <irqline> não seja usado, a execução será parada quando qualquer interrupção for reconhecida.

Exemplos:

gi
Retoma a execução até que o ponto de interrupção/controle seja atingido ou até que uma interrupção seja confirmada e reconhecida na CPU atual.
gint 4
Retoma a execução até que o ponto de interrupção/controle seja atingido ou até que uma interrupção requeira que a linha 4 seja confirmada e reconhecida na CPU atual.

Retorna para Comandos de execução do depurador.

gni

gni [<quantidade>]

Retoma a execução. O controle não será devolvido ao depurador até que um ponto de interrupção ou de controle seja acionado. Um ponto de interrupção temporário e incondicional é definido no endereço do programa <quantidade> atual, sendo passado de forma sequencial. Ele é automaticamente removido quando este ponto de interrupção é acionado.

O parâmetro <quantidade> é opcional e retorna para o padrão 1 quando nada for definido. O comando não faz nada caso <quantidade> seja definido como 0. O valor limite para <quantidade> é o decimal 512.

Exemplos:

gni

Retoma a execução até que o ponto de interrupção/controle seja atingido, incluindo o ponto de interrupção temporário definido no endereço da instrução seguinte.

gni 2

Retoma a execução até que o ponto de interrupção/controle seja atingido. Um ponto de interrupção é definido após duas instruções passarem da atual.

Retorna para Comandos de execução do depurador

gtime

gt[ime] <milissegundos>

Retoma a execução. O controle não será devolvido ao depurador até que o tempo interno da emulação tenha decorrido. O intervalo é determinado em milissegundos.

Exemplo:

gtime #10000
Retoma a execução por 10 segundos do tempo de emulação.

Retorna para Comandos de execução do depurador.

gvblank

gv[blank]

Retoma a execução. O controle não será devolvido ao depurador até que um ponto de interrupção ou de controle seja atingido, ou até que se inicie o intervalo de apagamento vertical para uma tela emulada.

Exemplos:

gv
Retoma a execução até que o ponto de interrupção/controle seja atingido ou até que um intervalo de apagamento vertical se inicie.

Retorna para Comandos de execução do depurador.

next

n[ext]

Retoma a execução até que uma CPU diferente seja agendada. Caso seja ignorada pelo uso dos comandos ignore ou focus a execução da CPU não vai parar.

Exemplo:

n
Retoma a execução, parando quando uma CPU diferente que não foi ignorada estiver agendada.

Retorna para Comandos de execução do depurador.

focus

focus <CPU>

Foca de forma exclusiva na <CPU> definida ignorando todas as outras. O argumento <CPU> pode ser a etiqueta de um dispositivo ou um número de depuração da CPU (consulte Determinando os dispositivos e as faixas de endereço para obter mais detalhes). É o mesmo que usar o comando ignore para ignorar todas as CPUs que não seja a CPU que foi definida.

Exemplos:

focus 1
Concentre-se exclusivamente na segunda CPU do sistema (num índice com base zero), ignorando todas as outras CPUs.
focus audiopcb:melodycpu
Concentre-se exclusivamente na CPU com o caminho absoluto da etiqueta :audiopcb:melodycpu.

Retorna para Comandos de execução do depurador.

ignore

ignore [<CPU>[,<CPU>[,…]]]

Ignora determinadas CPUs no depurador. As CPUs podem ser definidas através de uma etiqueta ou pelo número da CPU no depurador (consulte Determinando os dispositivos e as faixas de endereço para obter mais detalhes). O depurador nunca mostra a execução para as CPUs que forem ignoradas e os pontos de interrupção ou de observação nas CPUs ignoradas não têm qualquer efeito. Caso nenhuma CPUs seja indicada, as CPUs atualmente ignoradas serão listadas. Utilize o comando observe para parar de ignorar uma CPU.

Observe que você não pode ignorar todas as CPUs; pelo menos uma CPU deve ser observada o tempo todo.

Exemplos:

ignore audiocpu
Ignora a CPU com o caminho absoluto da etiqueta :audiocpu ao utilizar o depurador.
ignore 2,3,4
Ignora a terceira, quarta e quinta CPU no sistema (num índice com base zero) ao utilizar o depurador.
ignore
Lista as CPUs que estiverem sendo ignoradas pelo depurador.

Retorna para Comandos de execução do depurador.

observe

observe [<CPU>[,<CPU>[,…]]]

Permite a interação com determinada CPU no depurador. As CPUs podem ser definidas através de etiquetas ou pelo número da CPU (consulte Determinando os dispositivos e as faixas de endereço para obter mais detalhes). Este comando reverte o comando ignore. Quando nenhuma CPUs for definida, apenas as CPUs observadas no momento serão listadas.

Exemplos:

observe audiocpu
Para de ignorar a CPU com o caminho absoluto da etiqueta :audiocpu ao utilizar o depurador.
observe 2,3,4
Para de ignorar a 3ª, 4ª, 5ª CPU no sistema (num índice com base zero) ao utilizar o depurador.
observe
Lista as CPUs que estão atualmente sendo observadas pelo depurador.

Retorna para Comandos de execução do depurador.

trace

trace {<nome_do_arquivo>|off}[,<CPU>[,[noloop|logerror][,<ação>]]]

Inicia ou interrompe o rastreamento da execução de determinada <CPU> ou da <CPU> atualmente visível caso nenhuma tenha sido definida. Para ativar o rastreamento defina o nome do arquivo para o registro do rastreamento no parâmetro <nome_do_arquivo>. Para desativar o rastreamento use o termo off no parâmetro <nome_do_arquivo>. Quando o argumento <nome_do_arquivo> começar com dois chevrons (>>), ele é tratado como uma diretiva para abrir o arquivo para anexar em vez de gravar por cima.

O terceiro parâmetro opcional é um campo sinalizador. As sinalizações compatíveis são noloop e logerror. As diversas sinalizações devem ser separadas por caracteres | (barra vertical). Por padrão, os laços são detectados e condensados numa única linha. Quando a sinalização noloop for definida, os loops não serão detectados e todas as instruções serão registradas como já executadas. Quando a sinalização logerror for definida, a saída do registro de erro será incluída no registro de rastreamento.

O parâmetro opcional <ação> é um comando de depuração para ser executado antes que cada mensagem de rastreamento seja registrada. Geralmente, isto incluirá um comando tracelog ou tracesym incluindo informações adicionais no registro de rastreamento. Observe que talvez seja necessário cercar a ação dentro de chaves { } garantindo que as vírgulas e os ponto-e-vírgulas dentro do comando não sejam interpretadas no contexto do próprio comando trace.

Exemplos:

trace joust.tr
Inicia o rastreio da execução na CPU que estiver visível no momento, registrando a saída no arquivo joust.tr.
trace dribling.tr,maincpu
Inicia o rastreio da execução com o caminho absoluto da etiqueta :maincpu:, registrando a saída no arquivo dribling.tr.
trace starswep.tr,,noloop
Inicia o rastreio da execução na CPU que estiver visível no momento, registrando a saída no arquivo starswep.tr, com a detecção de loop desativada.
trace starswep.tr,1,logerror
Inicia o rastreio da execução da segunda CPU do sistema (num índice com base zero), registrando a saída junto com a saída do registro de erro no arquivo starswep.tr.
trace starswep.tr,0,logerror|noloop
Inicia o rastreio da execução da primeira CPU do sistema (num índice com base zero), registrando a saída junto com a saída do registro de erro no arquivo starswep.tr, com a detecção de loop desativada.
trace >>pigskin.tr
Inicia o rastreio da execução na CPU que estiver visível no momento, agregando a saída do registro ao arquivo pigskin.tr.
trace off,0
Desativa o rastreamento para a primeira CPU no sistema (num índice com base zero).
trace asteroid.tr,,,{tracelog "A=%02X ",a}
Inicia o rastreio da execução na CPU que estiver visível no momento, registrando a saída no arquivo asteroid.tr. Antes de cada linha registra A=<aval> ao registro de rastreamento.

Retorna para Comandos de execução do depurador.

traceover

traceover {<nome_do_arquivo>|off}[,<CPU>[,[noloop|logerror][,<ação>]]]

Inicia ou interrompe o rastreamento da execução de determinada <CPU> ou da <CPU> atualmente visível caso nenhuma tenha sido definida. No momento que o retorno a sub-rotina é encontrada, o rastreamento será ignorado

No momento que uma chamada de sub-rotina é encontrada, a sub-rotina será ignorada pelo rastreamento. É usado o mesmo algoritmo que é usado no comando step over. Ele não funcionará corretamente com funções recursivas ou caso o endereço retornado não siga imediatamente a instrução da chamada.

Este comando aceita os mesmos parâmetros que o comando trace. Favor consultar a seção correspondente para uma descrição mais detalhada das opções e para obter mais exemplos.

Exemplos:

traceover joust.tr
Inicia o rastreio da execução na CPU que estiver visível no momento, registrando a saída no arquivo joust.tr.
traceover dribling.tr,maincpu
Inicia o rastreio da execução com o caminho absoluto da etiqueta :maincpu:, registrando a saída no arquivo dribling.tr.
traceover starswep.tr,,noloop
Inicia o rastreio da execução na CPU que estiver visível no momento, registrando a saída no arquivo starswep.tr, com a detecção de loop desativada.
traceover off,0
Desativa o rastreamento para a primeira CPU no sistema (num índice com base zero).
traceover asteroid.tr,,,{tracelog "A=%02X ",a}
Inicia o rastreio da execução na CPU que estiver visível no momento, registrando a saída no arquivo asteroid.tr. Antes de cada linha registra A=<aval> ao registro de rastreamento.

Retorna para Comandos de execução do depurador

traceflush

traceflush

Grava no disco todos os arquivos dos registros de rastreamento que estiverem abertos.

Exemplo:

traceflush
Grava todos os arquivos dos registros de rastreamento.

Retorna para Comandos de execução do depurador