{"id":8780,"date":"2011-02-09T21:30:00","date_gmt":"2011-02-09T19:30:00","guid":{"rendered":"https:\/\/fatihboy.com\/post\/windbg-ile-hata-ayiklama"},"modified":"2021-06-21T14:47:27","modified_gmt":"2021-06-21T11:47:27","slug":"windbg-ile-hata-ayiklama","status":"publish","type":"post","link":"https:\/\/fatihboy.com\/en\/windbg-ile-hata-ayiklama\/","title":{"rendered":"WinDBG ile Hata Ay\u0131klama"},"content":{"rendered":"<p>&nbsp;&nbsp;&nbsp; Hata ay\u0131klama makale serisi ile uygulamalar\u0131m\u0131z\u0131 geli\u015ftirirken alabilece\u011finiz \u00f6nlemlerden ba\u015flayarak, son kullan\u0131c\u0131da olu\u015fan hatalar\u0131n kayna\u011f\u0131n\u0131 bulabilme, .net framework 4.0 ile geli\u015ftirilen uygulaman\u0131za ait bir haf\u0131za d\u00f6k\u00fcm\u00fc \u00fczerinden hata ay\u0131klama i\u015flemi yapabilmeye kadar&nbsp; pek \u00e7ok konuya de\u011finmeye \u00e7al\u0131\u015ft\u0131m. Visual Studio ile bir haf\u0131za d\u00f6k\u00fcm (<em>dump<\/em>) dosyas\u0131 \u00fczerinden hata ay\u0131klama yapmay\u0131 anlat\u0131rken hat\u0131rlayacaks\u0131n\u0131z, \u00f6zellikle not d\u00fc\u015fm\u00fc\u015ft\u00fcm; bu \u00f6zelli\u011fi kullanabilmeniz i\u00e7in haf\u0131za d\u00f6k\u00fcm\u00fcn\u00fc ald\u0131\u011f\u0131n\u0131z uygulaman\u0131n mutlaka .net framework 4.0 ile derlenmi\u015f olmas\u0131 gerekmekte. Peki bu durumda \u00f6nceki s\u00fcr\u00fcmlerle geli\u015ftirilmi\u015f uygulamalarda haf\u0131za d\u00f6k\u00fcm\u00fcn\u00fc kullanam\u0131yor muyuz? Tabi ki hay\u0131r; kesinlikle kullanabilirsiniz, sadece mevcut s\u00fcr\u00fcm\u00fcyle hen\u00fcz Visual Studio ile bir hata ay\u0131klama oturumu ba\u015flatman\u0131z desteklenmemekte. Alternatif olarak bu gibi durumlarda WindDBG uygulamas\u0131 ile haf\u0131za&nbsp; d\u00f6k\u00fcm dosyas\u0131n\u0131 incelemeniz&nbsp; m\u00fcmk\u00fcn; fakat ya\u015fayaca\u011f\u0131n\u0131z \u015fey ayn\u0131 Windows ortam\u0131ndan MS-DOS ortam\u0131na ge\u00e7i\u015f gibi olacakt\u0131r \ud83d\ude42 WinDBG olduk\u00e7a g\u00fc\u00e7l\u00fc bir uygulamad\u0131r; fakat neredeyse t\u00fcm i\u015fler sadece komutlarla yap\u0131labildi\u011fi i\u00e7in iyi bir bilgi birikimine ihtiyac\u0131n\u0131z olacakt\u0131r. Bu makalemde Visual Studio i\u00e7erisinde bahsetmi\u015f oldu\u011fum hata ay\u0131klama oturumu \u00f6zelli\u011finin bulunmad\u0131\u011f\u0131n\u0131\/kullanamad\u0131\u011f\u0131m\u0131z\u0131 varsayarak WinDBG uygulamas\u0131n\u0131 kullanarak hatan\u0131n kayna\u011f\u0131na nas\u0131l inebilece\u011fimizi payla\u015f\u0131yor olaca\u011f\u0131m.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; \u00d6ncelikle, makalemde bahsedece\u011fim WinDBG uygulamas\u0131n\u0131 kullanabilmek i\u00e7in <a href=\"http:\/\/www.microsoft.com\/whdc\/DevTools\/Debugging\/default.mspx\" target=\"_blank\" rel=\"noopener noreferrer\">Debugging Tools for Windows<\/a> bilgisayar\u0131n\u0131zda kurulu olmal\u0131d\u0131r. Kurulum sonras\u0131nda ba\u015flat men\u00fcs\u00fcnden eri\u015febilece\u011finiz WinDBG uygulamas\u0131 a\u00e7\u0131ld\u0131\u011f\u0131nda a\u015fa\u011f\u0131daki ekranla kar\u015f\u0131la\u015facaks\u0131n\u0131z;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/WinDBG.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/WinDBG_thumb.png\" alt=\"WinDBG uygulamas\u0131 ana ekran\u0131\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; WinDBG uygulamas\u0131n\u0131n kullan\u0131m\u0131n\u0131 \u00f6rneklerken, daha fazla detay verebilmek ad\u0131na, \u00e7al\u0131\u015fan bir uygulamada nas\u0131l hata yakalama oturumunun ba\u015flatabilece\u011fimizden bahsedece\u011fim. WinDBG&#8217;yi kullan\u0131rken \u00e7al\u0131\u015fan bir uygulama \u00fczerinden i\u015flem yapmak ile bir haf\u0131za d\u00f6k\u00fcm\u00fc \u00fczerinde i\u015flem yapma aras\u0131nda \u00e7ok fazla fark olmamas\u0131na kar\u015f\u0131n, do\u011fas\u0131 gere\u011fi haf\u0131za d\u00f6k\u00fcmlerinden s\u00fcreci devam ettirme, break point b\u0131rakma, ad\u0131m atlama, ilerleme v.b. i\u015flemleri kullanabilme olana\u011f\u0131 bulunmamaktad\u0131r.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/AttackToProcess.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/AttackToProcess_thumb.png\" alt=\"WinDBG ile bir i\u015fleme ba\u011flanma\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; \u00c7al\u0131\u015fan bir uygulama \u00fczerinde hata ay\u0131klama i\u015flemine ba\u015flayabilmek i\u00e7in&nbsp; <strong>File-&gt;Attach to a Process..<\/strong> men\u00fcs\u00fcn\u00fc ya da F6 k\u0131sa yolunu kullanabilirsiniz. Bu men\u00fc kar\u015f\u0131m\u0131za yukar\u0131da ekran g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc bulabilece\u011finiz &#8220;<em>Attach to Process<\/em>&#8221; diyalogunu getirecektir. Hali haz\u0131rda i\u015fletim sistemi \u00fczerinde \u00e7al\u0131\u015fan i\u015flemlerin listelendi\u011fi bu ekranda hata ay\u0131klama oturumunu ba\u015flatmak istedi\u011fimiz i\u015flemi se\u00e7erek ok tu\u015fuyla oturumu ba\u015flatabiliriz.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/DebugBreakPoint.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/DebugBreakPoint_thumb.png\" alt=\"WinDBG ile bir  i\u015fleme ba\u011fland\u0131ktan sonra al\u0131nan ilk hata : BreakPoint\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; WinDBG uygulamas\u0131 ile \u00e7al\u0131\u015fan bir i\u015flem \u00fczerinde hata ay\u0131klama oturumu ba\u015flatt\u0131\u011f\u0131nda ilk \u00f6nce bir break point olu\u015fturularak uygulaman\u0131n t\u00fcm i\u015fleyi\u015fi i\u015fletim sistemince durdurulacakt\u0131r. Bir Win32 uygulamas\u0131 i\u00e7in debugger geli\u015ftirilmesini sizlerle payla\u015ft\u0131\u011f\u0131m <a href=\"\/en\/?p=8667\">makalemi<\/a> hat\u0131rlayacak olursan\u0131z olu\u015fan bu ilk break point size tan\u0131d\u0131k gelecektir. \u0130\u015fletim sistemi a\u00e7\u0131s\u0131ndan break point&#8217;te bir hata olarak ele al\u0131narak y\u00f6netilmesi i\u00e7in i\u015flem durdurularak debugger&#8217;e bildirilmektedir. Makalemde, daha \u00f6nceki hata ay\u0131klama makalelerimde de oldu\u011fu gibi, \u00f6rnek olarak CRMUygulamas\u0131n\u0131 kullanaca\u011f\u0131m. CRM uygulamas\u0131n\u0131 ba\u015flatt\u0131ktan sonra WinDBG uygulamas\u0131n\u0131 a\u00e7arak F6 tu\u015fu ile gelen diyalog \u00fczerinden bu uygulamay\u0131 se\u00e7ti\u011finizde yukar\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fc ile kar\u015f\u0131 kar\u015f\u0131ya kalacaks\u0131n\u0131z. \u0130sterseniz \u00f6ncelikle bu ekran\u0131n bize neler anlatt\u0131\u011f\u0131n\u0131 ve WinDBG uygulamas\u0131n\u0131 nas\u0131l kullanmaya ba\u015flayabilece\u011fimizi g\u00f6relim.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Hata ay\u0131klama oturumunun ba\u015flamas\u0131 ile birlikte WinDBG uygulamas\u0131 bize i\u015flemde y\u00fckl\u00fc olan mod\u00fclleri listeleyecektir. Hemen ard\u0131ndan da &#8220;<em>Break instruction exception &#8211; code 80000003 (first chance)<\/em>&#8221; mesaj\u0131yla, yukar\u0131da da bahsetmi\u015f oldu\u011fum, ilk break point <em>hatas\u0131n\u0131<\/em> yakalayacakt\u0131r.&nbsp; WinDBG uygulamas\u0131 her hata bildiriminde otomatik olarak hata bilgisi ile birlikte i\u015flemci kay\u0131t\u00e7\u0131lar\u0131n\u0131 (<em>registery&#8217;lerini<\/em>) ve sahip olduklar\u0131 de\u011ferleri listeleyecektir. Mesaj\u0131n son sat\u0131r\u0131nda ise assembly seviyesinde i\u015fletilen son sat\u0131r\u0131 g\u00f6receksiniz; ki bizim \u00f6rne\u011fimizde bu &#8220;<em>776b3574 cc int 3<\/em>&#8221; ifadesidir.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Ekran\u0131n en alt b\u00f6l\u00fcm\u00fc komut giri\u015fi i\u00e7in ayr\u0131lm\u0131\u015ft\u0131r. Bu alanda ayn\u0131 anda bir ya da birka\u00e7 komutun belirtilmesi m\u00fcmk\u00fcnd\u00fcr. Birden fazla komut verilmesi durumunda komutlar\u0131 <strong>;<\/strong> (noktal\u0131 virg\u00fcl) ile ayr\u0131lmas\u0131 gerekmektedir. Bu b\u00f6l\u00fcm\u00fcn solunda ise aktif olan i\u015f par\u00e7ac\u0131\u011f\u0131n\u0131n (<em>thread<\/em>)&nbsp; id&#8217;si g\u00f6sterilmektedir. Bu sayede, yaz\u0131l\u0131m geli\u015ftirici hangi i\u015f par\u00e7ac\u0131\u011f\u0131 \u00fczerinde i\u015flem yapt\u0131\u011f\u0131n\u0131 kolayca g\u00f6rebilmektedir. \u0130\u015f par\u00e7ac\u0131klar\u0131ndan bahsedince, san\u0131r\u0131m ilk komutumuzu \u00f6\u011frenmenin zaman\u0131 geldi. WinDBG ile ba\u015flat\u0131lan bir hata ay\u0131klama oturumunda aktif i\u015f par\u00e7ac\u0131klar\u0131n\u0131 <strong>~<\/strong> komutu ile g\u00f6rebilirsiniz. Bu komut ile gelen tablonun ilk s\u00fctunu ilgili i\u015f par\u00e7ac\u0131\u011f\u0131n\u0131n id&#8217;sini belirtmektedir. Aktif i\u015f par\u00e7ac\u0131\u011f\u0131ndan farkl\u0131 bir i\u015f par\u00e7ac\u0131\u011f\u0131nda i\u015flem yapabilmek i\u00e7in <strong>~[i\u015f par\u00e7ac\u0131\u011f\u0131 id&#8217;si]s<\/strong> komutu kullan\u0131labilir; \u00f6rnek vermek gerekirse, 1 id&#8217;li i\u015f par\u00e7ac\u0131\u011f\u0131nda aktif olarak i\u015flem yapmak i\u00e7in ~1s komutu kullan\u0131lmal\u0131d\u0131r. Aktif i\u015f par\u00e7ac\u0131\u011f\u0131n\u0131n her de\u011fi\u015fiminde WinDBG otomatik olarak bu i\u015f par\u00e7ac\u0131\u011f\u0131 i\u00e7in i\u015flemci kay\u0131t\u00e7\u0131lar\u0131n\u0131 ve de\u011ferlerini, ard\u0131ndan da i\u015fletilen son komutu g\u00f6sterecektir. Uygulaman\u0131n durduruldu\u011fu anda aktif olan i\u015f par\u00e7ac\u0131\u011f\u0131ndan farkl\u0131 bir i\u015f par\u00e7ac\u0131\u011f\u0131nda \u00e7al\u0131\u015f\u0131l\u0131rken ~ komutu ile t\u00fcm i\u015f par\u00e7ac\u0131klar\u0131n\u0131 listeleyecek olursan\u0131z, bu son aktif i\u015f par\u00e7ac\u0131\u011f\u0131n\u0131n ba\u015f\u0131nda <strong># <\/strong>karakteri ile di\u011ferlerinden ay\u0131rt edebilirsiniz. Benzer \u015fekilde ge\u00e7i\u015f yap\u0131lm\u0131\u015f olan ve \u00fczerinde \u00e7al\u0131\u015f\u0131lan i\u015f par\u00e7ac\u0131\u011f\u0131n\u0131n hemen yan\u0131nda da <strong>.<\/strong> (<em>nokta<\/em>) bulunacakt\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; WinDBG i\u00e7erisinde komutlar \u00fc\u00e7 temel grupta toplanm\u0131\u015ft\u0131r; komutlar, meta komutlar ve geni\u015fletme komutlar\u0131. komutlar\u0131n ba\u015f\u0131nda herhangi bir \u00f6n ek bulunmazken, meta komutlar <strong>.<\/strong> (<em>nokta<\/em>), geni\u015fletme komutlar\u0131 ise <strong>!<\/strong> (<em>\u00fcnlem<\/em>) ile ba\u015flamaktad\u0131rlar.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; E\u011fer bir yaz\u0131l\u0131m geli\u015ftirici olarak assembly ve\/veya C deneyiminiz yok\/az ise muhtemelen \u015fimdiye kadar payla\u015ft\u0131\u011f\u0131m bilgiler sizin a\u00e7\u0131n\u0131zdan \u00e7ok fazla faydal\u0131 olmayacakt\u0131r \ud83d\ude42 \u0130sterseniz biz .net framework ailesi yaz\u0131l\u0131m geli\u015ftiricilerinin daha fazla a\u015f\u0131na oldu\u011fu konulara do\u011fru ilerleyelim. .Net framework kurulumu ile birlikte Microsoft biz yaz\u0131l\u0131m geli\u015ftiricileri d\u00fc\u015f\u00fcnerek WinDBG kullan\u0131m\u0131m\u0131z\u0131 kolayla\u015ft\u0131racak bir grup komut setini kullan\u0131m\u0131na sunmu\u015ftur (<strong><em>sos.dll<\/em><\/strong>). .Net framework 4 ile birlikte bu komut setini a\u015fa\u011f\u0131daki komutu kullanarak y\u00fckleyebilmeniz m\u00fcmk\u00fcn;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/LoadbySosClr.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/LoadbySosClr_thumb.png\" alt=\".Net uygulamalar\u0131n\u0131 debug edebilmek i\u00e7in SOS.dll y\u00fcklenmeli\"\/><\/a><\/figure>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">.loadby sos clr<\/pre>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Canl\u0131 bir hata ay\u0131klama oturumunda yukar\u0131daki \u015fekilde y\u00fcklenebilen SOS komut setini, alternatif olarak (<em>\u00f6rne\u011fin bir haf\u0131za d\u00f6k\u00fcm dosyas\u0131n\u0131 incelerken<\/em>) a\u015fa\u011f\u0131daki komut yard\u0131m\u0131yla da komut setinin y\u00fcklenmesi de m\u00fcmk\u00fcnd\u00fcr;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">.load C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30128\\sos.dll<\/pre>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Bu noktada e\u011fer takip etti\u011finiz i\u015flem .net framework 4.0 alt\u0131ndaki bir framework ile yaz\u0131lm\u0131\u015f ise SOS komut setini a\u015fa\u011f\u0131daki \u015fekilde y\u00fckleyebilirsiniz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">.loadby sos mscorwks<\/pre>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; .Net framework komut setinin y\u00fcklenmesi sonras\u0131ndaki ad\u0131mlar\u0131m\u0131z (<em>zorunlu olmamakla birlikte<\/em>) uygulama sembol ve kaynak kodlar\u0131n\u0131n bulundu\u011fu dizinleri belirtmek olmal\u0131d\u0131r. Bu iki i\u015flemi File men\u00fcs\u00fc alt\u0131ndaki girdilerle yapabiliyor olmam\u0131za kar\u015f\u0131n, a\u015f\u0131na olman\u0131z ad\u0131na, a\u015fa\u011f\u0131daki komutlarla yapabilirsiniz;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/SynmPath.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/SynmPath_thumb.png\" alt=\"sympath komutu ile sembol dosyalar\u0131n\u0131z\u0131n nerede bulundu\u011funu belirtebilirsiniz\"\/><\/a><\/figure>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">.sympath C:\\temp\\semboller;srv*http:\/\/msdl.microsoft.com\/download\/symbols<\/pre>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Sembol dosyalar\u0131n\u0131n bulunaca\u011f\u0131 dizinlerin\/sunucular\u0131n belirtildi\u011fi <strong>.sympath<\/strong> komutunda, noktal\u0131 virg\u00fcl ile ay\u0131rmak ko\u015fulu ile, istenildi\u011fi kadar adres verilmesi m\u00fcmk\u00fcnd\u00fcr. Yukar\u0131daki \u00f6rne\u011fimizde c:\\temp\\semboller klas\u00f6r\u00fc ilk bak\u0131lacak sembol klas\u00f6r\u00fc olarak belirlenirken, devam\u0131nda da <em>http:\/\/msdl.microsoft.com\/download\/symbols<\/em> adresi eklenmi\u015ftir. <strong>srv*<\/strong> ile bir sembol sunucusu adresi belirtildi\u011fi belirtilmektedir. <em>http:\/\/msdl.microsoft.com\/download\/symbols<\/em> adresi Microsoft&#8217;un geli\u015ftirdi\u011fi \u00fcr\u00fcnlerin a\u00e7\u0131k sembollerinin (<strong>Public Symbols<\/strong>) bulundu\u011fu adrestir.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/SrcPath.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/SrcPath_thumb.png\" alt=\"srcpath komutu ile kaynak kodlar\u0131n\u0131z\u0131n nerede bulundu\u011funu belirtebiliriz\"\/><\/a><\/figure>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">.srcpath C:\\temp\\HataAyiklama\\CRMUygulamasi<\/pre>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Yukar\u0131da \u00f6rnekledi\u011fim <strong>.srcpath<\/strong> komutu ise WinDBG&#8217;ye kaynak kodlar\u0131n\u0131 hangi dizinlerde bulabilece\u011fini belirtmektedir. Noktal\u0131 virg\u00fcl ile ay\u0131rmak ko\u015fulu ile birden fazla adres belirtilmesi m\u00fcmk\u00fcnd\u00fcr.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; \u00d6ncede belirtti\u011fim gibi, .sympath ve .srcpath komutlar\u0131 kesinlikle \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 zorunlu komutlar olmamas\u0131na kar\u015f\u0131n (<em>\u00f6rne\u011fin pdb ve\/veya kaynak kodlar\u0131n\u0131n elinizde bulunmad\u0131\u011f\u0131 senaryolarda<\/em>), daha detayl\u0131 hata ay\u0131klama yapabilmeniz, ger\u00e7ek hata kayna\u011f\u0131na h\u0131zl\u0131ca ula\u015fabilmeniz ad\u0131na \u00f6nemlidir.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Gerekli \u00f6n haz\u0131rl\u0131\u011f\u0131m\u0131z\u0131 tamamlad\u0131ktan sonra art\u0131k hata ay\u0131klamaya ba\u015flayabiliriz. WinDBG&#8217;de i\u015flemin \u00e7al\u0131\u015fmas\u0131 hata ya da break point nedeniyle duraklat\u0131ld\u0131\u011f\u0131 herhangi bir zamanda i\u015flemin s\u00fcrd\u00fcrmek i\u00e7in (<em>Visual Studio&#8217;da ki F5<\/em>) <strong>g<\/strong> (<em>Go<\/em>) komutu kullan\u0131lmaktad\u0131r. Yine benzer \u015fekilde i\u015fleyi\u015fin sadece bir ad\u0131m ileri gitmesi i\u00e7in <strong>p<\/strong> komutu kullan\u0131labilir. Windows Debug API&#8217;sini ve debugger&#8217;lar\u0131n i\u015fleyi\u015f mant\u0131\u011f\u0131n\u0131 hat\u0131rlayacak olursan\u0131z, bir hata durumunda i\u015fleyi\u015f iki \u015fekilde devam edebilmekteydi; olu\u015fan hata debugger taraf\u0131ndan ele al\u0131nabilir ya da i\u015flem hi\u00e7 debugger yokmu\u015f gibi kald\u0131\u011f\u0131 yerden hata i\u015flemeye devam ederek i\u015flemin bu hatay\u0131 yakalamas\u0131 beklenebilirdi. Bu s\u00fcre\u00e7 benzer \u015fekilde WinDBG i\u00e7erisinde de y\u00f6netilebilmektedir. Hata durumu yaz\u0131l\u0131m geli\u015ftirici taraf\u0131ndan ele al\u0131nm\u0131\u015f ve uygulama hata olmam\u0131\u015f gibi kald\u0131\u011f\u0131 yerden devam etsin isteniyorsa <strong>gH<\/strong> (<em>Go exception handled<\/em>), hatan\u0131n i\u015flem taraf\u0131ndan y\u00f6netilmesi isteniyorsa da <strong>gN<\/strong> (<em>Go not handled<\/em>) komutlar\u0131 kullan\u0131labilir.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/DebuggeeRunning.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/DebuggeeRunning_thumb.png\" alt=\"Debuggee is running\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp; \u0130sterseniz hata durumunda olu\u015fan hata hakk\u0131nda bilgiye nas\u0131l ula\u015fabilece\u011fimizi g\u00f6rmek i\u00e7in uygulamam\u0131z\u0131 g komutu ile devam ettirelim. Bu noktada i\u015f par\u00e7ac\u0131\u011f\u0131 id&#8217;si alan\u0131nda &#8220;<strong>*BUSY*<\/strong>&#8220;, komut girdi alan\u0131nda ise &#8220;<strong>Debuggee is running&#8230;<\/strong>&#8221; yazacakt\u0131r. A\u00e7\u0131lan uygulamam\u0131zda herhangi bir veri giri\u015fi yapmadan kaydet butonuna basacak olursan\u0131z bir hata olu\u015facakt\u0131r.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/Exception.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/Exception_thumb.png\" alt=\"Hata olu\u015fmas\u0131 durumunda uygulama durdurularak komut i\u015fletilmesine olanak verilir\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Hata olu\u015fmas\u0131 durumunda, yukar\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcnde de g\u00f6r\u00fclece\u011fi \u00fczere, WinDBG i\u015flemin \u00e7al\u0131\u015fmas\u0131n\u0131 duraklatarak \u00fczerinden komut \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131na olanak sunmakta. Ekran g\u00f6r\u00fcnt\u00fcs\u00fcnde hata hakk\u0131nda bilgi veriliyor olmas\u0131na kar\u015f\u0131n, g\u00f6r\u00fclen &#8220;<em>CLR exception &#8211; code e0434352 (first chance)<\/em>&#8221; hata mesaj\u0131 maalesef ki bizim i\u00e7in hata hakk\u0131nda yeterli bir bilgi sunmamaktad\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Bu noktada, isterseniz hata al\u0131nd\u0131\u011f\u0131 s\u0131rada \u00e7al\u0131\u015fan managed i\u015f par\u00e7ac\u0131klar\u0131 hakk\u0131nda bilgi alal\u0131m. Bu ama\u00e7la, yaz\u0131m\u0131n ba\u015f\u0131nda belirtmi\u015f oldu\u011fum ~ komutunu \u00e7al\u0131\u015ft\u0131r\u0131lacak olursa, maalesef ki i\u015fimize yarayan detayl\u0131 bir bilgiye ula\u015famamaktay\u0131z. Bu komut yerine .net komut setiyle gelen <strong>!threads<\/strong> komutu kullan\u0131labilir;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/Threads.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/Threads_thumb.png\" alt=\"managed i\u015f par\u00e7ac\u0131klar\u0131n\u0131n listesi !Threads komutu ile g\u00f6r\u00fclebilir\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi bu komut bize daha tan\u0131d\u0131k ve detayl\u0131 bilgiler sunacakt\u0131r. ~ komutundan farkl\u0131 olarak burada sadece iki i\u015f par\u00e7ac\u0131\u011f\u0131 g\u00f6r\u00fclmekte, sebebi ise bu s\u0131rada \u00e7al\u0131\u015fan sadece iki managed&nbsp; i\u015f par\u00e7ac\u0131\u011f\u0131 bulunmas\u0131d\u0131r. \u0130ki i\u015f par\u00e7ac\u0131\u011f\u0131ndan 0 id&#8217;li olan STA (<em>Single Threaded Apartment<\/em>) i\u015f par\u00e7ac\u0131\u011f\u0131nda <em>System.FormatException<\/em> t\u00fcr\u00fcnden bir hata olu\u015fmu\u015f. Tan\u0131d\u0131k bir hata mesaj\u0131, de\u011fil mi!<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Bir sonraki ad\u0131mda hata mesaj\u0131 hakk\u0131nda daha detayl\u0131 bilgi alal\u0131m. Bunun i\u00e7in kullan\u0131labilecek ilk komut <strong>!printexception<\/strong> (ya da k\u0131saca <strong>!pe<\/strong>) komutudur;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/printException.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/printException_thumb.png\" alt=\"!printexception komutu ile hata bilgisine ula\u015f\u0131labilir\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Al\u0131nan hata konusunda bir yerlere varmaya ba\u015fl\u0131yoruz; string t\u00fcr\u00fcnden bir ifade say\u0131ya d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcrken hata olu\u015fmu\u015f. Hata, call stack&#8217;e bakt\u0131\u011f\u0131m\u0131zda, en son&nbsp; CRMUygulamasi assembly&#8217;si i\u00e7erisindeki Com.Enterprisecoding.HataAyiklama.CRMUygulamasi.AnaEkran s\u0131n\u0131f\u0131nda yer alan kaydet_Click fonksiyonumuz \u00e7al\u0131\u015ft\u0131r\u0131lm\u0131\u015f; fakat call stack i\u00e7erisinde managed ve unmanaged kodlar kar\u0131\u015f\u0131k \u015fekilde verilmi\u015f ve takip edilmesi zor olabiliyor.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; <strong>!clrstack<\/strong> komutu bu g\u00f6r\u00fcn\u00fcm\u00fc biraz daha <em>temiz<\/em> hale getirecek ve bize sadece managed kodlar hakk\u0131nda bilgi verecektir. !clrstack komutu ald\u0131\u011f\u0131 parametrelerle bize daha da detayl\u0131 bilgiler verebilmekte. \u00d6rne\u011fin; <strong>!clrstack -p<\/strong> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda call stack bilgisine ek olarak fonksiyonlar\u0131n hangi parametrelerle \u00e7a\u011fr\u0131ld\u0131\u011f\u0131 bilgisini de verecektir;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/clrstack-p.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/clrstack-p_thumb.png\" alt=\"!clrstack -p komutu yard\u0131m\u0131yla parametre bilgileri ile birlikte call stack g\u00f6r\u00fclebilir\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Bir ba\u015fka g\u00fczel \u00f6rnek ise; <strong>!clrstack \u2013l<\/strong> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda call stack bilgisine ek olarak fonksiyonlar\u0131n yerel de\u011fi\u015fkenlerinin bilgisini de verecektir;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/clrstack-l.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/clrstack-l_thumb.png\" alt=\"!clrstack -l komutu yard\u0131m\u0131yla yerel de\u011fi\u015fkenlerin bilgileri ile birlikte call stack g\u00f6r\u00fclebilir\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Son olarak; <strong>!clrstack -a<\/strong> komutu ise yukar\u0131daki iki parametreyi birle\u015ftirerek bize daha detayl\u0131 bilgi sunmaktad\u0131r;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/clrstack-a.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/clrstack-a_thumb.png\" alt=\"!clrstack -a komutu yard\u0131m\u0131yla hem parametre hem de yerel de\u011fi\u015fkenlerin bilgileri ile birlikte call stack g\u00f6r\u00fclebilir\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Yukar\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcne bakacak olursak hatan\u0131n kayna\u011f\u0131 daha da netle\u015fecektir. &#8220;<em>0024e978 6ff8d535 System.Convert.ToInt32(System.String)<\/em>&#8221; sat\u0131r\u0131n\u0131n hemen alt\u0131nda bu fonksiyonun value parametresi g\u00f6r\u00fclebilir. Girilen ifade tam say\u0131ya d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcrken al\u0131nan bu hata string ifadenin bo\u015f (<em>null<\/em>) olmas\u0131 kaynakl\u0131d\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp; Takip etti\u011fimiz yukar\u0131daki ad\u0131mlar sonras\u0131nda art\u0131k hatam\u0131z\u0131 tespit etmi\u015f durumday\u0131z; fakat fonksiyonumuzun i\u00e7erisini inceleyecek olursak bu durumun olu\u015fabilece\u011fi bir ka\u00e7 nokta bulunmakta. Peki hata tam olarak hangi sat\u0131rda?<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"21\" data-enlighter-title=\"\" data-enlighter-group=\"\">private void kaydet_Click(object sender, EventArgs e) {\n    Debug.WriteLine(\"M\u00fc\u015fteri kay\u0131t i\u015flemi ba\u015flat\u0131l\u0131yor\");\n    var musteriAd = ad.Text;\n    var musteriSoyad = soyad.Text;\n    var musteriYas = yas.Text;\n    var musteriTCKimlik = tckimlik.Text;\n\n    var musteri = new Musteri();\n    musteri.Ad = musteriAd;\n    musteri.Soyad = musteriSoyad;\n    musteri.Yas = Convert.ToInt32(musteriYas);\n    musteri.TCKimlik = Convert.ToInt32(musteriTCKimlik);\n\n    musteriKaydet(musteri);\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Hata sat\u0131r\u0131n\u0131n tespit edebilmek i\u00e7in yukar\u0131daki gibi sat\u0131r numaralar\u0131n\u0131n g\u00f6r\u00fclmedi\u011fi durumlarda <strong>.reload<\/strong> komutu kullan\u0131labilir. T\u00fcm mod\u00fcllerin sembol dosyalar\u0131n\u0131n yeniden y\u00fcklenmesi sa\u011flayan bu komut ard\u0131ndan art\u0131k sat\u0131r numaralar\u0131n\u0131 da g\u00f6rebiliyor olacaks\u0131n\u0131z. \u0130sterseniz <strong>.reload CRMUygulamasi.exe<\/strong> gibi bir kullan\u0131mla sadece CRMUygulamas\u0131&#8217;n\u0131n sembollerinin yeniden y\u00fcklenmesini de sa\u011flaman\u0131z m\u00fcmk\u00fcn.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/clrstack-a_satirNo.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/clrstack-a_satirNo_thumb.png\" alt=\".reload komutunun \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 sonras\u0131 kaynak dosya ve sat\u0131r numaras\u0131 bilgisi g\u00f6r\u00fclmekte\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Bu son ad\u0131m sonras\u0131nda, hatan\u0131n C:\\temp\\HataAyiklama\\CRMUygulamasi\\AnaEkran.cs dosyas\u0131 31. sat\u0131rda olu\u015ftu\u011funu ve bunun sebebinin de yas.Text i\u00e7erisinde bir de\u011fer olmamas\u0131 oldu\u011funu bulabilmi\u015f oluyoruz.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; A\u015fa\u011f\u0131da hata ay\u0131klama s\u0131ras\u0131nda kullanabilece\u011finiz bir ka\u00e7 faydal\u0131 komut bulabilirsiniz;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li> <strong>~*e[Komut]<\/strong> komutunu kullanarak istedi\u011finiz herhangi bir komutu t\u00fcm i\u015f par\u00e7ac\u0131klar\u0131nda \u00e7al\u0131\u015ft\u0131rman\u0131n m\u00fcmk\u00fcnd\u00fcr. \u00d6rne\u011fin; hatan\u0131n hangi i\u015f par\u00e7ac\u0131\u011f\u0131nda olu\u015ftu\u011funu bilmiyorsan\u0131z ya da bir de fazla i\u015f par\u00e7ac\u0131\u011f\u0131nda hata olu\u015ftu ise <strong>~*e!clrstack<\/strong> komutunu kullanarak t\u00fcm i\u015f par\u00e7ac\u0131klar\u0131nda call stack bilgisine ula\u015fman\u0131z m\u00fcmk\u00fcn. <\/li><li> Heap&#8217;te yer alan nesneleri ve bu nesnelerde ne kadar bulundu\u011funu listelemek i\u00e7in <strong>!dumpheap<\/strong> komutunu kullanabilirsiniz. \u00d6zellikle beklenenden fazla haf\u0131za kullan\u0131m\u0131na sahip uygulamalarda bu komutu kullanarak hangi nesnenin haf\u0131zan\u0131n \u015fi\u015fmesine neden oldu\u011fu bulunabilir. Bu komuta ge\u00e7ilecek type parametresi ile de gelen liste i\u00e7erisinde filtreleme yap\u0131lmas\u0131 m\u00fcmk\u00fcn. \u00d6rne\u011fin;&nbsp; <strong>!dumpheap -type Exception<\/strong> komutu bize heap&#8217;te yer alan nesneler aras\u0131ndan sadece ad\u0131nda Exception ge\u00e7enlerin listelenmesi sa\u011flanacakt\u0131r. <\/li><li><p style=\"text-align: justify;\">Arka arkaya \u00e7al\u0131\u015ft\u0131r\u0131lan komutlar sonras\u0131nda WinDBG penceresi uzay\u0131p giden bilgilerle dolacakt\u0131r. Bu gibi durumlarda, MS-DOS&#8217;takine benzer \u015fekilde <strong>.cls<\/strong> komutu yard\u0131m\u0131yla ekran\u0131 temizlemeniz m\u00fcmk\u00fcn.<\/p><\/li><li> E\u011fer bir haf\u0131za d\u00f6k\u00fcm\u00fc dosyas\u0131 ile i\u015flem yap\u0131yorsan\u0131z, <strong>.time<\/strong> komutu yard\u0131m\u0131yla d\u00f6k\u00fcm\u00fcn al\u0131nd\u0131\u011f\u0131 zaman, i\u015fletim sisteminin ne kadar zamand\u0131r a\u00e7\u0131k oldu\u011fu gibi bilgilere ula\u015fabilirsiniz. <\/li><li> Hata ay\u0131klama oturumu ba\u015flat\u0131lan bir uygulamay\u0131 takip etmekten \u00e7\u0131kmak i\u00e7in <strong>.detach<\/strong> komutu kullan\u0131labilir. Benzer \u015fekilde <strong>.restart<\/strong> komutu ile i\u015flem ba\u015ftan ba\u015flat\u0131labilir. <\/li><li> Stack&#8217;te yer alan t\u00fcm nesnelerin bilgisi <strong>!dso<\/strong> komutu ile al\u0131nabilir. <\/li><li> \u0130\u015f par\u00e7ac\u0131klar\u0131n\u0131n ne kadar i\u015flemci zaman\u0131 kulland\u0131\u011f\u0131 <strong>!runaway<\/strong> komutu ile \u00f6\u011frenilebilir. <\/li><\/ul>","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp;&nbsp; Hata ay\u0131klama makale serisi ile uygulamalar\u0131m\u0131z\u0131 geli\u015ftirirken alabilece\u011finiz \u00f6nlemlerden ba\u015flayarak, son kullan\u0131c\u0131da olu\u015fan hatalar\u0131n kayna\u011f\u0131n\u0131 bulabilme, .net framework 4.0 ile geli\u015ftirilen uygulaman\u0131za ait bir haf\u0131za d\u00f6k\u00fcm\u00fc \u00fczerinden hata ay\u0131klama i\u015flemi yapabilmeye kadar&nbsp; pek \u00e7ok konuya de\u011finmeye \u00e7al\u0131\u015ft\u0131m. Visual Studio ile bir haf\u0131za d\u00f6k\u00fcm (dump) dosyas\u0131 \u00fczerinden hata ay\u0131klama yapmay\u0131 anlat\u0131rken hat\u0131rlayacaks\u0131n\u0131z, \u00f6zellikle not d\u00fc\u015fm\u00fc\u015ft\u00fcm;&#8230;<\/p>\n<p><a class=\"read-more\" href=\"https:\/\/fatihboy.com\/en\/windbg-ile-hata-ayiklama\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":33704,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[28],"tags":[118,120],"class_list":["post-8780","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-turkce","tag-hata-ayiklama","tag-windbg"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>WinDBG ile Hata Ay\u0131klama - Fatih Boy<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihboy.com\/en\/windbg-ile-hata-ayiklama\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WinDBG ile Hata Ay\u0131klama - Fatih Boy\" \/>\n<meta property=\"og:description\" content=\"&nbsp;&nbsp;&nbsp; Hata ay\u0131klama makale serisi ile uygulamalar\u0131m\u0131z\u0131 geli\u015ftirirken alabilece\u011finiz \u00f6nlemlerden ba\u015flayarak, son kullan\u0131c\u0131da olu\u015fan hatalar\u0131n kayna\u011f\u0131n\u0131 bulabilme, .net framework 4.0 ile geli\u015ftirilen uygulaman\u0131za ait bir haf\u0131za d\u00f6k\u00fcm\u00fc \u00fczerinden hata ay\u0131klama i\u015flemi yapabilmeye kadar&nbsp; pek \u00e7ok konuya de\u011finmeye \u00e7al\u0131\u015ft\u0131m. Visual Studio ile bir haf\u0131za d\u00f6k\u00fcm (dump) dosyas\u0131 \u00fczerinden hata ay\u0131klama yapmay\u0131 anlat\u0131rken hat\u0131rlayacaks\u0131n\u0131z, \u00f6zellikle not d\u00fc\u015fm\u00fc\u015ft\u00fcm;...Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihboy.com\/en\/windbg-ile-hata-ayiklama\/\" \/>\n<meta property=\"og:site_name\" content=\"Fatih Boy\" \/>\n<meta property=\"article:published_time\" content=\"2011-02-09T19:30:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-21T11:47:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/debug.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"1186\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Fatih Boy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Boy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/\"},\"author\":{\"name\":\"Fatih Boy\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"headline\":\"WinDBG ile Hata Ay\u0131klama\",\"datePublished\":\"2011-02-09T19:30:00+00:00\",\"dateModified\":\"2021-06-21T11:47:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/\"},\"wordCount\":2750,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/debug.jpg\",\"keywords\":[\"Hata Ayiklama\",\"WinDBG\"],\"articleSection\":[\"T\u00fcrk\u00e7e\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/\",\"url\":\"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/\",\"name\":\"WinDBG ile Hata Ay\u0131klama - Fatih Boy\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/debug.jpg\",\"datePublished\":\"2011-02-09T19:30:00+00:00\",\"dateModified\":\"2021-06-21T11:47:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/#primaryimage\",\"url\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/debug.jpg\",\"contentUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/debug.jpg\",\"width\":1800,\"height\":1186},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fatihboy.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WinDBG ile Hata Ay\u0131klama\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihboy.com\/#website\",\"url\":\"https:\/\/fatihboy.com\/\",\"name\":\"Fatih Boy\",\"description\":\"Ki\u015fisel Web Sitesi\",\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihboy.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\",\"name\":\"Fatih Boy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"caption\":\"Fatih Boy\"},\"logo\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/fatihboy.com\"],\"url\":\"https:\/\/fatihboy.com\/en\/author\/fatih\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"WinDBG ile Hata Ay\u0131klama - Fatih Boy","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihboy.com\/en\/windbg-ile-hata-ayiklama\/","og_locale":"en_US","og_type":"article","og_title":"WinDBG ile Hata Ay\u0131klama - Fatih Boy","og_description":"&nbsp;&nbsp;&nbsp; Hata ay\u0131klama makale serisi ile uygulamalar\u0131m\u0131z\u0131 geli\u015ftirirken alabilece\u011finiz \u00f6nlemlerden ba\u015flayarak, son kullan\u0131c\u0131da olu\u015fan hatalar\u0131n kayna\u011f\u0131n\u0131 bulabilme, .net framework 4.0 ile geli\u015ftirilen uygulaman\u0131za ait bir haf\u0131za d\u00f6k\u00fcm\u00fc \u00fczerinden hata ay\u0131klama i\u015flemi yapabilmeye kadar&nbsp; pek \u00e7ok konuya de\u011finmeye \u00e7al\u0131\u015ft\u0131m. Visual Studio ile bir haf\u0131za d\u00f6k\u00fcm (dump) dosyas\u0131 \u00fczerinden hata ay\u0131klama yapmay\u0131 anlat\u0131rken hat\u0131rlayacaks\u0131n\u0131z, \u00f6zellikle not d\u00fc\u015fm\u00fc\u015ft\u00fcm;...Read More","og_url":"https:\/\/fatihboy.com\/en\/windbg-ile-hata-ayiklama\/","og_site_name":"Fatih Boy","article_published_time":"2011-02-09T19:30:00+00:00","article_modified_time":"2021-06-21T11:47:27+00:00","og_image":[{"width":1800,"height":1186,"url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/debug.jpg","type":"image\/jpeg"}],"author":"Fatih Boy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatih Boy","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/#article","isPartOf":{"@id":"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/"},"author":{"name":"Fatih Boy","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"headline":"WinDBG ile Hata Ay\u0131klama","datePublished":"2011-02-09T19:30:00+00:00","dateModified":"2021-06-21T11:47:27+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/"},"wordCount":2750,"commentCount":3,"publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"image":{"@id":"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/debug.jpg","keywords":["Hata Ayiklama","WinDBG"],"articleSection":["T\u00fcrk\u00e7e"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/","url":"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/","name":"WinDBG ile Hata Ay\u0131klama - Fatih Boy","isPartOf":{"@id":"https:\/\/fatihboy.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/#primaryimage"},"image":{"@id":"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/debug.jpg","datePublished":"2011-02-09T19:30:00+00:00","dateModified":"2021-06-21T11:47:27+00:00","breadcrumb":{"@id":"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/#primaryimage","url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/debug.jpg","contentUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/02\/debug.jpg","width":1800,"height":1186},{"@type":"BreadcrumbList","@id":"https:\/\/fatihboy.com\/windbg-ile-hata-ayiklama\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fatihboy.com\/"},{"@type":"ListItem","position":2,"name":"WinDBG ile Hata Ay\u0131klama"}]},{"@type":"WebSite","@id":"https:\/\/fatihboy.com\/#website","url":"https:\/\/fatihboy.com\/","name":"Fatih Boy","description":"Ki\u015fisel Web Sitesi","publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihboy.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158","name":"Fatih Boy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","caption":"Fatih Boy"},"logo":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/fatihboy.com"],"url":"https:\/\/fatihboy.com\/en\/author\/fatih\/"}]}},"brizy_media":[],"_links":{"self":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/8780","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/comments?post=8780"}],"version-history":[{"count":1,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/8780\/revisions"}],"predecessor-version":[{"id":33705,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/8780\/revisions\/33705"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media\/33704"}],"wp:attachment":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media?parent=8780"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/categories?post=8780"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/tags?post=8780"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}