Comandos de execução do depurador¶
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
step 4
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
over 4
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
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
g 1234
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
gbf {pc != 1234}
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
gbt {pc != 1234}
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
ge 2
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
gint 4
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
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
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
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
focus audiopcb:melodycpu
: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
:audiocpu
ao utilizar o depurador.ignore 2,3,4
ignore
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
:audiocpu
ao utilizar o depurador.observe 2,3,4
observe
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
joust.tr
.trace dribling.tr,maincpu
:maincpu:
, registrando a saída no arquivo dribling.tr
.trace starswep.tr,,noloop
starswep.tr
, com a detecção de loop desativada.trace starswep.tr,1,logerror
starswep.tr
.trace starswep.tr,0,logerror|noloop
starswep.tr
, com a detecção de loop desativada.trace >>pigskin.tr
pigskin.tr
.trace off,0
trace asteroid.tr,,,{tracelog "A=%02X ",a}
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
joust.tr
.traceover dribling.tr,maincpu
:maincpu:
, registrando a saída no arquivo dribling.tr
.traceover starswep.tr,,noloop
starswep.tr
, com a detecção de loop desativada.traceover off,0
traceover asteroid.tr,,,{tracelog "A=%02X ",a}
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
Retorna para Comandos de execução do depurador