Sunteți pe pagina 1din 21

30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink

http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 1/21
Processo de Depurao e Caractersticas
Nesta pgina ...
Maneiras para depurar arquivos MATLAB
Preparao para depurao
Definir pontos de interrupo
Executar um arquivo com pontos de interrupo
Passo atravs de um arquivo
Examine Valores
Corrigir problemas e depurao Fim
Pontos de interrupo condicionais
Os pontos de interrupo em Funes annimas
Os pontos de interrupo em mtodos que as funes de sobrecarga
Os pontos de interrupo de erro
Maneiras para depurar arquivos MATLAB
Voc pode depurar MATLAB

arquivos usando o Editor, que uma interface grfica do usurio, bem como
atravs de funes de depurao a partir da janela de comando. Voc pode usar ambos os mtodos de forma
intercambivel. Estes temas e descrever o exemplo ambos os mtodos.
Preparao para depurao
Faa o seguinte para se preparar para depurao:
1. Abra o arquivo - Para usar o Editor para depurao, abri-lo com o arquivo a ser executado.
2. Salvar alteraes - Se voc estiver editando o arquivo, salve as alteraes antes de iniciar a depurao.
Se voc tentar executar um arquivo com alteraes no salvas a partir do editor, o arquivo salvo
automaticamente antes de executar. Se voc executar um arquivo com alteraes no salvas a partir da
janela de comando, software MATLAB executa a verso salva do arquivo. Portanto, voc no v os
resultados de suas alteraes.
3. Adicione os arquivos para uma pasta no caminho de procura ou coloc-los na pasta atual. Certifique-se
o arquivo executado e todos os arquivos que ele chama esto em pastas que esto no caminho de
pesquisa. Se todos os arquivos necessrios esto na mesma pasta, voc pode sim fazer essa pasta na
pasta atual.
Depurao Exemplo - O Problema Collatz
O processo de depurao e recursos so mais bem descrito usando um exemplo. Para se preparar para usar
o exemplo, crie dois arquivos, collatz.m e collatzplot.m , que produzem dados para o problema Collatz.
Para qualquer inteiro positivo dado, n , o algoritmo Collatz produz uma sequncia de nmeros inteiros. Se n
igual a 1, a seqncia completa. Caso contrrio, se n mpar, multiplique por 3 e adicionar 1 para obter o
prximo inteiro na seqncia. Caso contrrio, se n for par, dividi-lo por dois para obter o prximo nmero
inteiro na seqncia. Repetir o processo at que a sequncia termina com 1. O nmero de inteiros na
sequncia varia, dependendo do valor de partida, n .
A conjectura Collatz que a sequncia termina sempre dentro de um nmero finito de passos. Os ficheiros
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 2/21
para este exemplo so teis para estudar o comportamento do algoritmo Collatz. O arquivo collatz.m gera a
seqncia Collatz de inteiros para um dado n. O arquivo collatzplot.m traa o comprimento da sequncia
em relao ao valor de partida para todos os valores a partir de 1 atravs de um determinado valor de m. A
trama mostra padres que voc pode estudar mais.
Seguem-se os resultados, quando n 1, 2, ou 3.
n Seqncia Nmero de inteiros na seqncia
1 1 1
2 2 1 2
3 3 5 10 16 8 4 2 1 8
Arquivos para o processo Collatz problema. Seguem-se os dois arquivos que voc usa para o exemplo
de depurao. Para criar esses arquivos em seu sistema, abrir dois novos arquivos. Selecione e copie o
cdigo a seguir a partir do navegador da Ajuda e col-lo em arquivos. Salve e nomeie o arquivos collatz.m e
collatzplot.m . Guarde-as para a pasta atual ou adicionar a pasta onde voc salv-los no caminho de
pesquisa. Um dos arquivos tem um erro embutido para ilustrar os recursos de depurao.
Abra os arquivos, emitindo os seguintes comandos e, em seguida, salvando cada arquivo para uma pasta
local:
aberta (fullfile (matlabroot, 'ajuda', 'techdoc',
'matlab_env', ...
'Exemplos', 'collatz.m'))
aberta (fullfile (matlabroot, 'ajuda', 'techdoc',
'matlab_env', ...
'Exemplos', 'collatzplot.m'))
Teste Run para o exemplo. Abra o arquivo collatzplot.m . Certifique-se de que a pasta atual a pasta
na qual voc salvou collatzplot .
Experimente collatzplot para ver se ele funciona corretamente. Usar um valor de entrada simples, por
exemplo, 3, e comparar os resultados com os apresentados na tabela anterior. Datilografia
collatzplot (3)
produz o enredo mostrado na figura a seguir.
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 3/21
O enredo para n = 1 parece ser correta para-1, a srie Collatz 1, e contm um nmero inteiro. Mas, para n
= 2 e n = 3, errado. Deve haver um nico valor traado por cada nmero inteiro, o nmero de inteiros na
sequncia, que a tabela anterior mostra-se 2 (para n = 2) e 8 (para n = 3). Em vez disso, vrios valores so
plotados. Use os recursos de depurao do MATLAB para isolar o problema.
Definir pontos de interrupo
Definir pontos de interrupo para interromper a execuo do arquivo MATLAB para que voc possa examinar
os valores que voc acha que o problema pode ser. Voc pode definir pontos de interrupo usando o Editor,
usando funes na janela de comando ou em ambos.
Existem trs tipos bsicos de pontos de interrupo que voc pode definir em arquivos MATLAB:
Um ponto de interrupo padro, que pra em uma linha especificada em um arquivo. Para mais
detalhes, consulte Conjunto de padres de pontos de interrupo .
Um ponto de interrupo condicional, que pra em uma linha especificada em um arquivo apenas em
condies especficas. Para mais detalhes, consulte Pontos de interrupo condicional .
Um ponto de interrupo de erro que pra em qualquer arquivo, quando se produz o tipo especificado de
aviso, erro ou NaN ou infinito valor. Para mais detalhes, consulte Pontos de interrupo de erro .
Voc pode desativar pontos de interrupo padro e condicionais para que MATLAB ignora-los
temporariamente, ou voc pode remov-los. Para mais detalhes, consulte Desativar e Limpar os pontos de
interrupo . Os pontos de interrupo no persistem depois que voc sair da sesso MATLAB.
Voc s pode definir padro vlido e pontos de interrupo condicionais em linhas executveis em arquivos
salvos que esto na pasta atual ou em pastas no caminho de pesquisa. Quando voc adiciona ou remove um
ponto de interrupo em um arquivo que no est em uma pasta no caminho de pesquisa ou na pasta atual,
aparece uma caixa de dilogo. Esta caixa de dilogo apresenta opes que permitem que voc adicionar ou
remover o ponto de interrupo. Voc pode alterar a pasta atual para a pasta que contm o arquivo, ou voc
pode adicionar a pasta que contm o arquivo para o caminho de pesquisa.
No defina um ponto de interrupo em um por declarao, se voc quiser examinar os valores em
incrementos no loop. Por exemplo, em
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 4/21
para n = 1:10
m = n +1;
fim
MATLAB executa o para declarao de uma nica vez, o que eficiente. Portanto, quando voc definir um
ponto de interrupo no para declarao e percorrer o arquivo, voc s parar no para declarao de uma vez.
Em vez disso, coloque o ponto de interrupo na linha seguinte, m = n +1 para parar em cada passagem
pelo loop.
Voc no pode definir pontos de interrupo enquanto MATLAB est ocupado, por exemplo, a execuo de
um arquivo, a menos que o arquivo est em pausa em um ponto de interrupo.
Definir pontos de interrupo padro
Para definir um ponto de interrupo padro usando o editor:
1. Se voc tiver alterado o arquivo, salv-lo.
2. Ou:
Clique no beco ponto de interrupo em uma linha executvel onde voc deseja definir o ponto de
interrupo. O beco ponto de interrupo a coluna estreita no lado esquerdo do Editor, direita do
nmero da linha.
Posicione o cursor em uma linha executvel. No Editor do guia, no Breakpoints seo, clique em
Pontos de interrupo e selecione Set / Clear .
Linhas executveis so precedidos por um - (trao). Se voc tentar definir pontos de interrupo em
linhas que no so executveis, como comentrios ou linhas em branco, MATLAB define-lo na
prxima linha executvel.
Definir pontos de interrupo para o exemplo. Ainda no est claro se o problema no exemplo em
collatzplot ou Collatz . Para comear, siga estes passos:
1. Em collatzplot.m , clique no trao no beco ponto de interrupo na linha 9 para definir um ponto de
interrupo.
Este ponto de interrupo permite que voc entrar Collatz para ver se o problema est l.
2. Definir pontos de interrupo adicionais nas linhas 10 e 11.
Esses pontos de interrupo parar o programa para que voc possa examinar os resultados provisrios.
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 5/21
Valid (vermelho) e invlido (Gray) pontos de interrupo. breakpoints vermelhas indicam os pontos de
interrupo padro vlidos.
Os pontos de interrupo so cinza para qualquer uma destas razes:
H alteraes no salvas no arquivo. Salve o arquivo para fazer pontos de interrupo vlido. Os pontos
de interrupo cinza tornam-se vermelhos, indicando que so agora vlido. Quaisquer pontos de
interrupo cinza inseridos nas linhas de ponto de interrupo invlidos mover automaticamente para a
prxima linha de ponto de interrupo vlido com um arquivo de save bem sucedido.
H um erro de sintaxe no arquivo. Quando voc definir um ponto de interrupo, uma mensagem de erro
indicando que o erro de sintaxe . Corrigir o erro de sintaxe e salve o arquivo para fazer pontos de
interrupo vlido.
Alternativa Funo para Definir pontos de interrupo
Para definir um ponto de interrupo usando as funes de depurao, use dbstop . Para o exemplo, digite:
dbstop em collatzplot em 9
dbstop em collatzplot s 10
dbstop em collatzplot em 11
Executar um arquivo com pontos de interrupo
Depois de definir os pontos de interrupo, execute o arquivo a partir da janela de comando ou o Editor.
Execute o exemplo
Para o exemplo, execute collatzplot para o valor de entrada simples, 3, digitando o seguinte na janela de
comando:
collatzplot (3)
O exemplo, collatzplot , requer um argumento de entrada e, portanto, funciona apenas a partir da janela
de comando ou a partir do valor (es) de entrada especificado na Run lista suspensa no Editor do guia.
Resultados da execuo de um arquivo contendo os pontos de interrupo
Executando os resultados de arquivo a seguir:
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 6/21
O aviso no Mudanas janela de comando para
K >>
indicando que MATLAB est no modo de depurao.
O programa faz uma pausa no primeiro ponto de interrupo. Isso significa que a linha ser executada
quando voc continuar. A pausa indicada no Editor pela seta verde direita do ponto de interrupo. No
exemplo, a pausa na linha 9 da collatzplot , como mostrado aqui:
A linha em que voc est em pausa exibe na janela de comando. Por exemplo:
A funo das funo de chamada Pilha campo exibe nas Editor do separador muda para refletir a
funo atual (por vezes referido como o chamador ou chamado espao de trabalho). A pilha de chamadas
inclui funes locais, bem como chamadas de funes. Se voc usar funes de depurao a partir da
janela de comando, use dbstack para ver a pilha de chamadas atual.
Se o arquivo que voc est em execuo no est na pasta atual ou em uma pasta no caminho de
busca, voc ser solicitado a adicionar a pasta ao caminho ou alterar a pasta atual.
No modo de depurao, voc pode definir pontos de interrupo, passo por meio de programas, examinar
variveis, e executar outras funes.
Software MATLAB pode tornar-se sem resposta, se ele pra em um ponto de interrupo durante a exibio
de uma caixa de dilogo modal ou figura que o arquivo cria. Nesse caso, pressione Ctrl + C para ir para o
prompt do MATLAB.
Passo atravs de um arquivo
Durante a depurao, voc pode passar por um arquivo MATLAB, parando em pontos onde voc deseja
examinar valores.
Use qualquer um dos seguintes mtodos:
Clique Passo , Passo Em , Step Out em Editor do guia.
Use o dbstep ou dbcont funo
Os detalhes sobre esses botes de depurao aparecem na tabela a seguir.
Toolbar Button Item de menu Debug Descrio Alternativa Funo
Corra para Cursor Continuar a execuo do arquivo at
a linha onde o cursor estiver
posicionado. Tambm disponvel no
menu de contexto.
Nenhum
Passo Executar a linha atual do arquivo. dbstep
Intervir Executar a linha atual do arquivo e,
se a linha uma chamada para outra
funo, passo para essa funo.
dbstep em
Continuar Retomar a execuo de arquivo at a
concluso ou at que outro ponto de
interrupo encontrado.
dbcont
Step Out Depois de pisar em, execute o resto dbstep fora
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 7/21
Step Out Depois de pisar em, execute o resto
da funo chamada ou funo local,
deixe a funo chamada, e pausa.
dbstep fora
Saia de
Depurao
Modo de depurao Sair. dbquit fora
Continuar Funcionando no Exemplo
No exemplo, collatzplot est em pausa na linha 9. Porque os resultados de problema esto corretas para
a N / n = 1, continuam a funcionar at N / n = 2. Clique em Continuar trs vezes para percorrer os pontos
de interrupo nas linhas 9, 10 e 11 . Agora o programa novamente uma pausa no ponto de interrupo na
linha 9.
Passo para a funo chamada no Exemplo
Agora que collatzplot est em pausa na linha 9, durante a segunda iterao, clique em Passo Em ou
digite dbstep em na janela de comando para entrar Collatz e percorrer o arquivo. Pisando em linha 9 da
collatzplot vai para a linha 9 do Collatz . Se Collatz no aberto no Editor, ele abre automaticamente
se voc tiver selecionado os arquivos automaticamente abertas quando MATLAB atinge um ponto de
interrupo na caixa de dilogo Preferncias.
O indicador de pausa na linha 9 da collatzplot muda para uma seta oca , indicando que o controle
MATLAB est agora em uma funo local chamado a partir do programa principal. A pilha de chamadas
mostra que a funo atual agora Collatz .
Na funo chamada, Collatz no exemplo, voc pode fazer as mesmas coisas que voc pode fazer nas
principais (chamada) funo-definidos breakpoints, executar, percorrer e examinar valores.
Examine Valores
Enquanto o programa estiver em pausa, voc pode ver o valor de qualquer varivel atualmente na rea de
trabalho. Examine os valores quando voc quer ver se uma linha de cdigo produziu o resultado esperado ou
no. Se o resultado o esperado, continuar correndo ou passo para a prxima linha. Se o resultado no
como se espera, ento essa linha, ou uma linha anterior, contm um erro. Use os seguintes mtodos para
examinar os valores:
Selecione o espao de trabalho
Ver valores como pontas de dados no Editor
Ver valores em janela de comando
Ver valores no Editor Workspace browser e Variveis
Avaliar a Seleo
Examine Valores no Exemplo
Problemas exibir valores de varivel do Workspace Pais
Muitos destes mtodos so utilizados em examinar os valores do Exemplo .
Selecione o espao de trabalho
Variveis definidas atravs da Janela de Comando e criadas usando scripts so considerados no espao de
trabalho de base. Variveis criadas em uma funo pertence sua prpria funo de espao de trabalho.
Para examinar uma varivel, voc deve primeiro selecionar o seu espao de trabalho. Quando voc executa
um programa, o espao de trabalho atual mostrada na pilha de chamada de funo campo. Para
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 8/21
examinar os valores que so parte de um outro espao de trabalho para a funo atualmente em execuo
ou para o espao de trabalho de base, primeiro selecione a rea de trabalho a partir da lista na pilha de
chamada de funo campo.
Se voc usar funes de depurao a partir da janela de comando:
Para exibir a pilha de chamadas, use dbstack .
Para mudar para um espao de trabalho diferente, use dbup e dbdown .
Para listar as variveis no espao de trabalho atual, use quem ou whos .
Workspace no Exemplo. Na linha 9 do collatzplot , voc entrou em cena, ea linha atual de 9 em
Collatz . O Stack Funo Chamada campo mostra que Collatz o espao de trabalho atual.
Ver valores como pontas de dados no Editor
Para visualizar o valor atual de uma varivel no Editor, primeiro ativar datatips, em seguida, usar o mouse
para exibir um datatip:
1. Na casa guia, no Ambiente seo, clique em Preferncias e selecione MATLAB > editor / Debugger
> Exibio .
2. Selecione Ativar datatips no modo de edio com opes de exibio Gerais .
3. No Editor, posicione o cursor do mouse para a esquerda de uma varivel.
Valor atual da varivel aparece em uma ponta de dados. A dica de dados permanece em exibio at
voc mover o ponteiro. Se voc tiver problemas para receber a ponta de dados para aparecer, clique na
linha que contm a varivel e, em seguida, mova o ponteiro prximo varivel.
Ver valores em janela de comando
Voc pode examinar os valores, enquanto no modo de depurao no K >> rpida. Para ver as variveis
atualmente na rea de trabalho, use quem . Digite um nome de varivel na janela de comando e exibe o valor
atual da varivel. Por exemplo, ver o valor de n , Tipo
n
A janela de comando exibe o resultado esperado
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 9/21
n =
2
e exibe o prompt de depurao, K >> .
Ver valores no Editor Workspace browser e Variveis
Voc pode ver o valor das variveis no valor de coluna do navegador Workspace. O navegador Workspace
exibe todas as variveis no espao de trabalho atual. Para mudar para outra rea de trabalho e visualizar
suas variveis, uso Funo Call Stack lista suspensa no Editor do guia, no Debug seo.
O valor da coluna no mostra todos os detalhes de todas as variveis. Para ver mais detalhes, clique duas
vezes em uma varivel no navegador do Workspace. O Editor de Variveis aberta, exibindo o contedo para
essa varivel. Voc pode abrir o Editor de variveis diretamente para uma varivel usando openvar .
Para ver o valor de n no Editor de Variveis para o exemplo, digite
openvar n
eo Editor de Variveis abre, mostrando que n = 1 como esperado.
Avaliar a Seleo
Selecione uma varivel ou equao em um arquivo MATLAB no Editor. Boto direito do mouse e selecione
Avaliar Seleo a partir do menu de contexto (para um mouse de um nico boto, pressione Ctrl + clique).
A janela de comando exibe o valor da varivel ou equao. Voc no pode avaliar uma seleo enquanto
MATLAB est ocupado, por exemplo, a execuo de um arquivo.
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 10/21
Examine Valores no Exemplo
Passo a partir da linha 9 atravs da linha 13 em Collatz . Passo de novo, e o indicador de pausa salta para
a linha 17, logo aps o caso loop, como esperado. Passo mais uma vez, para a linha 18, verificar o valor da
seqncia na linha 17 e ver que a matriz
2 1
como esperado para n = 2 . passo novamente, o que move o indicador de pausa da linha 18 para a linha 11.
Na linha 11, o passo novamente. Porque next_value agora 1, o tempo de loop termina. O indicador de
pausa na linha 11 e aparece como uma seta para baixo verde . Isto indica que o processamento da funo
de chamada estiver completa e o controlo do programa volta ao programa de chamada. Passo novamente a
partir da linha 11 em Collatz e execuo est agora em pausa na linha 9 em collatzplot .
Note-se que, em vez de percorrendo Collatz , a funo chamada, como foi feito apenas neste exemplo,
voc pode sair de uma funo chamada de volta para a funo de chamada, que executa automaticamente o
resto da funo chamada e retorna para a prxima linha a funo de chamada. Para sair, use o boto Step
Out ou digite dbstep fora na janela de comando.
Em collatzplot , o passo novamente para avanar para a linha 10, e, em seguida, a linha 11 A varivel.
seq_length na linha 10 um vector com os elementos:
1 2
que correto.
Finalmente, a etapa de novo avanar para a linha 12. Examinando os valores na linha 11, N = 2 como
esperado, mas a segunda varivel, plot_seq , tem dois valores, onde se espera que apenas um valor.
Enquanto o valor para plot_seq o esperado:
2 1
a varivel incorreta para plotagem. Em vez disso, seq_length (N) deve ser plotado.
Problemas exibir valores de varivel do Workspace Pais
s vezes , se voc definir um ponto de interrupo em uma funo, e, em seguida, tentar ver o valor de uma
varivel no espao de trabalho pai usando o dbup comando, o valor da varivel est em construo. Portanto,
o valor no est disponvel. Isto verdade se voc ver o valor especificando o dbup comando na janela de
comando ou usando a pilha de chamada de funo campo no Editor do guia.
Nesses casos, MATLAB retorna a seguinte mensagem, onde x a varivel para a qual voc est tentando
examinar o valor:
K x >>
Referncia a um chamado de resultado da funo em construo
x.
Por exemplo, suponha que voc tenha um cdigo como o seguinte:
x = Collatz (x);
MATLAB detecta que a avaliao de Collatz (x) substitui a varivel de entrada, x . Para otimizar o uso de
memria, MATLAB sobrescreve a memria que x ocupa atualmente a realizar um novo valor para x . Quando
voc solicita o valor de x , e ele est em construo, o seu valor no est disponvel, e MATLAB exibe a
mensagem de erro.
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 11/21
Corrigir problemas e depurao Fim
A seguir esto algumas das maneiras de corrigir os problemas e terminam a sesso de depurao:
Mudar os valores e verificar resultados
Depurao Fim
Desativar e Limpar os pontos de interrupo
Salvar Breakpoints
Corrigir problemas em um arquivo MATLAB
Conclua o Exemplo
Peas executado nos arquivos MATLAB Isso tem alteraes no salvas
Complete a exemplo usa muitos desses recursos.
Mudar os valores e verificar resultados
Durante a depurao, voc pode alterar o valor de uma varivel no espao de trabalho atual para ver se o novo
valor produz os resultados esperados. Enquanto o programa estiver em pausa, atribuir um novo valor para a
varivel na janela de comando, o navegador Workspace, ou Variveis Editor. Em seguida, continuar correndo
ou percorrendo o programa. Se o novo valor no produzir os resultados esperados, o programa tem um
problema diferente.
Depurao Fim
Aps a identificao de um problema, termine a sesso de depurao. Voc deve terminar uma sesso de
depurao, se voc deseja alterar e salvar um arquivo para corrigir um problema, ou se voc deseja executar
outras funes em MATLAB.
Nota Sair modo de depurao antes de editar um arquivo. Se voc editar um arquivo ao mesmo
tempo no modo de depurao, voc pode obter resultados inesperados quando voc executar o arquivo.
Se voc editar um arquivo ao mesmo tempo no modo de depurao, breakpoints virar cinza, indicando
que os resultados podem no ser confiveis. Veja Valid (vermelho) e invlido (Gray) Pontos de
interrupo para mais detalhes.
Se voc tentar salvar um arquivo editado, enquanto no modo de depurao, uma caixa de dilogo
aberta, permitindo que voc para sair do modo debug e salve o arquivo.
Para encerrar a depurao, clique em Quit depurao , ou usar a funo dbquit .
Depois de abandonar a depurao, pausar indicadores no visor do Editor no aparecem mais, ea normal
pronta >> aparece na janela de comando em vez do prompt de depurao, K >> . Voc no poder mais
acessar a pilha de chamadas.
Desativar e Limpar os pontos de interrupo
Desativar um ponto de interrupo para ignor-lo temporariamente. Limpar um ponto de interrupo para
remov-lo.
Desativar e ativar os pontos de interrupo. Voc pode desativar pontos de interrupo selecionados
para o programa ignora-los temporariamente e funciona ininterruptamente, por exemplo, depois que voc
acha que identificou e corrigiu um problema. Isto especialmente til para condicionais breakpoints-ver os
pontos de interrupo condicional .
Para desativar um ponto de interrupo, efectue um dos seguintes procedimentos:
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 12/21
Boto direito do mouse no cone do ponto de interrupo, e selecione Desabilitar Ponto de Interrupo
no menu de contexto.
Coloque o cursor em qualquer lugar em uma linha de ponto de interrupo. Clique Breakpoints e
selecione Ativar / Desativar a partir da lista drop-down.
Para desativar um ponto de interrupo condicional, use um dos mtodos na lista anterior. Um X aparece
atravs do cone de ponto de interrupo, como mostrado aqui.
Quando voc executa DBSTATUS , a mensagem resultante de um ponto de interrupo com deficincia
Breakpoint na linha 9 tem expresso condicional 'false'.
Aps desativar um ponto de interrupo, voc pode reativ-lo para torn-lo ativo novamente ou voc pode
limp-la.
Para reativar um ponto de interrupo, efectue um dos seguintes procedimentos:
Boto direito do mouse no cone do ponto de interrupo e selecione Ativar Breakpoint no menu de
contexto.
Coloque o cursor em qualquer lugar em uma linha de ponto de interrupo. Clique Breakpoints e
selecione Ativar / Desativar a partir da lista drop-down.
O X j no aparece no cone do ponto de interrupo e execuo do programa far uma pausa na linha.
Clear (Remover) pontos de interrupo. Todos os pontos de interrupopermanecer em arquivo at que
voc limpar (remover)-los ou at que sejam apagadas automaticamente. Limpar um ponto de interrupo
depois de determinar que uma linha de cdigo no est causando um problema.
Para limpar um ponto de interrupo no editor:
Boto direito do mouse no cone do ponto de interrupo e selecione Limpar Breakpoint no menu de
contexto.
Coloque o cursor em qualquer lugar em uma linha de ponto de interrupo. Clique Breakpoints e
selecione Set / Clear a partir da lista drop-down.
Use o dbclear em arquivo no lineno comando na janela de comando. Para o exemplo, limpar o ponto
de interrupo na linha 9 em collatzplot digitando:
dbclear em collatzplot em 9
Para limpar todos os pontos de interrupo em todos os arquivos:
Coloque o cursor em qualquer lugar em uma linha de ponto de interrupo. Clique Breakpoints e
selecione Limpar Tudo a partir da lista drop-down.
Use dbclear todos na janela de comando.
Para o exemplo, claro todos os pontos de interrupo no collatzplot digitando:
dbclear tudo em collatzplot
Breakpoints limpar automaticamente quando voc:
Terminar a sesso MATLAB.
Limpe o arquivo usando o nome claro ou limpar todos .
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 13/21
Nota Quando nome claro ou claro tudo em um comunicado em um arquivo que voc est
depurando, ele limpa os pontos de interrupo.
Salvar Breakpoints
Voc pode usar o s = DBSTATUS sintaxe e depois salv- s para salvar os pontos de interrupo de corrente
para um arquivo MAT. Em um momento posterior, voc pode carregar s e restaurar os pontos de interrupo
usando dbstop (s) . Para mais informaes, incluindo um exemplo, consulte o DBSTATUS pgina de
referncia.
Corrigir problemas em um arquivo MATLAB
Para corrigir um problema em um arquivo MATLAB:
1. Saia de depurao.
No modifique um arquivo enquanto MATLAB est em modo de depurao. Se voc fizer isso, os pontos
de interrupo virar cinza, indicando que os resultados podem no ser confiveis. Veja Valid
(vermelho) e invlido (Gray) Pontos de interrupo para mais detalhes.
2. Modifique o arquivo.
3. Salve o arquivo.
4. Set, breakpoints desativar ou claras, conforme o caso.
5. Execute o arquivo novamente para ter certeza de que ela produz os resultados esperados.
Conclua o Exemplo
Para corrigir o problema no exemplo:
1. Termine a sesso de depurao. Uma maneira de fazer isso clicar em Quit Depurao
2. Em collatzplot.m linha 11, alterar a seqncia plot_seq para seq_length (N) e salve o arquivo.
3. Limpe os pontos de interrupo em collatzplot.m . Uma maneira de fazer isso atravs da digitao
dbclear tudo em collatzplot
na janela de comando.
4. Execute collatzplot para m = 3 , digitando
collatzplot (3)
na janela de comando.
5. Verifique o resultado. A figura mostra que o comprimento da srie Collatz 1 quando n = 1, 2, quando n
= 2 , 8 e, quando n = 3 , como esperado.
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 14/21
6. Teste a funo para um valor um pouco maior de m , como 6, para ter certeza de que os resultados ainda
so precisos. Para torn-lo mais fcil de verificar collatzplot para m = 6 , assim como os resultados
para Collatz , adicionar esta linha no final de collatz.m
seqncia
que exibe a srie na janela de comando. Os resultados para quando n = 6 so
sequence =
6 3 5 10 16 8 4 2 1
Em seguida, execute collatzplot para m = 6 , digitando
collatzplot (6)
7. Para tornar a depurao mais fcil, voc correu collatzplot por um pequeno valor de m . Agora que
voc sabe que funciona corretamente, execute collatzplot para um valor maior para produzir
resultados mais interessantes. Antes de fazer isso, voc considerar a desativao de sada para a linha
que voc acabou de adicionar na etapa 6, linha 19 de collatz.m , pela adio de um ponto e vrgula no
final da linha para que ele aparece como
seqncia;
Em seguida, execute
collatzplot (500)
A figura a seguir mostra os comprimentos da srie Collatz para n = 1 atravs de n = 500 .
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 15/21
Peas executado nos arquivos MATLAB Isso tem alteraes no salvas
uma boa prtica para modificar um arquivo MATLAB aps encerrar a depurao, e depois salvar a
modificao e executar o arquivo. Caso contrrio, voc pode obter resultados inesperados. No entanto,
existem situaes em que voc deseja experimentar durante a depurao. Talvez voc queira modificar uma
parte do arquivo que ainda no foi executado, e em seguida, executar o restante do arquivo sem salvar a
alterao. Siga estes passos:
1. Enquanto parado em um ponto de interrupo, modificar uma parte do arquivo que ainda no foi
executado.
Breakpoints virar cinza, indicando que eles so invlidos.
2. Selecione todo o cdigo aps o ponto de interrupo, clique com o boto direito e selecione Avaliar
Seleo no menu de contexto.
Voc tambm pode usar sees de cdigo para fazer isso.
Pontos de interrupo condicionais
Definir pontos de interrupo condicionais para causar MATLAB para parar em uma linha especificada em um
arquivo apenas quando a condio especificada for atendida. Uma particularmente bom uso para pontos de
interrupo condicionais quando voc deseja examinar os resultados depois de um certo nmero de
iteraes em um loop. Por exemplo, definir um ponto de interrupo na linha 10 na collatzplot ,
especificando que MATLAB parar somente se N maior ou igual a 2 . Esta seo abrange os seguintes
tpicos:
Definir pontos de interrupo condicional
Modificar, desabilitar ou Limpar pontos de interrupo condicional
Alternativas de funo para manipular os pontos de interrupo condicional
Definir pontos de interrupo condicional
Para definir um ponto de interrupo condicional:
1. Clique na linha onde voc deseja definir o ponto de interrupo condicional.
2. Clique Breakpoints no Editor de guia e selecione Definir Condio . Se um ponto de interrupo
padro existente nessa linha, usar esse mesmo mtodo para torn-lo condicional.
A caixa de dilogo Editor de ponto de interrupo condicional MATLAB abre.
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 16/21
3. Digite uma condio na caixa de dilogo, onde a condio qualquer expresso MATLAB vlida que
retorna um valor escalar lgica. Clique em OK . Como observado na caixa de dilogo, a condio
avaliada antes de executar a linha. Por exemplo, na linha 9 em collatzplot , digite o seguinte como a
condio:
N> = 2
Um cone de ponto de interrupo amarelo (que indica o ponto de interrupo condicional) aparece no
beco ponto de interrupo na linha.
Ao executar o arquivo, o software MATLAB entra no modo de depurao e pausas na linha somente quando
a condio for satisfeita. No collatzplot exemplo, MATLAB atravessa o para loop de uma vez e pausas na
segunda iterao na linha 9, quando N 2 . Se voc continuar a execuo, MATLAB pra novamente na linha
9 na terceira iterao quando N 3 .
Modificar, desabilitar ou Limpar pontos de interrupo condicional
A tabela a seguir descreve como ajustar os pontos de interrupo condicionais.
Para Faa isto
Modificar uma condio para um ponto de
interrupo na linha atual.
Boto direito do mouse no cone do ponto de interrupo
condicional, e, em seguida, no menu de contexto, selecione
Set / Modificar Condio .
Desativar um ponto de interrupo
condicional.
Clique no cone do ponto de interrupo condicional associado.
Limpar um breakpoint condicional. Clique duas vezes no cone do ponto de interrupo condicional
associado.
Alternativas de funo para manipular os pontos de interrupo condicional
A tabela a seguir lista as funes disponveis para ajustar breakpoints condicionais a partir da janela de
comando.
Para Use esta funo
Definir um ponto de interrupo condicional. dbstop
Limpar um breakpoint condicional. dbclear
Ver uma lista de todos os pontos de interrupo
definidos, incluindo a expresso condicional para cada
ponto de interrupo condicional.
DBSTATUS
Os pontos de interrupo em Funes annimas
Voc pode definir vrios pontos de interrupo em uma linha de cdigo MATLAB que contm funes
annimas. Voc pode fazer as duas coisas o seguinte:
Definir um ponto de interrupo para a prpria linha (software MATLAB faz uma pausa no incio da linha).
Definir um ponto de interrupo para cada funo annima nessa linha.
Quando voc adiciona um ponto de interrupo de uma linha contendo uma funo annima, o Editor
pergunta onde na linha que voc deseja adicionar o ponto de interrupo. Se houver mais do que um ponto de
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 17/21
interrupo de uma linha, o cone do ponto de interrupo azul, independentemente do estado de qualquer
um dos pontos de interrupo na linha.
Para exibir informaes em uma dica de ferramenta sobre todos os pontos de interrupo em uma linha,
coloque o ponteiro sobre o cone azul.
Para executar uma ao de ponto de interrupo para uma linha que pode conter vrios pontos de
interrupo, como Limpar Breakpoint , clique com o boto direito do beco ponto de interrupo na linha
que, em seguida, selecione a ao.
Quando voc definir um ponto de interrupo em uma funo annima, MATLAB faz uma pausa quando a
funo annima chamado.
A ilustrao a seguir mostra o editor quando voc definir um ponto de interrupo na funo annima sqr na
linha 2, e, em seguida, executar o arquivo. Ao executar o arquivo, MATLAB faz uma pausa cada vez que a
funo annima sqr executado. A seta verde mostra onde o cdigo define sqr . A seta branca, na linha 5,
indica que o cdigo chama sqr .
Os pontos de interrupo em mtodos que as funes de sobrecarga
Funes MATLAB costumam chamar outras funes e mtodos MATLAB para realizar suas operaes. Se
voc definir um ponto de interrupo em um mtodo de classe, e depois executar uma funo MATLAB que
resulta em chamar esse mtodo, a execuo pra no ponto de interrupo. Este comportamento pode ser
confuso se voc no tem conhecimento de que a funo MATLAB chama o mtodo que contm o ponto de
interrupo.
Por exemplo, suponha que voc faa o seguinte:
1. Defina uma classe chamada MyClass que sobrecarrega o MATLAB tamanho funo.
2. Crie uma instncia de MyClass .
3. Inserir pontos de interrupo dentro do MyClass tamanho mtodo.
4. Chame whos .
Quando voc chama o whos funo, ele chama o tamanho da funo para obter informaes sobre o tamanho
das variveis no espao de trabalho. Sob as circunstncias anteriores, porque MyClass sobrecarrega o
tamanho funo, whos chama o MyClass tamanho mtodo em vez do padro tamanho funo para determinar
o tamanho do MyClass objeto. A execuo pra no ponto de interrupo definido no tamanho mtodo. Voc
pode ativar a funo MATLAB para executar at a concluso por qualquer pisar ou continuar com o mtodo.
Para evitar esse comportamento se repita, remova os pontos de interrupo.
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 18/21
Os pontos de interrupo de erro
Definir pontos de interrupo de erro para parar a execuo do programa e entrar no modo de depurao
quando MATLAB encontra um problema. Ao contrrio de pontos de interrupo padro e condicionais, voc
no definir esses pontos de interrupo em uma linha especfica em um arquivo especfico. Em vez disso,
uma vez definida, MATLAB pra em qualquer linha em qualquer arquivo, quando a condio de erro
especificado usando o ponto de interrupo erro ocorre. MATLAB, em seguida, entra em modo de depurao
e abre o arquivo que contm o erro, com o indicador de pausa na linha que contm o erro. Arquivos abertos
somente quando voc seleciona arquivo automaticamente aberta quando MATLAB atinge um ponto
de interrupo em MATLAB > editor / depurador na caixa de dilogo Preferncias. Breakpoints erro
permanecer em vigor at que voc limp-las ou at que voc encerrar a sesso MATLAB. Esta seo
abrange os seguintes tpicos:
Definir e limpar os pontos de interrupo de erro
Tipos de ponto de interrupo de erro e Opes
Exemplos de Configurao de Aviso e Erro Breakpoints
Alternativa funo para manipular os pontos de interrupo de erro
Definir e limpar os pontos de interrupo de erro
Para definir pontos de interrupo de erro:
1. Na guia Editor, na seo Pontos de interrupo, clique em pontos de interrupo .
2. Selecione:
Pare em erros de parar em todos os erros.
Pare em Avisos para parar em todos os avisos.
Mais erro e manipulao de Aviso Opes para opes adicionais. Isso abre a Parada se os
erros / avisos para Todos arquivos caixa de dilogo
Para limpar pontos de interrupo de erro, selecione o Nunca pare de se ... opo para todas as
guias apropriadas, e clique em OK .
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 19/21
Tipos de ponto de interrupo de erro e Opes
Como os guias na Parada Se os erros / avisos para todos caixa de dilogo Arquivos sugerem, existem quatro
tipos bsicos de pontos de interrupo de erro que voc pode definir:
Erros
Quando ocorre um erro, a execuo pra, a menos que o erro est em um try ... catch bloco.
MATLAB entra no modo de depurao e abre o arquivo para a linha na tentativa parte do bloco que
produziu o erro. Voc no pode continuar a execuo.
Try / catch Erros
Quando ocorre um erro em um try ... catch bloco, pausas de execuo. MATLAB entra no modo de
depurao e abre o arquivo para a linha que produziu o erro. Voc pode continuar a execuo ou uso de
recursos de depurao.
Advertncias
Quando ocorre uma advertncia, MATLAB faz uma pausa, entra no modo de depurao, e abre o arquivo,
parou na linha que produziu o aviso. Voc pode continuar a execuo ou uso de recursos de depurao.
NaN ou Inf
Quando um operador, chamada de funo, ou escalar atribuio produz um NaN (not-a-number) ou Inf
valor (infinito), MATLAB faz uma pausa, entra no modo de depurao, e abre o arquivo. MATLAB
interrompe imediatamente a seguir linha que encontrou o valor. Voc pode continuar a execuo ou uso
de recursos de depurao.
Selecione as opes para esses pontos de interrupo de erro:
Clique em Nunca pare ... em uma guia para limpar esse tipo de ponto de interrupo.
Clique Pare sempre ... em um guia para definir que tipo de ponto de interrupo.
Selecionar identificadores Use mensagem ... em uma guia para limitar cada tipo de erro ponto de
interrupo (exceto NaN ou Inf). A execuo pra apenas para o erro que voc especificar pelo
identificador de mensagem correspondente.
Esta opo no est disponvel para o NaN ou Inf tipo de erro ponto de interrupo. Voc pode adicionar
vrios identificadores de mensagem, e editar ou remov-los.
Exemplos de Configurao de Aviso e Erro Breakpoints
Pausar Execuo para avisos. Para pausar a execuo quando MATLAB produz um aviso:
1. Clique na Avisos guia.
2. Clique Pare sempre se alerta e clique em OK .
Agora, quando voc executar um arquivo e MATLAB produz um aviso, uma pausa na execuo e MATLAB
entra no modo de depurao. O arquivo aberto no Editor na linha que produziu o aviso.
Definir pontos de interrupo para um erro especfico. Para parar a execuo de um erro especfico
adicionar um identificador de mensagem:
1. Clique nos erros , try / catch erros, ou Avisos guia.
2. Clique Use Mensagem identificadores .
3. Clique Adicionar .
4. Na caixa de dilogo resultante Mensagem Identificador Adicionar, digite o identificador de mensagem do
erro para o qual voc quer parar. O identificador da forma componente: mensagem (por exemplo,
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 20/21
MATLAB: narginchk: notEnoughInputs ). Em seguida, clique em OK .
O identificador da mensagem que voc especificou aparece na parada se erros / avisos para Todos
arquivos caixa de dilogo.
5. Clique em OK .
Obter mensagem de erro Identificadores. Para obter um identificador de mensagem de erro gerada por
uma funo MATLAB, executar a funo de produzir o erro e, em seguida, chamar MExeption.last . Por
exemplo:
surfar
MException.last
A janela de comando exibe o objeto MException, incluindo o identificador de mensagem de erro no
identificador de campo. Para este exemplo, ele exibe:
ans =
MException
Propriedades:
identificador: 'MATLAB: narginchk: notEnoughInputs'
mensagem: "No argumentos de entrada suficientes.
causar: {}
empilhar: [1x1 struct]
Mtodos
Obter mensagem de aviso Identificadores. Para obter um identificador de mensagem de aviso gerado
por uma funo MATLAB, executar a funo de produzir o aviso. Em seguida, execute:
[M, id] = lastwarn
MATLAB retorna o ltimo identificador de aviso para id . Um exemplo de um identificador de mensagem de
aviso MATLAB: concatenao: integerInteraction .
Alternativa funo para manipular os pontos de interrupo de erro
O equivalente a funo de cada opo na Parada Se os erros / avisos para Todos arquivos caixa de dilogo,
aparece direita de cada opo. Por exemplo, a funo equivalente para sempre parar se o erro dbstop
se erro . Utilize estas funes na janela de comando, conforme listado na tabela a seguir.
Para Use esta funo
Definir pontos de interrupo de erro. dbstop
Limpar pontos de interrupo de erro. dbclear
Ver uma lista de todos os pontos de interrupo definidos,
incluindo a condio e identificador de mensagem para cada
ponto de interrupo de erro.
DBSTATUS
30/7/2014 Processo de Depurao e Caractersticas - MATLAB e Simulink
http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177 21/21

S-ar putea să vă placă și