‫Bem vindo de volta.
‫Neste vídeo e nos próximos vídeos, gostaria de mostrar como usar a depuração no Visual Studio e a ideia
‫por trás da depuração é se livrar dos bugs.
‫E esses bugs às vezes podem ser muito fáceis de detectar, porque uma vez que você executa o programa
‫e ele começa a travar, você sabe, aqui você tem um bug, mas às vezes
‫é um bug lógico, o que significa que não será realmente visto por seu ID, mas tem que ser detectado por você ou por seus usuários, que
‫esperançosamente lhe dirão que você precisa melhorá-lo ou se livrar deste bug.
‫E para mostrar ou demonstrar a funcionalidade de depuração no Visual Studio, criei um
‫pequeno programa aqui.
‫Preparei uma pequena ferramenta que usaremos para isso, e a ferramenta vai ser uma ferramenta de amigos de festa
‫e branca.
‫Então a ideia é que minha filha acabou de fazer três anos e fizemos uma festinha para ela e ela poderia convidar alguns
‫amigos.
‫E é claro que ela adoraria convidar todo o jardim de infância, mas só permitimos que ela convidasse
‫três amigos.
‫Portanto, agora ela precisa decidir quais amigos deseja convidar.
‫E, claro, foi fácil porque existem alguns amigos que ela gosta mais do que outros.
‫Mas, no final das contas, não sei quem são seus amigos favoritos.
‫Então, se eu tivesse que decidir quem ela pode convidar, eu escreveria um pequeno programa que diz, OK, todo
‫mundo com um nome curto e até isso.
‫Sim, espero que vários, neste caso, três possam ser convidados para a festa.
‫Então ela nomeia todos os seus amigos.
‫E então vou apenas dizer, tudo bem, aqueles com os nomes mais curtos, os três com os nomes
‫mais curtos serão convidados.
‫E assim é para ouvir o que escrevi.
‫Isso é exatamente o que faz.
‫Então, temos essa lista, Frank, Joe, Michelle e Maria, Carlos e Angelina.
‫E nós temos esse método get party friends, que precisa de uma lista e a quantidade de pessoas que deve
‫selecionar dessa lista.
‫E então temos um loop for each, que apenas anota os nomes dessas pessoas ou dessas
‫crianças, no meu caso no console.
‫Tudo bem.
‫Nada muito sofisticado.
‫E o algoritmo que decide quem é convidado e quem não é este método aqui e aqui convidamos um amigo da festa ou
‫descobrimos quem é o amigo da festa.
‫Precisamos, é claro, de uma lista de pessoas que possamos verificar.
‫Em seguida, verificamos o nome mais curto e sempre comparamos.
‫Então, examinamos todas as pessoas da lista e sempre comparamos.
‫O nome vai ser mais curto do que um comprimento específico ou o das outras pessoas?
‫Então, no final das contas, vai me dar os nomes mais curtos.
‫Mas aqui eu atentamente tenho um bug aqui.
‫Tudo bem.
‫Vou comparar o nome maior do que o menor com esse comprimento.
‫Portanto, neste caso, vou obter apenas os nomes mais longos, embora queira obter todos os nomes
‫curtos.
‫Este é apenas um pacote de intenções que implementei, porque agora você pode ver que isso é algo que
‫talvez não tenha notado.
‫Claro, é um bug lógico.
‫E se executarmos o código, ele ainda será executado.
‫Não haverá contagem de bugs, nenhum erro.
‫Não vai travar.
‫Isso apenas nos dará os nomes errados.
‫Mas agora para nós, neste caso, é fácil porque vemos OK, Michelle, Angelina e Carlos são nomes
‫longos e conhecemos a lista.
‫Portanto, sabemos que havia Joe, Andy e Maria e até mesmo Frank com nomes mais curtos.
‫Mas, por algum motivo, eles não estavam na lista.
‫Mesmo que quiséssemos ter as pessoas mais curtas ou as pessoas com os nomes mais curtos.
‫Não sei quão baixos ou altos eles são, mas isso não importa aqui.
‫O importante é que aqui é fácil porque temos a lista visível aqui como desenvolvedor.
‫Mas e se conseguirmos a lista de outro lugar?
‫Digamos que obtemos a lista de um arquivo XML, que é enorme, com milhares de nomes, ou obtemos uma
‫lista da Internet e não podemos ver a lista antes de ser realmente processada por nosso software.
‫Assim, não veríamos que os nomes que nos foram dados não são, na verdade, os nomes mais curtos.
‫OK, mas nosso software tem esse pequeno bug e agora é isso que o método diferente faz.
‫Ele vai voltar apenas para abreviar seu nome.
‫E então temos este get party friends, plural, que apenas retorna a lista
‫de todas as pessoas com nomes curtos até uma determinada quantia que podemos pagar aqui.
‫Portanto, passamos o número três, o que significa que teríamos apenas três amigos.
‫Se passarmos o número quatro, teremos quatro amigos e assim por diante.
‫Tudo bem.
‫Então é basicamente isso que nosso software faz agora.
‫Temos carros de engenheiro comercial com Frank, então temos apenas uma lista vazia de amigos da festa.
‫E enquanto esta lista de amigos da festa tiver uma contagem inferior ao número que foi aprovado, nós.
‫Basta verificar o próximo amigo da festa, então vamos em frente e o adicionamos à lista de amigos da
‫festa e o que fazemos é removê-lo da lista que foi passada para nós.
‫Agora, isso é algo muito perigoso.
‫Mas fazemos isso porque somos um desenvolvedor iniciante e apenas fazemos este pequeno truque onde pensamos,
‫OK, agora vamos apenas nos livrar de uma variável ou de um elemento da lista.
‫E fazemos isso de forma programática.
‫E então, passo a passo, temos uma pequena lista e só temos as pessoas restantes para comparar, que ainda não
‫estão em nossa lista.
‫Tudo bem.
‫Então é isso que fazemos com esta lista.
‫Remova mesmo que não seja uma programação limpa.
‫Veremos como consertar isso mais tarde também.
‫Mas, por enquanto, temos o software e funciona.
‫Funciona perfeitamente bem.
‫Mas como descobrimos como consertar esse bug?
‫Porque agora sabemos que temos um bug e podemos, é claro, examinar nosso código.
‫E, neste caso, é fácil porque tem apenas 43 linhas de código.
‫Mas imagine que são milhares de linhas de código, muitos arquivos diferentes e muitas pessoas diferentes trabalharam nisso.
‫E você não consegue descobrir qual é o bug.
‫Agora, o que você pode fazer é usar os recursos de depuração do Visual Studio e, para fazer isso, o que
‫você pode fazer é apenas adicionar um ponto de interrupção.
‫Agora, vamos começar com um ponto de interrupção.
‫Nós temos isso.
‫Ponto vermelho aqui no lado esquerdo, então, em geral, esta barra cinza que você tem aqui, é onde você pode adicionar
‫pontos de interrupção.
‫Você também pode adicionar um ponto de interrupção pressionando à noite.
‫E não vou fazer isso porque o nove está pausando meu software de gravação de vídeo.
‫Portanto, preciso fazer isso usando meu mouse.
‫Então, eu vou para depurar e, em seguida, posso pressionar alternar ponto de interrupção.
‫O que isso fará é criar esse ponto de interrupção para mim.
‫Você também pode, é claro, pressionar F nove.
‫Portanto, o atalho é nove e é muito mais fácil usar atalhos durante a depuração, em vez de
‫depurar e clicar o tempo todo.
‫Tudo bem.
‫Portanto, acostume-se a usar os botões do teclado.
‫Tudo bem.
‫Então, vamos começar a depurar.
‫Tudo bem.
‫Vou depurar e começo a depurar.
‫Ou eu poderia simplesmente pressionar cinco para iniciar a depuração.
‫Agora que estamos fora desta pequena seta amarela, o que indica que é aqui que nosso software está atualmente preso
‫e nós o prendemos lá porque criamos este ponto de interrupção aqui.
‫Então, o software está quebrando nesse ponto.
‫E agora podemos mover o software para frente em nosso próprio ritmo, para que possamos ir linha por linha e possamos ir ainda mais
‫fundo.
‫Então vamos fazer isso.
‫Vamos passar de 10 ou pressionar este botão aqui no topo para avançar e ir para a próxima etapa.
‫A propósito, todos esses botões só estão disponíveis porque estou no modo de depuração.
‫Direito?
‫Então comecei a rodar meu software.
‫E também você pode ver que passo em passo sobre e passo para fora estão disponíveis aqui também.
‫Portanto, você tem várias maneiras de fazer isso.
‫Sim.
‫Avance, entre e saia ou pressione esses botões.
‫Tudo bem.
‫Então, o que estou fazendo agora é chegar à próxima linha.
‫Então, fui para a próxima linha.
‫E agora você pode ver que a diferença é um valor que tem sete valores.
‫Portanto, é uma lista de sete cordas, Frank, Joe, Michelle e assim por diante.
‫E zero, temos Frank no índice um com Joe e assim por diante.
‫Agora, amigos da festa em si ainda é uma lista vazia, embora estejamos atribuindo um valor a ela.
‫Mas isso é porque quando você está na linha onze, a linha dez executou o Partyline 11 ainda não foi executado.
‫Portanto, isso significa que precisamos avançar novamente, para que você possa pressionar F 10 novamente para ir para a próxima linha e
‫nossa linha 13.
‫Portanto, a linha 12 foi ignorada porque não há nada aqui.
‫Não há nenhum código lá.
‫E foi assim para cada loop.
‫Mas e agora se você quiser cavar mais fundo?
‫E se você quiser saber o que aconteceu quando esse método de chamar os amigos da festa foi chamado?
‫O que você pode fazer é voltar arrastando esta seta para cima.
‫Então, estou arrastando de volta para cima e agora estou de volta à linha onze.
‫E agora eu posso, em vez de avançar pressionando um botão, posso entrar pressionando F onze para
‫que possa pressionar todos os níveis e entro no método get party friend, o que significa que agora estamos na linha dezoito, o
‫que significa apenas que agora estamos dentro da chamada do método Gate Party Friends.
‫E aqui também podemos ir passo a passo.
‫Podemos verificar o que são amigos de festa.
‫Podemos verificar o valor dos amigos de festa.
‫Você pode ver a contagem, o zero.
‫Portanto, é uma lista vazia, o que significa apenas que não há entradas na lista.
‫E então temos este loop while onde comparamos as coisas para que possamos ir para a próxima linha e podemos ver
‫a contagem de amigos do partido era zero e comparar zero quatro e zero é menor que quatro.
‫Portanto, o loop while é ou o while é verdadeiro.
‫Portanto, podemos ir para a próxima linha.
‫E aqui estamos chamando de amigos da festa para que possamos ir ainda mais fundo para que possamos entrar em contato com amigos da festa.
‫E você pode ver agora que estamos neste método aqui.
‫Portanto, entrar significa entrar em um método, sair, que é a mudança.
‫Onze está saindo de um método.
‫Mas agora vamos dar uma olhada nesta chamada de método aqui.
‫Posso ver com o nome mais curto, que é Joe neste momento.
‫Então temos isso para Loop e aqui vamos nós, passo a passo neste outono.
‫Primeiro, definimos a variável e, em seguida, comparamos.
‫Uma vez que a comparação é verdadeira, vamos para o loop for ou dentro do loop for.
‫Então temos essa instrução if.
‫Comparamos novamente e podemos ver, ao que parece, o comprimento três não é maior do que o comprimento
‫ou o comprimento mais curto de três.
‫Portanto, três não é o terceiro grau.
‫Agora, a declaração if não era verdadeira, então foi para a próxima iteração do Falu.
‫Portanto, agora ele executará o loop for novamente e novamente.
‫Agora você pode sair.
‫E o que isso fará é sair da execução desse método e, em seguida, você poderá prosseguir a partir daí.
‫Mas o que você faz com isso é não executar o loop for como normalmente faria.
‫OK, então, se eu sair de novo, recebo uma exceção de argumento fora do intervalo.
‫Portanto, você tem que ter cuidado aqui para não entrar e sair o tempo todo, mas precisa se preocupar em
‫usar essas ferramentas, certo?
‫E você pode, é claro, apenas executar a partir daí ou pode parar a depuração, pode reiniciar todo o processo de depuração porque agora
‫temos esse pequeno erro e talvez você não saiba como consertá-lo.
‫Portanto, podemos simplesmente executar tudo novamente e agora podemos ir, é claro, novamente, passo a passo.
‫E nós podemos.
‫Avance, avance, avance até que estejamos no ponto em que nos dá os nomes para que você possa ver agora que
‫estamos.
‫Michelle, agora vai para o próximo nome da lista.
‫Agora a palavra Angelina vai para o próximo nome da lista, e é Carlos.
‫Portanto, você pode ver que pode verificar todas as variáveis e o estado de todas as variáveis a cada momento, o que
‫é muito importante se você quiser descobrir as coisas.
‫Tudo bem.
‫Essa é a ideia geral de como usar pontos de interrupção e como iniciar o processo de depuração.
‫No próximo vídeo, vamos ver como corrigir esse erro lógico vendo as variáveis e seus estados de uma maneira
‫melhor, porque agora posso, é claro, passar o mouse sobre as variáveis e ver qual valor
‫elas têm neste ponto específico.
‫Mas eu quero comparar várias variáveis ao mesmo tempo ou ver o estado de várias variáveis ao mesmo
‫tempo.
‫E é isso que veremos no próximo vídeo.
‫Então, vejo você lá.