{"id":1270,"date":"2026-09-23T04:01:26","date_gmt":"2026-09-23T07:01:26","guid":{"rendered":"https:\/\/adrianosantostreina.com.br\/blog\/debugging-com-ia-tecnicas-que-economizam-horas-2\/"},"modified":"2026-09-23T04:01:34","modified_gmt":"2026-09-23T07:01:34","slug":"debugging-com-ia-tecnicas-que-economizam-horas-2","status":"publish","type":"post","link":"https:\/\/adrianosantostreina.com.br\/blog\/debugging-com-ia-tecnicas-que-economizam-horas-2\/","title":{"rendered":"O Detetive Silencioso: Como Usar IA para Encontrar a Causa Raiz de um Bug em Vez de S\u00f3 Remend\u00e1-lo"},"content":{"rendered":"<p>S\u00e3o dezesseis horas. O sistema em produ\u00e7\u00e3o come\u00e7ou a devolver um erro espor\u00e1dico para alguns usu\u00e1rios \u2014 n\u00e3o todos, s\u00f3 alguns, e sem padr\u00e3o aparente. Voc\u00ea abre o log, encontra uma pilha de chamadas (o famoso <em>stack trace<\/em>, a sequ\u00eancia de fun\u00e7\u00f5es que foram executadas at\u00e9 o erro acontecer) com quinze linhas, das quais s\u00f3 tr\u00eas fazem sentido para voc\u00ea. Passa a pr\u00f3xima hora colocando <code>print<\/code> em pontos aleat\u00f3rios do c\u00f3digo, testando hip\u00f3teses no escuro, alterando uma vari\u00e1vel aqui, comentando um bloco ali. \u00c0s dezoito horas, o bug ainda est\u00e1 l\u00e1. Voc\u00ea n\u00e3o est\u00e1 mais perto da causa \u2014 s\u00f3 mais cansado.<\/p>\n<p>Essa cena se repete todos os dias em equipes de desenvolvimento, seja em Python, em Delphi, em JavaScript ou em qualquer outra linguagem. O problema n\u00e3o \u00e9 falta de conhecimento t\u00e9cnico: \u00e9 que investigar um bug manualmente exige segurar, ao mesmo tempo, o comportamento esperado do sistema, o comportamento real observado e todo o caminho de c\u00f3digo que liga um ao outro. \u00c9 um exerc\u00edcio de mem\u00f3ria e aten\u00e7\u00e3o que cansa r\u00e1pido. A boa not\u00edcia \u00e9 que esse tipo de investiga\u00e7\u00e3o \u2014 ler um erro, cruzar informa\u00e7\u00f5es, formular hip\u00f3teses e test\u00e1-las \u2014 \u00e9 exatamente o tipo de tarefa em que uma IA bem orientada rende muito, porque ela n\u00e3o se cansa de reler o mesmo trecho de c\u00f3digo dez vezes seguidas em busca de uma inconsist\u00eancia. Neste artigo voc\u00ea vai aprender t\u00e9cnicas simples e pr\u00e1ticas de debugging com IA, com exemplos de c\u00f3digo, para transformar esse tipo de tarde perdida em uma investiga\u00e7\u00e3o de poucos minutos.<\/p>\n<h2>O que \u00e9 debugging, afinal, e por que ele consome tanto tempo<\/h2>\n<p><strong>Debugging<\/strong> \u00e9 o processo de encontrar e corrigir defeitos (&#8220;bugs&#8221;) em um programa. Ele normalmente segue quatro etapas: reproduzir o erro, isolar a causa, corrigir o c\u00f3digo e validar que a corre\u00e7\u00e3o funcionou sem quebrar nada. Segundo <a href=\"https:\/\/www.ibm.com\/think\/topics\/ai-in-software-development\" target=\"_blank\" rel=\"noopener\">um artigo da IBM sobre IA no desenvolvimento de software<\/a>, ferramentas de intelig\u00eancia artificial j\u00e1 s\u00e3o usadas para detectar automaticamente bugs, vulnerabilidades e inefici\u00eancias, al\u00e9m de sugerir corre\u00e7\u00f5es \u2014 ou seja, o mercado j\u00e1 reconhece o debugging como uma das \u00e1reas onde a IA mais entrega valor pr\u00e1tico.<\/p>\n<p>A parte que mais consome tempo, na pr\u00e1tica, n\u00e3o costuma ser escrever a corre\u00e7\u00e3o \u2014 \u00e9 a etapa de <strong>isolar a causa<\/strong>. \u00c9 aqui que o desenvolvedor l\u00ea logs, navega entre arquivos, testa hip\u00f3teses e, muitas vezes, corrige o sintoma sem entender a origem real do problema. \u00c9 exatamente nessa etapa que a IA generativa, usada com t\u00e9cnica, encurta o caminho.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> vale a diferen\u00e7a entre corrigir o <em>sintoma<\/em> e corrigir a <em>causa raiz<\/em>. Um erro de &#8220;\u00edndice fora do intervalo&#8221; pode ser resolvido adicionando uma verifica\u00e7\u00e3o que evita o acesso indevido \u2014 mas se a lista chegou vazia por um problema anterior na consulta ao banco de dados, voc\u00ea s\u00f3 empurrou o bug para outro lugar. Sempre pergunte \u00e0 IA: &#8220;essa \u00e9 a causa raiz ou s\u00f3 o ponto onde o problema ficou vis\u00edvel?&#8221;<\/p>\n<\/blockquote>\n<h2>T\u00e9cnica 1: transformar o erro cru em um relat\u00f3rio estruturado<\/h2>\n<p>O primeiro erro comum \u00e9 colar o log de erro inteiro na IA e perguntar apenas &#8220;o que \u00e9 isso?&#8221;. Funciona, mas de forma rasa. O ideal \u00e9 fornecer contexto estruturado: o que o c\u00f3digo deveria fazer, o que ele fez de fato, e o trecho relevante \u2014 n\u00e3o o arquivo inteiro.<\/p>\n<p>Veja um exemplo simples em Python. Suponha esta fun\u00e7\u00e3o, que deveria calcular a m\u00e9dia de notas de uma turma:<\/p>\n<pre><code class=\"language-python\">def calcular_media(notas):\n    total = 0\n    for nota in notas:\n        total += nota\n    return total \/ len(notas)\n\nturma = []\nprint(calcular_media(turma))\n<\/code><\/pre>\n<p>Ao rodar, o erro \u00e9:<\/p>\n<pre><code>ZeroDivisionError: division by zero\n<\/code><\/pre>\n<p>Em vez de colar s\u00f3 essa linha, um prompt (a instru\u00e7\u00e3o dada \u00e0 IA) bem estruturado seria assim:<\/p>\n<pre><code>Contexto: a fun\u00e7\u00e3o calcular_media() deveria retornar a m\u00e9dia\nde uma lista de notas.\n\nComportamento esperado: se a lista estiver vazia, a fun\u00e7\u00e3o\ndeveria retornar 0, n\u00e3o gerar erro.\n\nComportamento observado: ZeroDivisionError ao chamar\ncalcular_media([]).\n\nC\u00f3digo da fun\u00e7\u00e3o:\ndef calcular_media(notas):\n    total = 0\n    for nota in notas:\n        total += nota\n    return total \/ len(notas)\n\nPergunta: qual \u00e9 a causa raiz e qual a corre\u00e7\u00e3o mais simples\nque preserva o comportamento para listas n\u00e3o vazias?\n<\/code><\/pre>\n<p>Com esse contexto, a resposta da IA tende a ser direta e j\u00e1 vem com a corre\u00e7\u00e3o test\u00e1vel:<\/p>\n<pre><code class=\"language-python\">def calcular_media(notas):\n    if not notas:\n        return 0\n    total = 0\n    for nota in notas:\n        total += nota\n    return total \/ len(notas)\n<\/code><\/pre>\n<p>O ganho de tempo aqui n\u00e3o vem da IA &#8220;saber mais Python&#8221; que voc\u00ea \u2014 vem de voc\u00ea ter organizado a informa\u00e7\u00e3o de um jeito que elimina a etapa de adivinha\u00e7\u00e3o. \u00c9 a mesma l\u00f3gica de quando um m\u00e9dico pede exames antes de dar um diagn\u00f3stico: quanto mais dado relevante e organizado, menor a chance de erro na primeira tentativa.<\/p>\n<h2>T\u00e9cnica 2: pedir hip\u00f3teses, n\u00e3o apenas a corre\u00e7\u00e3o<\/h2>\n<p>Um erro frequente \u00e9 pedir \u00e0 IA &#8220;conserta esse c\u00f3digo&#8221; e aceitar a primeira resposta sem entender por qu\u00ea. Isso resolve o bug de hoje, mas n\u00e3o ensina nada para o pr\u00f3ximo. Uma t\u00e9cnica mais eficaz \u00e9 pedir uma lista de hip\u00f3teses antes da corre\u00e7\u00e3o \u2014 assim voc\u00ea mant\u00e9m o controle do racioc\u00ednio, e a IA vira uma parceira de investiga\u00e7\u00e3o, n\u00e3o uma caixa-preta que devolve c\u00f3digo pronto.<\/p>\n<p>Segundo <a href=\"https:\/\/www.youtube.com\/watch?v=C2LNTTviOIU\" target=\"_blank\" rel=\"noopener\">um v\u00eddeo sobre engenharia e debugging com IA<\/a>, a ideia central \u00e9 que a IA n\u00e3o substitui o racioc\u00ednio de quem j\u00e1 entende o problema \u2014 ela amplia a capacidade de quem sabe formular a pergunta certa. Isso \u00e9 especialmente verdadeiro no debugging, onde a habilidade de descartar hip\u00f3teses rapidamente \u00e9 mais valiosa do que a habilidade de escrever c\u00f3digo.<\/p>\n<p>Um exemplo em JavaScript, com um bug mais sutil, envolvendo compara\u00e7\u00e3o de tipos:<\/p>\n<pre><code class=\"language-javascript\">function usuarioTemDesconto(idade) {\n  if (idade === \"18\") {\n    return true;\n  }\n  return false;\n}\n\nconsole.log(usuarioTemDesconto(18)); \/\/ esperado: true\n<\/code><\/pre>\n<p>Um prompt orientado a hip\u00f3teses seria:<\/p>\n<pre><code>A fun\u00e7\u00e3o usuarioTemDesconto(18) deveria retornar true, mas\nretorna false. Antes de me dar a corre\u00e7\u00e3o, liste de 2 a 3\nhip\u00f3teses poss\u00edveis para a causa, em ordem de probabilidade.\n<\/code><\/pre>\n<p>Uma resposta t\u00edpica e did\u00e1tica seria algo como:<\/p>\n<ul>\n<li>Hip\u00f3tese 1 (mais prov\u00e1vel): a compara\u00e7\u00e3o usa <code>===<\/code>, que verifica tipo e valor. O n\u00famero <code>18<\/code> nunca ser\u00e1 igual \u00e0 string <code>\"18\"<\/code>.<\/li>\n<li>Hip\u00f3tese 2: o valor de <code>idade<\/code> pode estar sendo convertido incorretamente em outro ponto do c\u00f3digo antes de chegar aqui.<\/li>\n<li>Hip\u00f3tese 3: a fun\u00e7\u00e3o pode estar sendo chamada com o par\u00e2metro errado.<\/li>\n<\/ul>\n<p>Ao pedir hip\u00f3teses antes da corre\u00e7\u00e3o, voc\u00ea aprende o conceito por tr\u00e1s do bug (neste caso, a diferen\u00e7a entre compara\u00e7\u00e3o estrita e compara\u00e7\u00e3o flex\u00edvel em JavaScript) \u2014 e n\u00e3o apenas copia uma linha corrigida sem entender por qu\u00ea. A corre\u00e7\u00e3o, depois, \u00e9 trivial:<\/p>\n<pre><code class=\"language-javascript\">function usuarioTemDesconto(idade) {\n  if (idade === 18) {\n    return true;\n  }\n  return false;\n}\n<\/code><\/pre>\n<h2>T\u00e9cnica 3: usar a IA para ler stack traces longos<\/h2>\n<p>Stack traces longos, comuns em aplica\u00e7\u00f5es maiores \u2014 sejam elas escritas em Java, C#, Delphi ou Python \u2014 costumam intimidar quem est\u00e1 come\u00e7ando, porque misturam c\u00f3digo da sua aplica\u00e7\u00e3o com c\u00f3digo de bibliotecas internas da linguagem ou do framework. A IA \u00e9 particularmente boa em separar o que \u00e9 &#8220;ru\u00eddo&#8221; do que \u00e9 sinal relevante.<\/p>\n<p>Um exemplo em Python com uma exce\u00e7\u00e3o encadeada:<\/p>\n<pre><code class=\"language-python\">Traceback (most recent call last):\n  File \"app.py\", line 42, in processar_pedido\n    valor_total = calcular_total(itens)\n  File \"calculos.py\", line 15, in calcular_total\n    return sum(item.preco * item.quantidade for item in itens)\n  File \"calculos.py\", line 15, in &lt;genexpr&gt;\n    return sum(item.preco * item.quantidade for item in itens)\nAttributeError: 'NoneType' object has no attribute 'preco'\n<\/code><\/pre>\n<p>O prompt ideal aqui n\u00e3o pede &#8220;conserta&#8221;, pede foco na origem:<\/p>\n<pre><code>Este stack trace mostra um AttributeError. Aponte exatamente\nem qual linha da minha aplica\u00e7\u00e3o (n\u00e3o de biblioteca) o problema\ncome\u00e7a, explique por que um item da lista \"itens\" pode estar\nNone, e sugira uma forma de validar isso antes de calcular o total.\n<\/code><\/pre>\n<p>A resposta tende a apontar que o problema est\u00e1 na gera\u00e7\u00e3o da lista <code>itens<\/code> antes de chegar em <code>calcular_total<\/code>, e sugerir uma valida\u00e7\u00e3o defensiva:<\/p>\n<pre><code class=\"language-python\">def calcular_total(itens):\n    itens_validos = [item for item in itens if item is not None]\n    if len(itens_validos) != len(itens):\n        # aqui \u00e9 o ponto de aten\u00e7\u00e3o: algo est\u00e1 gerando itens None\n        # vale investigar a origem da lista \"itens\"\n        pass\n    return sum(item.preco * item.quantidade for item in itens_validos)\n<\/code><\/pre>\n<p>Note que a corre\u00e7\u00e3o n\u00e3o esconde o problema \u2014 ela sinaliza que existe uma causa anterior que tamb\u00e9m precisa ser investigada. Isso \u00e9 debugging assistido por IA feito com responsabilidade: voc\u00ea n\u00e3o aceita apenas o remendo, voc\u00ea usa a IA para apontar onde olhar em seguida.<\/p>\n<h2>T\u00e9cnica 4: reproduzir o bug com um caso m\u00ednimo antes de pedir ajuda<\/h2>\n<p>Uma das t\u00e9cnicas mais subestimadas \u2014 e mais eficazes \u2014 \u00e9 pedir \u00e0 IA para ajudar a criar um <strong>caso m\u00ednimo de reprodu\u00e7\u00e3o<\/strong>: um trecho de c\u00f3digo pequeno, isolado, que reproduz o erro sem depender do sistema inteiro. Isso ajuda tanto voc\u00ea quanto a IA a enxergarem o problema sem ru\u00eddo.<\/p>\n<p>Segundo <a href=\"https:\/\/dev.to\/vinicius3w\/desenvolvimento-de-software-assistido-por-ia-principios-praticas-e-o-futuro-da-engenharia-de-hg7\" target=\"_blank\" rel=\"noopener\">um artigo sobre desenvolvimento assistido por IA no ciclo de vida do software<\/a>, uma das melhores pr\u00e1ticas \u00e9 sempre fornecer contexto espec\u00edfico e objetivo ao pedir ajuda de uma IA \u2014 o mesmo princ\u00edpio, aplicado ao debugging, significa reduzir o problema ao menor peda\u00e7o de c\u00f3digo que ainda reproduz o defeito.<\/p>\n<p>Exemplo pr\u00e1tico: imagine um sistema de e-commerce grande, com dezenas de arquivos, onde o c\u00e1lculo de frete est\u00e1 incorreto para pedidos internacionais. Em vez de colar o m\u00f3dulo inteiro de checkout na IA, voc\u00ea isola:<\/p>\n<pre><code class=\"language-python\">def calcular_frete(peso_kg, pais_destino):\n    taxa_base = 10\n    if pais_destino != \"BR\":\n        taxa_base *= 1.5\n    return taxa_base * peso_kg\n\n# Caso m\u00ednimo que reproduz o bug:\n# frete internacional de 2kg deveria ser 30, mas retorna 20\nprint(calcular_frete(2, \"US\"))\n<\/code><\/pre>\n<p>Com esse trecho isolado, o prompt fica simples e direto:<\/p>\n<pre><code>Este caso m\u00ednimo reproduz um bug: calcular_frete(2, \"US\")\ndeveria retornar 30 (10 * 1.5 * 2), mas est\u00e1 retornando 20.\nOnde est\u00e1 o erro de preced\u00eancia ou de l\u00f3gica?\n<\/code><\/pre>\n<p>A resposta aponta rapidamente que a multiplica\u00e7\u00e3o por <code>1.5<\/code> est\u00e1 sendo aplicada corretamente \u00e0 vari\u00e1vel <code>taxa_base<\/code>, mas o teste mental do desenvolvedor esperava o resultado errado \u2014 ou seja, \u00e0s vezes a IA revela que o &#8220;bug&#8221; era uma expectativa equivocada sobre o pr\u00f3prio c\u00e1lculo. Isso tamb\u00e9m \u00e9 debugging: descartar hip\u00f3teses falsas rapidamente, sem gastar a tarde inteira reescrevendo c\u00f3digo que j\u00e1 funcionava.<\/p>\n<h2>T\u00e9cnica 5: usar a IA para gerar testes que travam o bug no lugar<\/h2>\n<p>Depois de corrigir um bug, existe um passo que costuma ser pulado por pressa: escrever um teste automatizado que garanta que aquele erro espec\u00edfico n\u00e3o volte a acontecer silenciosamente. A IA \u00e9 uma \u00f3tima aliada aqui, porque transformar &#8220;o bug que acabei de corrigir&#8221; em um teste automatizado \u00e9 uma tarefa mec\u00e2nica e repetitiva \u2014 exatamente o tipo de trabalho que vale delegar.<\/p>\n<p>Retomando o exemplo da fun\u00e7\u00e3o <code>calcular_media<\/code>:<\/p>\n<pre><code class=\"language-python\">def test_calcular_media_lista_vazia_retorna_zero():\n    assert calcular_media([]) == 0\n\ndef test_calcular_media_lista_com_valores():\n    assert calcular_media([7, 8, 9]) == 8\n<\/code><\/pre>\n<p>Um prompt simples para gerar esse teste seria: &#8220;Escreva testes usando pytest que garantam que o bug de divis\u00e3o por zero corrigido nesta fun\u00e7\u00e3o n\u00e3o volte a acontecer, cobrindo lista vazia e lista com valores.&#8221; Esse pequeno h\u00e1bito transforma cada bug corrigido em uma prote\u00e7\u00e3o permanente contra regress\u00e3o \u2014 o retorno do mesmo erro no futuro.<\/p>\n<h2>Como isso se aplica fora do Python: o mesmo racioc\u00ednio em qualquer linguagem<\/h2>\n<p>As t\u00e9cnicas acima n\u00e3o s\u00e3o espec\u00edficas de uma linguagem. O mesmo processo \u2014 contexto estruturado, hip\u00f3teses antes da corre\u00e7\u00e3o, isolamento do stack trace, caso m\u00ednimo de reprodu\u00e7\u00e3o e teste de regress\u00e3o \u2014 se aplica igualmente a Delphi, Java, C#, Go ou qualquer outra tecnologia. Em Delphi, por exemplo, um erro de &#8220;Access Violation&#8221; (acesso inv\u00e1lido de mem\u00f3ria) costuma ser t\u00e3o intimidador quanto um stack trace longo em Python, e a mesma estrat\u00e9gia de isolar o trecho m\u00ednimo de c\u00f3digo que reproduz o problema \u2014 em vez de colar a unit inteira \u2014 funciona igualmente bem.<\/p>\n<p>Como aponta <a href=\"https:\/\/www.appbuilder.dev\/pt-BR\/blog\/impact-of-ai-on-software-development\/\" target=\"_blank\" rel=\"noopener\">um artigo sobre o impacto da IA no desenvolvimento de software<\/a>, a tend\u00eancia \u00e9 que cada vez menos c\u00f3digo seja escrito manualmente do zero \u2014 mas isso n\u00e3o elimina a necessidade de entender o que est\u00e1 sendo executado. No debugging, essa compreens\u00e3o continua sendo do desenvolvedor; a IA acelera a busca, n\u00e3o substitui o julgamento sobre o que \u00e9, de fato, a causa do problema.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> segundo <a href=\"https:\/\/www.youtube.com\/watch?v=GmaYtk2Izow\" target=\"_blank\" rel=\"noopener\">um v\u00eddeo sobre programar com IA em 2026<\/a>, a diferen\u00e7a entre quem ganha tempo real com IA e quem apenas troca um tipo de retrabalho por outro est\u00e1 na disciplina de validar cada resposta antes de aplic\u00e1-la \u2014 no debugging isso significa nunca aplicar uma corre\u00e7\u00e3o sugerida sem antes rodar o teste que comprova que o sintoma desapareceu.<\/p>\n<\/blockquote>\n<h2>Um checklist b\u00e1sico para o seu pr\u00f3ximo bug<\/h2>\n<ul>\n<li>Descreva o comportamento esperado e o comportamento observado antes de colar qualquer c\u00f3digo.<\/li>\n<li>Cole apenas o trecho relevante, n\u00e3o o arquivo inteiro \u2014 isso reduz ru\u00eddo e melhora a qualidade da resposta.<\/li>\n<li>Pe\u00e7a hip\u00f3teses antes de pedir a corre\u00e7\u00e3o, para entender a causa, n\u00e3o s\u00f3 aplicar o remendo.<\/li>\n<li>Sempre que poss\u00edvel, reduza o problema a um caso m\u00ednimo de reprodu\u00e7\u00e3o.<\/li>\n<li>Depois de corrigir, escreva (ou pe\u00e7a \u00e0 IA para escrever) um teste que trave aquele bug espec\u00edfico no futuro.<\/li>\n<\/ul>\n<h2>Continue essa conversa com quem tamb\u00e9m est\u00e1 aprendendo na pr\u00e1tica<\/h2>\n<p>As t\u00e9cnicas apresentadas aqui s\u00e3o um ponto de partida s\u00f3lido, mas debugging \u00e9 uma habilidade que se aprofunda com troca de experi\u00eancia \u2014 cada bug real que voc\u00ea resolve ensina algo que nenhum artigo consegue prever. Se voc\u00ea quer discutir casos reais, tirar d\u00favidas sobre prompts que n\u00e3o funcionaram como esperado ou trocar ideias com outros desenvolvedores que tamb\u00e9m est\u00e3o incorporando IA na rotina de trabalho, participe da <a href=\"https:\/\/adrianosantos.link\/ComunidadeDevAI\" target=\"_blank\" rel=\"noopener\">Comunidade Dev&#8217;s AI<\/a>. \u00c9 um espa\u00e7o para quem programa de verdade e quer usar IA com t\u00e9cnica, n\u00e3o por modismo.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>O debugging sempre foi uma das tarefas mais desgastantes da rotina de quem desenvolve software, justamente porque exige segurar muita informa\u00e7\u00e3o na cabe\u00e7a ao mesmo tempo. A IA generativa, usada com as t\u00e9cnicas certas \u2014 contexto estruturado, hip\u00f3teses antes da corre\u00e7\u00e3o, isolamento de stack traces, casos m\u00ednimos de reprodu\u00e7\u00e3o e testes de regress\u00e3o \u2014 n\u00e3o elimina a necessidade de voc\u00ea entender o problema, mas reduz drasticamente o tempo gasto na etapa mais custosa: descobrir onde, de fato, o erro come\u00e7ou. A diferen\u00e7a entre uma tarde perdida e uma investiga\u00e7\u00e3o de poucos minutos, na maioria das vezes, n\u00e3o est\u00e1 na ferramenta que voc\u00ea usa, mas em como voc\u00ea formula a pergunta para ela.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>S\u00e3o dezesseis horas. O sistema em produ\u00e7\u00e3o come\u00e7ou a devolver um erro espor\u00e1dico para alguns usu\u00e1rios \u2014 n\u00e3o todos, s\u00f3 alguns, e sem padr\u00e3o aparente. Voc\u00ea abre o log, encontra uma pilha de chamadas (o famoso stack trace, a sequ\u00eancia de fun\u00e7\u00f5es que foram executadas at\u00e9 o erro acontecer) com quinze linhas, das quais s\u00f3 [&hellip;]<\/p>\n","protected":false},"author":127,"featured_media":1271,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1270","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1270","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/users\/127"}],"replies":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1270"}],"version-history":[{"count":1,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1270\/revisions"}],"predecessor-version":[{"id":1272,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1270\/revisions\/1272"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media\/1271"}],"wp:attachment":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}