Conectar-se

Esqueci minha senha

Últimos assuntos
» colisão de queda após outra colisão dando problema
Ontem à(s) 20:18 por Willy

» [Duvida] O que aprender
Seg 26 Jun 2017, 15:32 por Markituh

» BUILD FAILED: Cannot find BUILD.xml
Seg 26 Jun 2017, 14:50 por ReisBlender

» Nota de esclarecimento - GMBR voltou!
Sex 23 Jun 2017, 20:33 por Willy

» Regras do Fórum
Sex 23 Jun 2017, 19:02 por GMBR

» Retorno da GMBR!!!
Ter 24 Jan 2017, 15:43 por GMBR

» Jogo Dengue HTML
Seg 30 Nov 2015, 16:17 por guga

» Criando IA Simples para inimigos
Qua 25 Nov 2015, 19:22 por DJDAVYD

» Ordenar variavel em ordem decrescente
Sex 28 Ago 2015, 21:09 por Kodained

» Crio Trilha Sonora para Games!
Qui 27 Ago 2015, 13:50 por Isaias Malafaia

» Problema com Colisão
Qui 27 Ago 2015, 12:30 por The_Game

» Quem quer Uma Engine, e de Quê?
Qui 27 Ago 2015, 09:22 por theguitarmester

» [RESOLV]Como adicionar 2 objetos na mesma posição?
Qua 26 Ago 2015, 11:38 por Bhryenno Kelvyn Carlson

» Sistema de porta!!!
Ter 25 Ago 2015, 21:29 por theguitarmester

» Venda de objetos em Inventário - Multiplicado
Seg 24 Ago 2015, 18:33 por AG Hydra

» Atirar na direção certa
Seg 24 Ago 2015, 09:03 por theguitarmester

» Western Duels
Seg 24 Ago 2015, 07:47 por theguitarmester

» Problemas na compilação android
Dom 23 Ago 2015, 23:43 por Zero.

» Dúvida sobre strings, lendo txt
Sab 22 Ago 2015, 20:31 por Pai véi

» Como estabilizar um som
Sab 22 Ago 2015, 19:03 por Isquilo_Roedor

» Janela Modal
Sab 22 Ago 2015, 09:23 por Pai véi

» Sobre instance Creation Code
Sab 22 Ago 2015, 08:39 por Pai véi

» LudumDare #33
Sex 21 Ago 2015, 21:17 por WellingtonBecker

» Como fazer um temporizador
Sex 21 Ago 2015, 19:02 por Isquilo_Roedor

» GMS sempre salva projeto ao compilar?
Sex 21 Ago 2015, 12:32 por Pai véi

Quem está conectado
33 usuários online :: 2 usuários cadastrados, Nenhum Invisível e 31 Visitantes

RedJohn, ReisBlender

[ Ver toda a lista ]


O recorde de usuários online foi de 324 em Ter 05 Out 2010, 13:36

Debugando

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Debugando

Mensagem por saim em Qui 06 Out 2011, 00:55

Nome: Debugando, ou usando o debug mode
Descrição: Esse tutorial ensia a usar o debug mode e, consequentemente, a resolver sozinho metade dos problemas de código.
Nível de dificuldade: iniciante.
Requerimentos: Qualquer versão do game maker (acredito que não haja diferenças entre as versões, mas me baseei no GM 8.0)
Desenvolvimento:


Já teve um problema que você saberia resolver se soubesse o valor das variáveis?
Ou um problema que você sente que daria pra se virar se o jogo rodasse mais devagarinho?
Bom, o game maker tem uma ferramenta que te possibilita isso. Chama-se “debug mode”.

No debug mode, você roda seu jogo e surge uma janelinha. Nessa janelinha, você pode visualizar muitas, se não todas, variáveis do seu jogo. O escopo desse tutorial consiste, basicamente, em ensinar a usar essa janelinha.


Entrando no debug mode:
Nada mais simples: sabe aquele “play” verde que você usa pra rodar o jogo? Existe um “play” vermelho logo ao lado dele. Clicando nesse segundo play, você roda o jogo em modo debug.
Ou você pode ir em "run-run in debug mode". Ou apertar F6.

mouse_id:
Ao passar o mouse sobre os objetos, um texto aparece no canto inferior direito da janela de debug. O texto diz “mouse_id=” e um número grande. Esse número é a id da instância sob o cursor do mouse. Isso será importante mais adiante.

Visualizando variáveis:
Pra visualizar variáveis, você clica no botão “+”. Aparecerá uma nova janela e, nela, você digita qual variável você quer acompanhar. A variável aparecerá numa tabela, com seu valor logo à direita.
Pra visualizar variáveis globais, basta digitar o nome da variável. Digite “room” e o índice da room em que o jogo estiver aparecerá ao lado. Digite o nome de algum objeto e o índice desse objeto (não das instâncias) aparecerá. Variáveis que comecem com “global.” requerem que você digite “global.” pra serem visualizadas.
Pra visualizar variáveis locais, você digita a id da instância, entre parênteses, seguido de um ponto e o nome da variável que você quer verificar. Exemplo:
(100357).speed
Você pode usar o mouse_id (ver acima) pra saber o valor da id da instância a ser observada. Pode-se digitar o nome do objeto seguido de ponto e o nome da variável, mas isso retornará apenas o valor da variável da instância com id mais baixo (a primeira instância do objeto).
Como as variáveis “var” deixam de existir logo após a execução do código, essas não podem ser verificadas diretamente. Há formas de verificá-las que serão abordadas mais adiante.

tools - todas as variáveis:
Bom, suponhamos que você esteja sem paciência pra escrever linha-por-linha quais variáveis você quer acompanhar. Você pode ir em "tools". Lá tem algumas opções auto-explicativas.
"show global variables" mostra todas as variáveis globais (inclusive aquelas que requerem o uso de "global.", mas não aparece o "global." no nome delas).
"show local variables" vai te pedir um objeto ou instância e mostrará todas as variáveis dele. A regra da primeira instância do objeto vale aqui também.
"show instances" vai te mostrar os ids das instâncias em jogo, e de quebra, o sprite_name de cada uma delas (o nome mesmo do sprite, não a id).
Finalmente, a última opção "show messages" é um pouco mais complexa. Existe a função "show_debug_message" que, aparentemente não faz nada. Pode colocar em qualquer lugar do seu jogo que, a menos que você consiga errar a sintaxe da função, você não notará a presença dela. Mas rodando em debug, indo em "tools-show messages", todas as strings dessa função estarão lá. Então, pra acompanhar o valor de uma var (lembra que eu disse que tinha jeito?), você pode colocar, NO PONTO DO CÓDIGO EM QUE VOCÊ QUER SABER O VALOR DELA, "show_debug_message(string(variável))".

velocidades:
Ainda é possível acelerar/retardar a velocidade de execução no modo debug. Vá em "tools-set speed" e digite a nova velocidade da room. Isso pode ser útil pra verificar, por exemplo, se a velocidade caiu a zero no momento em que o objeto colide com o outro ou só no step seguinte. Pode ser usado, também pra ver se o loop que você definiu é eficiente ou está exigindo demais da memória do computador - um jogo simples deveria rodar a 60 fps sem problemas, enquanto que um jogo mais complexo pode aceitar uns 40 fps.
Ah, sim, a velocidade real, em fps é mostrada no canto inferior esquerdo da janela de debug.
Você pode, também, paralisar o jogo todo e avançar step-por-step. Clique no botão de pausa que o jogo todo para. Há uma setinha que, ao ser clicada, permite que o jogo avance um step e pare de novo, dando todo o tempo que você precisa pra tentar visualizar porque foi que a variável que deveria ter mudado de valor não mudou (ou vice-versa).

novo debug
Ou: save e load. Se você conseguiu colocar na tela todas as variáveis que você quer visualizar e acha que descobriu o problema, NÃO feche o jogo para editá-lo ainda. Vá em "watch-save" e grave num arquivo de texto as variáveis que você estiver observando. Caso você esteja errado e a correção não seja efetiva, você vai querer resgatar quais variáveis são essas. Pra isso, vá em "watch-load" e selecione o arquivo. Esse arquivo pode ser editado manualmente.

debug_mode
"Ué, você não passou o tutorial todo falando sobre debug mode?" Sim, mas note o underline entre "debug" e "mode". Sim, é uma variável global (que não aparece em "show global variables" por motivos óbvios). Sim, ela é "true" quando você roda o jogo em debug mode e "false", de outra forma. E, sim, ela é útil.
Suponha que você determine um ponto através de coordenadas que são calculadas em código. Suponha que você desconfie que a posição calculada não é a que você queria. Ver o valor das variáveis ajuda, mas não te dá "aquela" segurança de que o ponto está no lugar certo ou não. Então, apele, use o draw event pra desenhar o ponto. Use draw_circle, sei lá. E, pra não correr o risco do seu jogo ser lançado com aquele círculo horroroso só porque você esqueceu de tirar uma linha de código, coloque esse desenho dentro de um "if debug_mode". Assim, no modo debug, o código será executado e o círculo aparecerá e, no jogo normal, não.

Fim. Espero que esse tutorial ajude iniciantes a serem um pouco mais arrojados e veteranos a verem seus erros sozinhos. Eu, mesmo, vou continuar dependendo da moçada daqui da comunidade... :oops:


Última edição por saim em Qui 06 Out 2011, 16:09, editado 3 vez(es)
avatar
saim

Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 0
   : 3

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Debugando

Mensagem por Tiago Lima em Qui 06 Out 2011, 07:52

Seu tutorial tá muito legal, realmente é uma obrigação, independente da linguagem que agente use, saber debugar o código, e seu tutorial tá bem instrutivo, a formatação (ou a falta dela) é o que confundi um pouco, mas você já sabe, né?

Bom tuto!
avatar
Tiago Lima

Ranking : Nota C
Notas recebidas : C
Data de inscrição : 14/07/2008
Número de Mensagens : 199
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário http://www.youtube.com/user/CanalNexteLevel

Voltar ao Topo Ir em baixo

Re: Debugando

Mensagem por Super Games em Qui 06 Out 2011, 08:35

Um bom tutorial com certeza, eu mesmo não sabia utilizar o "Debug Mode".
avatar
Super Games

Ranking : Nota D
Notas recebidas : D
Data de inscrição : 10/06/2010
Número de Mensagens : 2704
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Debugando

Mensagem por Alex FC em Qui 06 Out 2011, 09:05

Ótimo tutorial saim. Realmente seria impossível resolver certos problemas sem "debugar".

Dica: Pelo visto tu digitou no Word e colou aqui. Os espaçamentos entre os parágrafos foram "comidos" e o texto fica parerendo maior do que é.

Edit: Agora que vi seu EDIT sobre a formatação Very Happy.

FLWS!
avatar
Alex FC

Ranking : Nota A
Notas recebidas : B A
Data de inscrição : 20/12/2008
Número de Mensagens : 2503
Insígnias de JAM :

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 2
   : 1
   : 1

Ver perfil do usuário http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: Debugando

Mensagem por Klior em Qui 06 Out 2011, 09:16

Muito bom tutorial, eu uso muito o modo debug, acho indispensável o show_debug_message, variáveis local e variáveis globais, oque eu ainda não conhecia é sobre a variável debug_mode, achei bem interessante.
avatar
Klior

Data de inscrição : 07/03/2010
Número de Mensagens : 426
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Debugando

Mensagem por JV Justino em Qui 06 Out 2011, 11:33

Ótimo tutorial Saim!

Sempre uso o debug quando tenho problemas e não consigo resolvê-los. Também o uso quando vou fazer alguns testes dentro do jogo.

Enfim, o tutorial está ótimo e bem explicado.
Aprovado!

flw
avatar
JV Justino

Ranking : Nota A
Notas recebidas : A+A
Data de inscrição : 07/12/2010
Número de Mensagens : 619
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Debugando

Mensagem por saim em Qui 06 Out 2011, 16:05

Tsurugi Kyousuke escreveu:eu mesmo não sabia utilizar o "Debug Mode".
Foi o que me motivou a elaborar o tutorial. Notei que muitas dúvidas da comunidade, em geral, não existiriam se todo mundo soubesse usar o debug.

@Alex FC escreveu:Edit: Agora que vi seu EDIT sobre a formatação Very Happy.
Não, na verdade o que eu quis dizer era aquele cabeçalho. Os parágrafos estão inteiros mesmo, acho... Vou dar mais uma conferida, mas não achei nenhuma linha comida, na primeira passada de olhos.

@Klior escreveu:oque eu ainda não conhecia é sobre a variável debug_mode
Eu também não! :oops: Fui pesquisar, pra fazer um tutorial completo, e dei de cara com ela. É o que dizem, a melhor forma de aprender é ensinar...
avatar
saim

Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 0
   : 3

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Debugando

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum