{"id":791,"date":"2010-04-23T20:03:52","date_gmt":"2010-04-23T19:03:52","guid":{"rendered":"http:\/\/www.nielsgamborg.dk\/wordpress\/?p=791"},"modified":"2010-04-23T20:03:52","modified_gmt":"2010-04-23T19:03:52","slug":"debugging-for-begyndere","status":"publish","type":"post","link":"https:\/\/nielsgamborg.dk\/wordpress\/programmering\/debugging-for-begyndere.htm","title":{"rendered":"Debugging for begyndere"},"content":{"rendered":"<h3>Tips til debugging<\/h3>\n<p>Denne\u00a0<strong>guide til bebugge<\/strong> rettet mod begyndere i programmering.<\/p>\n<p>Jeg vil\u00a0give\u00a0konkrete\u00a0 tips og \u00a0id\u00e9er\u00a0samlet i <strong>3 simple trin<\/strong>.\u00a0 Jeg bruger\u00a0PHP og JavaScript eksempler, men\u00a0metoderne til at debugge er universelle, og\u00a0kan bruges\u00a0i forbindelse med\u00a0alle programmeringssprog.\u00a0<!--more--><\/p>\n<p>Baggrunden er, at jeg i forbindelse med mit\u00a0 <a title=\"Script til g\u00e6stebog\" href=\"http:\/\/www.nielsgamborg.dk\/?p=php&amp;u=gaestebog_script\">g\u00e6stebogs script<\/a> f\u00e5r\u00a0en del\u00a0henvendelser om hj\u00e6lp.<\/p>\n<h4>Basal debugging<\/h4>\n<p>Basalt set handler debugging om at isolere problemer. Det g\u00f8r man ved at skille tingene ad og unders\u00f8ge de enkelte dele. Virker hver enkelt del, som vi forventer?<\/p>\n<h2>3 simple trin til debugging<\/h2>\n<ol>\n<li>Tjek, dobbelt\u00a0tjek og triple tjek<\/li>\n<li>Skriv variabler ud<\/li>\n<li>Skil koden ad<\/li>\n<\/ol>\n<h3>1.\u00a0Tjek\u00a0 &#8211;\u00a0dobbelt\u00a0tjek &#8211;\u00a0triple tjek<\/h3>\n<p>Start med at tjekke og\u00a0dobbelt\u00a0tjekke alle indtastninger, parenteser, tegn etc.\u00a0Er \u00a0variabelnavne identiske?\u00a0 Er \u00a0funktionskald og navne\u00a0er stavet rigtigt?\u00a0 Er\u00a0syntaksen korrekt?\u00a0\u00a0N\u00e5r det er gjort, s\u00e5\u00a0tjek det hele en gang til&#8230;<\/p>\n<h3>2. Skriv\u00a0dine variabler ud<\/h3>\n<p>N\u00e6ste trin\u00a0er at skrive dine variabler ud.\u00a0Og fylde en masse print statements i din kode.\u00a0S\u00e5 kan du\u00a0se hvilke v\u00e6rdier dine variabler har og hvor\u00a0meget af koden, der bliver afviklet.\u00a0Brug f.eks. echo i PHP og alert() i\u00a0JavasScript:<\/p>\n<blockquote><p>PHP eksempel:<\/p>\n<p>$brugernavn = $_GET[&#8216;brugernavn&#8217;];<br \/>\necho $brugernavn;<\/p>\n<p>if($brugernavn == &#8220;&#8221;){<br \/>\necho &#8216;test1&#8217;;<br \/>\ndo something&#8230;<br \/>\necho &#8216;test2&#8217;;<br \/>\n}else{<br \/>\ndo something else &#8230;<br \/>\necho &#8216;test3&#8217;;<br \/>\n}<\/p><\/blockquote>\n<blockquote><p>JavaScript\u00a0eksempel:<\/p>\n<p>var brugernavn = document.getElementById(&#8216;brugernavn&#8217;).value;<\/p>\n<p>alert(brugernavn);<\/p>\n<p>if(brugernavn.length()\u00a0&lt; 3){<br \/>\ndo something &#8230;<br \/>\nalert(&#8216;test1&#8217;);<br \/>\n}else if{<br \/>\nalert(&#8216;test2&#8217;);<br \/>\ndo something else &#8230;<br \/>\nalert(&#8216;test3&#8217;);<br \/>\n}<\/p><\/blockquote>\n<p>Super debug metode\u00a0til at finde ud af, hvor langt du kommer i afviklingen af koden, f\u00f8r det g\u00e5r galt.\u00a0Bliver koden i \u00a0kodeblokkene afviklet,\u00a0som du forventer?<\/p>\n<h4>Hardcode dine\u00a0variabler<\/h4>\n<p>Du kan ogs\u00e5 pr\u00f8ve at hardcode\u00a0dine variabler i stedet for at hente dem med dit script.<\/p>\n<blockquote><p>$brugernavn = &#8220;Nikolaj&#8221;;<\/p><\/blockquote>\n<p>Det er en\u00a0god metode til at isolere og\u00a0\u00a0afd\u00e6kke,\u00a0om det er n\u00e5r du henter\u00a0data eller behandler data,\u00a0at\u00a0du f\u00e5r fejl.<\/p>\n<h3>3. Skil koden ad og simplific\u00e9r den<\/h3>\n<p>Pr\u00f8v at pille koden fra hinanden og g\u00f8r den enkel, \u00a0s\u00e5 du kan tjekke de enkelte dele. Pr\u00f8v f.eks.<\/p>\n<blockquote><p>if(2 == 2){&#8230;<\/p><\/blockquote>\n<p>frem for:<\/p>\n<blockquote><p>if(strlen(trim($_GET[&#8216;brugernavn&#8217;])) &gt;\u00a00\u00a0){&#8230;<\/p><\/blockquote>\n<p>S\u00e5 f\u00e5r du\u00a0debugget om det er\u00a0dine kodeblokke eller det er de betingelser, du har sat op i if-s\u00e6tningerne,\u00a0\u00a0der er problemer med.<\/p>\n<p>P\u00e5 samme m\u00e5de kan du pille kodeblokke helt ud af for-l\u00f8kker etc. Eller du kan simplificere dem ved at hardcode\u00a0tallene i l\u00f8kken som f.eks.:<\/p>\n<blockquote><p>for(i=0; i&lt;5;\u00a0i++;)\u00a0{&#8230;<\/p><\/blockquote>\n<h3>Bonus tips<\/h3>\n<h4>2 almindelige syntaks fejl<\/h4>\n<p>Her er 2\u00a0meget almindelige fejl, hvor fejlmeddelelserne ikke umiddelbart afsl\u00f8rer problemet.<\/p>\n<blockquote><p>PHP\u00a0eksempel:<\/p>\n<p>Parse error: parse error, expecting `&#8217;,&#8221; or `&#8217;;&#8221; in C:\\wamp\\www\\test\\minSide.php\u00a0 on line 13<\/p><\/blockquote>\n<p>Denne\u00a0PHP\u00a0parse error opst\u00e5r, n\u00e5r du ikke har afsluttet <strong>den foreg\u00e5ende<\/strong> linje\u00a0med et semikolon.<\/p>\n<blockquote><p>JavaScript\u00a0eksempel:<\/p>\n<p>minFunktion is not defined<\/p><\/blockquote>\n<p>Denne JavaScript fejl optr\u00e6der , n\u00e5r du fors\u00f8ger at kalde en tidligere defineret funktion. Funktionen\u00a0kan sagtens v\u00e6re\u00a0defineret, men\u00a0 indeholder \u00b4f.eks. en syntaks fejl\u00a0som en kr\u00f8lle-parantes\/tuborg-parantes for meget eller for lidt.<\/p>\n<h4>Google din fejlmeddelelser<\/h4>\n<p>Du er\u00a0helt sikkert\u00a0ikke den f\u00f8rste der har problemet.\u00a0Fjern lokale navne fra din fejlmeddelser og s\u00f8g p\u00e5 Google. M\u00e5ske du kan finde hj\u00e6lp til at indsn\u00e6vre problemet.<\/p>\n<h4>V\u00e6rkt\u00f8j til debugging<\/h4>\n<p>JavaScript udvikling foreg\u00e5r bedst i en <a title=\"Firefox\" href=\"http:\/\/www.mozilla.com\/da\/\">Firefox<\/a> browser, fordi Firefox har\u00a0gode v\u00e6rkt\u00f8jer til debugging af JavaScript. Brug enten Firefox&#8217;s indbyggede fejlkonsol eller Firefox plugin&#8217;et <a title=\"Firebug addon\" href=\"https:\/\/addons.mozilla.org\/da\/firefox\/addon\/1843\">Firebug<\/a>. Begge\u00a0giver gode og overskuelige fejlmeddelelser.<\/p>\n<h3>Afrunding<\/h3>\n<p>Debugging er en fast bestanddel af al programmering. N\u00e5r man programmerer laver man ogs\u00e5 fejl.\u00a0Heldigvis bliver man som regel bliver\u00a0b\u00e5de dygtigere og klogere\u00a0af det. Og n\u00e6ste gang er det nogle helt andre fejl, man laver. \ud83d\ude09<\/p>\n<p>Kender du andre\u00a0gode begynder tips, s\u00e5 smid endelig en kommentar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tips til debugging Denne\u00a0guide til bebugge rettet mod begyndere i programmering. Jeg vil\u00a0give\u00a0konkrete\u00a0 tips og \u00a0id\u00e9er\u00a0samlet i 3 simple trin.\u00a0 Jeg bruger\u00a0PHP og JavaScript eksempler, men\u00a0metoderne til at debugge er universelle, og\u00a0kan bruges\u00a0i forbindelse med\u00a0alle programmeringssprog.\u00a0<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[11],"tags":[76,77,199],"_links":{"self":[{"href":"https:\/\/nielsgamborg.dk\/wordpress\/wp-json\/wp\/v2\/posts\/791"}],"collection":[{"href":"https:\/\/nielsgamborg.dk\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nielsgamborg.dk\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nielsgamborg.dk\/wordpress\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/nielsgamborg.dk\/wordpress\/wp-json\/wp\/v2\/comments?post=791"}],"version-history":[{"count":0,"href":"https:\/\/nielsgamborg.dk\/wordpress\/wp-json\/wp\/v2\/posts\/791\/revisions"}],"wp:attachment":[{"href":"https:\/\/nielsgamborg.dk\/wordpress\/wp-json\/wp\/v2\/media?parent=791"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nielsgamborg.dk\/wordpress\/wp-json\/wp\/v2\/categories?post=791"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nielsgamborg.dk\/wordpress\/wp-json\/wp\/v2\/tags?post=791"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}