{"id":580,"date":"2016-05-08T18:57:22","date_gmt":"2016-05-08T15:57:22","guid":{"rendered":"https:\/\/gokhan-gokalp.com\/?p=580"},"modified":"2016-05-08T18:57:22","modified_gmt":"2016-05-08T15:57:22","slug":"windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme","status":"publish","type":"post","link":"https:\/\/gokhan-gokalp.com\/tr\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\/","title":{"rendered":"WinDBG ile Dump Analizi Yaparak Performans Sorunlar\u0131n\u0131 \u00c7\u00f6z\u00fcmleme"},"content":{"rendered":"<p>Uzun bir aradan sonra tekrardan merhaba arkada\u015flar. Bir s\u00fcredir \u015firkette yo\u011fun ge\u00e7irdi\u011fim bir \u00e7al\u0131\u015fma temposundan sonra, bir makale daha yazabilmeye f\u0131rsat bulabildim. :)<\/p>\n<p>Bu makaleyi yazma ihtiyac\u0131m ise, bir ka\u00e7 haftadan bu yana mevcut bir sistemin \u00fczerine yerle\u015ftirmi\u015f oldu\u011fum Asp.NET Web API&#8217;da, anlams\u0131z bir \u015fekilde <strong>Load Test<\/strong>&#8216;ler sonucunda yeterli response time\u00a0performans\u0131n\u0131 alam\u0131yor olmam yat\u0131yor asl\u0131nda. T\u00fcm request&#8217;ler garip bir \u015fekilde IIS \u00fczerindeki Worker Process Queue&#8217;sunda garip bir \u015fekilde y\u0131\u011f\u0131lmaktayd\u0131. Bu s\u00fcre\u00e7 boyunca\u00a0her t\u00fcrl\u00fc Performance Profiling Tool&#8217;lar\u0131 ile API&#8217;\u0131 profile ettim, SQL\u00a0taraf\u0131ndaki profiling i\u015flemlerini ger\u00e7ekle\u015ftirdim ve dahas\u0131&#8230;<\/p>\n<p>G\u00fcnler ge\u00e7iyor ve herhangi elle tutulur bir sonu\u00e7 hala alam\u0131yordum ve art\u0131k i\u015fin boyutu memory&#8217;den bir dump al\u0131p, bunu <strong>WinDBG<\/strong> arac\u0131l\u0131\u011f\u0131 ile analiz etmeye kalm\u0131\u015ft\u0131. Nerede ne ka\u00e7\u0131r\u0131yor olabilirdim acaba?<\/p>\n<p>Evet i\u015fin hikaye boyutunu ge\u00e7ti\u011fimizde ise nedir bu\u00a0<strong>WinDBG<\/strong>\u00a0olay\u0131 bir bakmaya ba\u015flayarak sizlere deneyimlerimi aktarmaya \u00e7al\u0131\u015faca\u011f\u0131m. :)<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/05\/debugging-windbg.gif\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-581 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/05\/debugging-windbg.gif\" alt=\"debugging-windbg\" width=\"338\" height=\"350\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 338px; --smush-placeholder-aspect-ratio: 338\/350;\" \/><\/a><\/p>\n<h4>Nedir Bu Memory Dump?<\/h4>\n<blockquote><p>Belle\u011fi (memory) t\u00fcketen uygulamalar\u0131n, herhangi bir &#8220;t&#8221;\u00a0an\u0131nda\u00a0al\u0131nan &#8220;g\u00f6r\u00fcnt\u00fcs\u00fcd\u00fcr&#8221; asl\u0131nda.<\/p><\/blockquote>\n<p>Yukar\u0131daki tan\u0131mlamadan\u00a0yola \u00e7\u0131karsak, biz bu g\u00f6r\u00fcnt\u00fcye bakarak ortamda neler var?, neler \u00f6n plana \u00e7\u0131k\u0131yor?, neler arka planda kal\u0131yor?, neler daha \u00e7ok yer kaplarken, neler daha az yer kapl\u0131yor gibi resmin b\u00fct\u00fcn\u00fcn\u00fc g\u00f6rebilme \u015fans\u0131na sahip oluyoruz asl\u0131nda.<\/p>\n<p>\u015eimdi makaleye ilk giri\u015fimdeki hikayeme tekrar bakt\u0131\u011f\u0131m\u0131zda ise; memory&#8217;de &#8220;t&#8221; an\u0131nda neler olup olmad\u0131\u011f\u0131n\u0131 anlayabilmem, yani resmin t\u00fcm\u00fcne bakabilmem i\u00e7in neden <strong>memory dump<\/strong> almaya ihtiya\u00e7 duydu\u011fumu\u00a0anlatabilmi\u015fimdir umar\u0131m.<\/p>\n<h4>WinDBG&#8217;a Ba\u015flang\u0131\u00e7 ve Kurulum<\/h4>\n<p>\u00d6ncelikle <a href=\"https:\/\/msdn.microsoft.com\/en-us\/windows\/hardware\/hh852365\">buraya<\/a>\u00a0girerek &#8220;Get debugging tools&#8221; sekmesinde\u00a0bulunan <strong>Get Debugging Tools for Windows (WinDbg) (from the SDK)<\/strong>\u00a0ba\u011flant\u0131s\u0131na t\u0131klayarak, indirelim ve kurulumunu istedi\u011fimiz bir path&#8217;e (en az\u0131ndan 3-5 gb yer olan) ger\u00e7ekle\u015ftirelim.<\/p>\n<blockquote><p>Not: \u0130ndirme i\u015flemi biraz uzun s\u00fcrebilir. Bu ad\u0131mda otomatik olarak Windows Software Development Kit par\u00e7alar\u0131 indirilecektir.<\/p><\/blockquote>\n<p><a href=\"\/wp-content\/uploads\/2016\/05\/windbg-screen2.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-586 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/05\/windbg-screen2.jpg\" alt=\"windbg-screen\" width=\"1008\" height=\"614\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/windbg-screen2.jpg 1008w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/windbg-screen2-300x183.jpg 300w\" data-sizes=\"(max-width: 1008px) 100vw, 1008px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1008px; --smush-placeholder-aspect-ratio: 1008\/614;\" \/><\/a><\/p>\n<p>Kurulumu ger\u00e7ekle\u015ftirdikten sonra\u00a0WinDBG tool&#8217;u a\u00e7t\u0131\u011f\u0131n\u0131zda, yukar\u0131daki ekran ile kar\u015f\u0131la\u015facaks\u0131n\u0131z.<\/p>\n<h4>PssCor2 Nedir? ve Kurulumu<\/h4>\n<p>Bu eklenti bize, <strong>managed <\/strong>kod&#8217;lar\u0131 debug edebilme yetisini kazand\u0131racakt\u0131r. \u00c7\u00fcnk\u00fc default olarak WinDBG <strong>unmanaged<\/strong> kod&#8217;lar\u0131 debug etmek i\u00e7in tasarlanm\u0131\u015ft\u0131r ve win32 uygulamalar\u0131n\u0131n debugging&#8217;i i\u00e7in \u00e7ok kullan\u0131\u015fl\u0131d\u0131r bu komutlar. Default olarak gelen bu komutlar\u0131 .Net Framework ile geli\u015ftirilmi\u015f uygulamalar\u0131n debugging&#8217;i i\u00e7inde kullan\u0131labilir fakat olduk\u00e7a zor ve zahmetli bir i\u015ftir. \u0130\u015fte tam bu noktada biz developer&#8217;lar\u0131 d\u00fc\u015f\u00fcnerek, bu i\u015fi kolayla\u015ft\u0131racak extension&#8217;lar \u00e7\u0131kart\u0131lm\u0131\u015ft\u0131r. :)<\/p>\n<p>Bu extension&#8217;lardan bir tanesi .Net Framework ile birlikte gelen <strong>SOS.dll<\/strong>&#8216;dir ve\u00a0bize <strong>managed<\/strong> kodlar\u0131 ekstra komutlar ile nispeten daha kolay debug edebilmemizi sa\u011flamaktad\u0131r. Her g\u00fczel \u015feyin bir eksi\u011fi oldu\u011fu gibi SOS.dll&#8217;de debugging i\u015flemlerinde baz\u0131 noktalarda eksik kalmaktad\u0131r. \u0130\u015fte bu noktada <strong>PssCor2<\/strong> extension&#8217;u kullan\u0131larak, <strong>.Net<\/strong> uygulamalar\u0131n\u0131n debugging i\u015flemleri ekstra fonksiyonaliteler ile dahada kolayla\u015ft\u0131r\u0131lm\u0131\u015f ve SOS.dll&#8217;e g\u00f6re olan <strong>gap<\/strong>&#8216;leri\u00a0giderilmi\u015ftir.<\/p>\n<p>PssCor2 ayn\u0131 zamanda beraberinde\u00a0<strong>managed thread<\/strong>&#8216;leri ve\u00a0<strong>managed object heap<\/strong>&#8216;i izleme,\u00a0<strong>CLR stack<\/strong>&#8216;i g\u00f6rebilme gibi ekstra \u00f6zelliklerini de\u00a0getirmektedir.<\/p>\n<p>Ne i\u00e7in kullanmam\u0131z gerekti\u011fini anlad\u0131\u011f\u0131m\u0131za g\u00f6re \u015fimdi kurulum i\u015flemine ge\u00e7ebiliriz. \u00d6ncelikle <a href=\"https:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=1073\">buraya <\/a>t\u0131klayarak\u00a0<strong>Psscor2 Managed-Code Debugging Extension for WinDbg<\/strong>&#8216;\u0131 indirelim. \u0130ndirme i\u015flemi bittikten sonra dosyay\u0131 unzip edelim. Unzip i\u015flemini tamamlad\u0131ktan\u00a0sonra &#8220;psscor2&#8221; klas\u00f6r\u00fcn\u00fc, daha \u00f6nceden kurulumunu yapm\u0131\u015f oldu\u011fumuz\u00a0WinDBG&#8217;\u0131n, ilgili kurulum dosyas\u0131n\u0131n i\u00e7erisinde\u00a0bulunan\u00a0&#8220;Debug&#8221; dosyas\u0131n\u0131n\u00a0i\u00e7erisine kopyalayal\u0131m.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/05\/psscor2.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-588 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/05\/psscor2.jpg\" alt=\"psscor2\" width=\"638\" height=\"339\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/psscor2.jpg 638w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/psscor2-300x159.jpg 300w\" data-sizes=\"(max-width: 638px) 100vw, 638px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 638px; --smush-placeholder-aspect-ratio: 638\/339;\" \/><\/a><\/p>\n<h4>Symbol Path&#8217;in Ayarlanmas\u0131<\/h4>\n<p>\u00d6ncelikle neden Symbol dosyalar\u0131na ihtiya\u00e7 duyaca\u011f\u0131m\u0131za ge\u00e7meden\u00a0<a href=\"https:\/\/msdn.microsoft.com\/tr-tr\/windows\/hardware\/gg463028.aspx\">buraya <\/a>t\u0131klayarak, ilgili i\u015fletim sisteminize ve x86, x64 bit se\u00e7eneklerine dikkat ederek ilgili Symbol dosyalar\u0131n\u0131 indirmeye ba\u015flayal\u0131m.<\/p>\n<blockquote><p>Not: Symbol dosyalar\u0131n\u0131 indirme i\u015flemi zorunlu olmamakla beraber daha h\u0131zl\u0131 i\u015flem yapabilmeniz ad\u0131na indirmenizi tavsiye edip, makalenin ilerleyen b\u00f6l\u00fcmlerinde WinDBG i\u00e7erisinde nas\u0131l tan\u0131mlayabilece\u011fimizi\u00a0g\u00f6rece\u011fiz.<\/p><\/blockquote>\n<p>Symbol dosyalar\u0131n\u0131 kabaca anlatmak gerekirse: Bu dosyalar uygulaman\u0131n compile s\u0131ras\u0131nda \u00fcretilirler. Bildi\u011fimiz gibi compile i\u015flemi s\u0131ras\u0131nda ise kodlar, IL(Intermediate Language) taraf\u0131ndan makine diline\u00a0\u00e7evrilir. Visual Studio ile derledi\u011fimizde de farkederseniz &#8220;bin\/debug&#8221; dosyas\u0131 alt\u0131nda &#8220;.PDB&#8221; uzant\u0131l\u0131 dosyalar olu\u015fmaktad\u0131r. \u0130\u015fte bu dosya assembly i\u00e7in debugging symbol&#8217;lerini i\u00e7ermektedir. \u0130\u00e7erisinde ise\u00a0<strong>identifier<\/strong>&#8216;lar ve bu identifier&#8217;lar\u0131n assembly i\u00e7erisinde bulundu\u011fu yerler ve ayn\u0131 zamanda\u00a0<strong>attribute<\/strong>&#8216;ler yer almaktad\u0131r.<\/p>\n<p>Dump\u00a0i\u00e7erisinde\u00a0ise\u00a0sorununu ara\u015ft\u0131rd\u0131\u011f\u0131m\u0131z uygulaman\u0131n stack&#8217;i, hangi bellek adresinde bulundu\u011fu hexadecimal olarak tutulmaktad\u0131r ve o s\u0131rada ne yapmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131\u00a0anlayabilmemiz i\u00e7in gerekli bu t\u00fcm bilgiler \u00a0symbol dosyalar\u0131yla\u00a0\u015fekillenmektedir.<\/p>\n<p>Symbol dosyalar\u0131n\u0131n indirme i\u015flemi tamamland\u0131ktan sonra, PssCor2 kurulumunda da yapt\u0131\u011f\u0131m\u0131z gibi WinDBG&#8217;\u0131 kurmu\u015f oldu\u011fumuz dosyan\u0131n i\u00e7erisindeki &#8220;Debug&#8221; dosyas\u0131n\u0131n i\u00e7erisine kurulumunu ger\u00e7ekle\u015ftirelim.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/05\/symbols-path.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-592 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/05\/symbols-path.jpg\" alt=\"symbols-path\" width=\"560\" height=\"285\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/symbols-path.jpg 560w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/symbols-path-300x153.jpg 300w\" data-sizes=\"(max-width: 560px) 100vw, 560px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 560px; --smush-placeholder-aspect-ratio: 560\/285;\" \/><\/a><\/p>\n<p>Sonunda as\u0131l k\u0131sm\u0131m\u0131za\u00a0ge\u00e7ebiliriz. Debugging i\u015flemlerini yapabilmemiz i\u00e7in gerekli olan her \u015fey haz\u0131r durumda. \u015eimdi bize problem yaratacak k\u00fc\u00e7\u00fck bir uygulama yazal\u0131m. :)<\/p>\n<pre class=\"lang:c# decode:true \">using System;\r\n\r\nnamespace WinDbgTestApplication\r\n{\r\n    class Program\r\n    {\r\n        static void Main(string[] args)\r\n        {\r\n            while (true)\r\n            {\r\n                Console.WriteLine(\"Do\u011fum y\u0131l\u0131n\u0131z\u0131 giriniz:\");\r\n\r\n                int birthYear = Convert.ToInt32(Console.ReadLine());\r\n                int currentYear = DateTime.Today.Year;\r\n                int result = currentYear - birthYear;\r\n\r\n                Console.WriteLine(\"{0} ya\u015f\u0131ndas\u0131n\u0131z.\", result);\r\n            }\r\n        }\r\n    }\r\n}<\/pre>\n<p>Ben basit bir Console uygulamas\u0131 tercih ettim. Bu kodda olas\u0131 hataya a\u00e7\u0131k olan k\u0131s\u0131mlar convert i\u015flemleri s\u0131ras\u0131nda herhangi bir kontrol\u00fcn yap\u0131lmamas\u0131ndan kaynaklanarak, runtime s\u0131ras\u0131nda kullan\u0131c\u0131 bazl\u0131 olu\u015fabilecek olan hatalard\u0131r. Zaten en \u00e7ok bu tarz hatalardan dolay\u0131 production ortamlar\u0131nda gol yemiyor muyuz?<\/p>\n<p>Neyse konumuza geri d\u00f6nelim :) \u015eimdi haz\u0131rlam\u0131\u015f oldu\u011fumuz bu Console uygulamas\u0131n\u0131 bir iyi kullan\u0131c\u0131 g\u00f6z\u00fcnden kullanal\u0131m, birde k\u00f6t\u00fc kullan\u0131c\u0131 rol\u00fcnde kullan\u0131p do\u011fum tarihimizi yaz\u0131 ile yazal\u0131m. :)<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/05\/windbg-\u00f6rnek-11.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-595 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/05\/windbg-\u00f6rnek-11.jpg\" alt=\"windbg-\u00f6rnek-1\" width=\"499\" height=\"334\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/windbg-\u00f6rnek-11.jpg 499w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/windbg-\u00f6rnek-11-300x201.jpg 300w\" data-sizes=\"(max-width: 499px) 100vw, 499px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 499px; --smush-placeholder-aspect-ratio: 499\/334;\" \/><\/a><\/p>\n<p>ve tada&#8230; uygulamam\u0131z \u00e7\u00f6ker.<\/p>\n<p>Buradaki hatay\u0131 herhangi bir try-catch blo\u011fu ile\u00a0kaybedede bilirdik ve i\u015fte ozaman bizim i\u00e7in\u00a0s\u0131k\u0131nt\u0131l\u0131 g\u00fcnler ba\u015flard\u0131. Hangi durumlar\u00a0kar\u015f\u0131s\u0131nda ne gibi\u00a0hatalar olu\u015fuyor? Ben bu problemi\u00a0nas\u0131l yakalayaca\u011f\u0131m? Her yere loglama koyma \u00e7abalar\u0131 ve dahas\u0131. Kullan\u0131c\u0131 kaynakl\u0131 olmayan bir hata da olabilirdi. Developer kaynakl\u0131 bir hataya ne derdiniz? A\u00e7\u0131k unutulmu\u015f ve dispose edilmemi\u015f bir obje? Belli bir y\u00fck alt\u0131nda <strong>memory leak<\/strong>&#8216;lere sebep olabilir ve anlams\u0131z bir \u015fekilde uygulaman\u0131z\u0131n crash olmas\u0131na kadar sebep\u00a0verebilirdi\u00a0ve dahas\u0131 ve dahas\u0131. \u0130\u015fte bu gibi durumlar kar\u015f\u0131s\u0131nda\u00a0her ne kadar debugging i\u015flemi zor olsa da imdad\u0131m\u0131za WinDBG yeti\u015fiyor.<\/p>\n<h4>Dump Alma<\/h4>\n<p>Uygulamam\u0131z \u00e7al\u0131\u015f\u0131r durumda iken dump nas\u0131l alabiliriz bir bakal\u0131m. &#8220;Ctrl+Alt+Delete&#8221; tu\u015f kombinasyonu ile &#8220;G\u00f6rev Y\u00f6neticisini&#8221; a\u00e7arak arka planda \u00e7al\u0131\u015fan process&#8217;lere bir bakal\u0131m. A\u00e7\u0131lan process listesinde uygulamam\u0131z\u0131n ad\u0131n\u0131 g\u00f6rmekteyiz &#8220;WinDbgTestApplication&#8221; olarak.<\/p>\n<blockquote><p>Not: Dump alaca\u011f\u0131n\u0131z uygulama bir windows form veya console uygulamas\u0131 olmayabilir. Bir web uygulamas\u0131 ise yine process&#8217;ler \u00fczerinden \u00f6rne\u011fin ilgili &#8220;w3wp.exe&#8221; veya localhost \u00fczerinde ise &#8220;iisexpress&#8221; in dump&#8217;lar\u0131n\u0131 da alabilmek m\u00fcmk\u00fcnd\u00fcr. (Ayn\u0131 zamanda \u00e7al\u0131\u015fan bir process&#8217;i attach edebilmekte m\u00fcmk\u00fcnd\u00fcr.)\u00a0Fakat bu \u015fekilde al\u0131nan\u00a0dump&#8217;lar\u0131 okumakta bi hayli zorlanabiliriz. Bunun yerine\u00a0IIS \u00fczerinden ilgili Application Pool&#8217;unu se\u00e7erek, &#8220;<strong>Debug Diagnostic Tool<\/strong>&#8221; gibi ara\u00e7lar ile daha kolay full memory dump&#8217;lar\u0131 alabilmek m\u00fcmk\u00fcnd\u00fcr.\u00a0Bu konuyu farkl\u0131 bir makalemde detayl\u0131 olarak aktaraca\u011f\u0131m. Bu makale kapsam\u0131nda herhangi bir dump nas\u0131l yorumlanabilir&#8217;i g\u00f6rece\u011fiz.<\/p><\/blockquote>\n<p>G\u00f6rev Y\u00f6neticisi \u00fczerindeki process listesinde g\u00f6rm\u00fc\u015f oldu\u011fumuz uygulamam\u0131z\u0131n ad\u0131na sa\u011f t\u0131klayarak, ben windows 10 kulland\u0131\u011f\u0131m i\u00e7in &#8220;D\u00f6k\u00fcm dosyas\u0131 olu\u015ftur&#8221; se\u00e7ene\u011fine bas\u0131yorum.\u00a0E\u011fer farkl\u0131 bir windows versiyonu kullan\u0131yor iseniz, &#8220;Dump dosyas\u0131 olu\u015ftur&#8221; se\u00e7ene\u011fine basabilirsiniz.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/05\/dump-alma.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-596 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/05\/dump-alma.jpg\" alt=\"dump alma\" width=\"664\" height=\"541\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/dump-alma.jpg 664w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/dump-alma-300x244.jpg 300w\" data-sizes=\"(max-width: 664px) 100vw, 664px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 664px; --smush-placeholder-aspect-ratio: 664\/541;\" \/><\/a><\/p>\n<p>Yukar\u0131daki resimde g\u00f6rebildi\u011fimiz gibi dump dosyam\u0131z\u0131, &#8220;AppData\/Local\/Temp&#8221; klas\u00f6r\u00fc alt\u0131nda &#8220;WinDbgTestApplication.DMP&#8221; olarak olu\u015fturmu\u015f durumdad\u0131r. Fakat bu \u015fekilde olu\u015fan dump&#8217;lar default olarak <strong>minidump<\/strong>&#8216;d\u0131r. Bizim ise daha detayl\u0131 olarak <strong>full memory dumplar\u0131na<\/strong> ihtiyac\u0131m\u0131z vard\u0131r.<\/p>\n<h4>Process Explorer<\/h4>\n<p>Full memory dumplar\u0131 alabilmek i\u00e7in \u00f6ncelikle <a href=\"https:\/\/technet.microsoft.com\/en-us\/sysinternals\/bb896653.aspx\">buraya<\/a> t\u0131klayarak, &#8220;Process Explorer&#8221; \u0131 indirelim. \u0130ndirme i\u015flemini tamamlad\u0131ktan sonra unzip ederek i\u00e7erisinde bulunan uygulamay\u0131 \u00e7al\u0131\u015ft\u0131ral\u0131m. Bu i\u015flem sonunda t\u00fcm process&#8217;lerin daha detayl\u0131 bir \u015fekilde g\u00f6r\u00fcn\u00fcm\u00fcn\u00fcn\u00a0ekrana geldi\u011fini\u00a0g\u00f6rebiliriz. \u015eimdi listeden &#8220;WinDbgTestApplication&#8221; uygulamas\u0131n\u0131 bulal\u0131m ve ve sa\u011f t\u0131klayarak &#8220;Create Dump&#8221; men\u00fcs\u00fcnden &#8220;Create Full Dump&#8221; \u0131 se\u00e7elim.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/05\/process-exp.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-602 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/05\/process-exp.jpg\" alt=\"process-exp\" width=\"747\" height=\"747\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/process-exp.jpg 747w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/process-exp-150x150.jpg 150w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/process-exp-300x300.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/process-exp-100x100.jpg 100w\" data-sizes=\"(max-width: 747px) 100vw, 747px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 747px; --smush-placeholder-aspect-ratio: 747\/747;\" \/><\/a><\/p>\n<p>Create Full Dump ad\u0131m\u0131ndan sonra istedi\u011fimiz bir path&#8217;e dump dosyam\u0131z\u0131 kaydedelim. Art\u0131k elimizde WinDbgTestApplication uygulamas\u0131na dair full memory dump&#8217;\u0131 bulunmaktad\u0131r.<\/p>\n<h4>WinDBG&#8217;\u0131 Ke\u015ffetmeye Ba\u015flayal\u0131m<\/h4>\n<p>Uygulamalar\u0131m\u0131z k\u0131sm\u0131ndan WinDbg (x86)&#8217;y\u0131 se\u00e7elim ve \u00e7al\u0131\u015ft\u0131ral\u0131m. Uygulamam\u0131z \u00e7al\u0131\u015ft\u0131ktan sonra ilk \u00f6nce indirmi\u015f oldu\u011fumuz Symbol dosyas\u0131n\u0131 tan\u0131mlayal\u0131m. Bunu ger\u00e7ekle\u015ftirebilmek i\u00e7in sol \u00fcstte bulunan &#8220;File&#8221; sekmesine t\u0131klayarak ard\u0131ndan &#8220;Symbol File Path&#8221; se\u00e7ene\u011fine t\u0131klayal\u0131m.<\/p>\n<p>A\u00e7\u0131lan pencerede &#8220;Symbol path&#8221; k\u0131sm\u0131na symbol yolunu belirtme syntax&#8217;\u0131 \u015fu \u015fekildedir:<\/p>\n<pre class=\"lang:c# decode:true\">srv*[kurulum yap\u0131lan local symbol path'i]*http:\/\/msdl.microsoft.com\/download\/symbols<\/pre>\n<p>Ben kurulumumu WinDBG i\u00e7erisinde bulunan &#8220;Debug&#8221; klas\u00f6r\u00fc alt\u0131nda yapt\u0131\u011f\u0131m i\u00e7in \u015fu \u015fekilde path bilgisini giriyorum.<\/p>\n<pre class=\"lang:c# decode:true \">srv*f:\\wdk\\debug\\symbols*http:\/\/msdl.microsoft.com\/download\/symbols<\/pre>\n<p><a href=\"\/wp-content\/uploads\/2016\/05\/symbol-path-2.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-597 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/05\/symbol-path-2.jpg\" alt=\"symbol-path-2\" width=\"557\" height=\"203\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/symbol-path-2.jpg 557w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/symbol-path-2-300x109.jpg 300w\" data-sizes=\"(max-width: 557px) 100vw, 557px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 557px; --smush-placeholder-aspect-ratio: 557\/203;\" \/><\/a><\/p>\n<p>\u015eimdi s\u0131ra alm\u0131\u015f oldu\u011fumuz dump&#8217;\u0131n import i\u015fleminde. Bunun i\u00e7inde yine WinDBG uygulamas\u0131n\u0131n sol \u00fcst\u00fcnde bulunan &#8220;File&#8221; men\u00fcs\u00fcne t\u0131klayarak ard\u0131ndan &#8220;Open Crash Dump&#8221; se\u00e7ene\u011fine t\u0131kl\u0131yoruz. Ard\u0131ndan\u00a0olu\u015fturmu\u015f oldu\u011fumuz\u00a0dump dosyam\u0131z\u0131 burada import ediyoruz. (Ben dosyaya daha kolay eri\u015febilmek ad\u0131na masa\u00fcst\u00fcme ta\u015f\u0131d\u0131m.)<\/p>\n<p>Dump dosyas\u0131n\u0131n import i\u015flemi sonras\u0131nda ekranda kar\u015f\u0131m\u0131za \u015fu komut sat\u0131rlar\u0131 gelecektir:<\/p>\n<pre class=\"lang:default decode:true\">Microsoft (R) Windows Debugger Version 10.0.10586.567 X86\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\n\r\n\r\nLoading Dump File [C:\\Users\\G\u00d6KALP\\Desktop\\WinDbgTestApplication-Full.dmp]\r\nUser Mini Dump File with Full Memory: Only application data is available\r\n\r\n\r\n************* Symbol Path validation summary **************\r\nResponse                         Time (ms)     Location\r\nDeferred                                       srv*f:\\wdk\\debug\\symbols*http:\/\/msdl.microsoft.com\/download\/symbols\r\nSymbol search path is: srv*f:\\wdk\\debug\\symbols*http:\/\/msdl.microsoft.com\/download\/symbols\r\nExecutable search path is: \r\nWindows 10 Version 10586 MP (4 procs) Free x86 compatible\r\nProduct: WinNt, suite: SingleUserTS Personal\r\nBuilt by: 10.0.10586.0 (th2_release.151029-1700)\r\nMachine Name:\r\nDebug session time: Sun May  8 16:35:28.000 2016 (UTC + 3:00)\r\nSystem Uptime: 3 days 16:21:05.267\r\nProcess Uptime: 0 days 0:01:01.000\r\n..................................\r\neax=00000000 ebx=00000000 ecx=00000005 edx=00000000 esi=00000003 edi=00000003\r\neip=7773718c esp=0018e3e8 ebp=0018e578 iopl=0         nv up ei pl nz na pe nc\r\ncs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000206\r\nntdll!NtWaitForMultipleObjects+0xc:\r\n7773718c c21400          ret     14h<\/pre>\n<p>\u015eimdi WinDBG arac\u0131m\u0131z i\u00e7in indirmi\u015f oldu\u011fumuz PssCor2 extension&#8217;\u0131n\u0131\u00a0dahil edelim. PssCor2 indirme k\u0131sm\u0131nda da\u00a0bahsetti\u011fimiz gibi\u00a0bu extension sayesinde .Net ile\u00a0geli\u015ftirmi\u015f oldu\u011fumuz uygulamam\u0131z\u0131 bize sa\u011flayaca\u011f\u0131 ek fonksiyonaliteler ile daha kolay debug i\u015flemlerini ger\u00e7ekele\u015ftirecek idik.<\/p>\n<p>WinDBG i\u00e7erisine PssCor2&#8217;yi dahil edebilmek i\u00e7in\u00a0a\u015fa\u011f\u0131daki komut&#8217;u, WinDBG uygulamas\u0131n\u0131n alt b\u00f6l\u00fcm\u00fcnde bulunan komut sat\u0131r\u0131\u00a0k\u0131sm\u0131na girmemiz yeterli olacakt\u0131r.<\/p>\n<pre class=\"lang:c# decode:true\">.load f:\\wdk\\debug\\psscor2\\x86\\psscor2.dll<\/pre>\n<blockquote><p>Not: PssCor2 y\u00fckleme i\u015flemi s\u0131ras\u0131nda uygulaman\u0131z\u0131n\u00a0bit&#8217;ine g\u00f6re ilgili PssCor2&#8217;yi se\u00e7meniz\u00a0\u00f6nemlidir. Console uygulamam\u0131z 32 bit\u00a0oldu\u011fu i\u00e7in &#8220;x86&#8221; se\u00e7ene\u011fini y\u00fckl\u00fcyorum.<\/p><\/blockquote>\n<p>Y\u00fckleme i\u015fleminin ard\u0131ndan PssCor2&#8217;nin ba\u015far\u0131l\u0131 bir \u015fekilde y\u00fcklenip y\u00fcklenilmedi\u011fini anlayabilmek i\u00e7in komut k\u0131sm\u0131nda &#8220;!help&#8221; komutunu girerek \u00e7al\u0131\u015ft\u0131ral\u0131m.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/05\/psscor2-help2.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-601 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/05\/psscor2-help2.jpg\" alt=\"psscor2-help\" width=\"1138\" height=\"689\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/psscor2-help2.jpg 1138w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/psscor2-help2-300x182.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/psscor2-help2-1024x620.jpg 1024w\" data-sizes=\"(max-width: 1138px) 100vw, 1138px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1138px; --smush-placeholder-aspect-ratio: 1138\/689;\" \/><\/a><\/p>\n<p>Y\u00fckleme i\u015flemi ba\u015far\u0131l\u0131 ise yukar\u0131daki \u015fekilde yard\u0131m komutlar\u0131 ekrana gelecektir.<\/p>\n<p>\u015eimdi s\u0131ra &#8220;<strong>mscordacwks.dll<\/strong>&#8221; i y\u00fcklemeye geldi. Mscordacwks kabaca t\u0131pk\u0131 &#8220;SOS.dll&#8221; de oldu\u011fu gibi WinDBG arac\u0131m\u0131zda debugging i\u015flemlerimiz i\u00e7in CLR ayr\u0131nt\u0131lar\u0131 \u00fczerinde bize data-access abstraction&#8217;\u0131 sa\u011flamaktad\u0131r. Bu ayr\u0131nt\u0131ya tak\u0131lmam\u0131za gerek yoktur.<\/p>\n<p>Y\u00fckleme i\u015flemini a\u015fa\u011f\u0131daki komut\u00a0ile ger\u00e7ekle\u015ftirebiliriz:<\/p>\n<pre class=\"lang:c# decode:true \">.cordll -ve -u -l<\/pre>\n<p>Ba\u015far\u0131l\u0131 ile y\u00fcklendi\u011finde a\u015fa\u011f\u0131daki komut sat\u0131r\u0131 ekrana gelecektir.<\/p>\n<pre class=\"lang:c# decode:true \">0:000&gt; .cordll -ve -u -l\r\nAutomatically loaded SOS Extension\r\nCLRDLL: Loaded DLL C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscordacwks.dll\r\nCLR DLL status: Loaded DLL C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscordacwks.dll<\/pre>\n<blockquote><p>Not: &#8220;mscordacwks.dll&#8221; y\u00fckleme s\u0131ras\u0131nda e\u011fer &#8220;SOS does not support the current target architecture.&#8221; gibi bir hata al\u0131rsan\u0131z, uygulaman\u0131z\u0131n bit de\u011ferlerine g\u00f6re do\u011fru PssCor2&#8217;yi y\u00fckledi\u011finizden emin olmal\u0131s\u0131n\u0131z.<\/p><\/blockquote>\n<h4>CLR Stack&#8217;i \u0130nceleme Zaman\u0131<\/h4>\n<p>Evet her \u015fey haz\u0131r oldu\u011funa g\u00f6re art\u0131k CLR Stack&#8217;i inceleyebiliriz. \u00a0A\u015fa\u011f\u0131daki komut sat\u0131r\u0131 ile managed stack&#8217;i listeleyebiliriz.<\/p>\n<pre class=\"lang:default decode:true \">!clrstack<\/pre>\n<p>Bu i\u015flem sonucunda a\u015fa\u011f\u0131daki gibi bir \u00e7\u0131kt\u0131 ile kar\u015f\u0131la\u015faca\u011f\u0131z:<\/p>\n<pre class=\"lang:default decode:true \">0:000&gt; !clrstack\r\nOS Thread Id: 0x314c (0)\r\nChild SP       IP Call Site\r\n0018f1f0 7773718c [HelperMethodFrame: 0018f1f0] \r\n0018f2a0 720acc3a System.Number.StringToNumber(System.String, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo, Boolean)\r\n0018f2c8 7156fe79 System.Number.ParseInt32(System.String, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo)\r\n0018f378 71bfd34a System.Convert.ToInt32(System.String)\r\n0018f384 00d804ab *** WARNING: Unable to verify checksum for WinDbgTestApplication.exe\r\nWinDbgTestApplication.Program.Main(System.String[]) [C:\\Users\\G\u00d6KALP\\Documents\\Visual Studio 2015\\Projects\\WinDbgTestApplication\\WinDbgTestApplication\\Program.cs @ 13]\r\n0018f538 72671376 [GCFrame: 0018f538]<\/pre>\n<p>Ekran g\u00f6r\u00fcnt\u00fcs\u00fc ise a\u015fa\u011f\u0131daki gibidir.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/05\/clrstack.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-603 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/05\/clrstack.jpg\" alt=\"clrstack\" width=\"1138\" height=\"689\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/clrstack.jpg 1138w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/clrstack-300x182.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/clrstack-1024x620.jpg 1024w\" data-sizes=\"(max-width: 1138px) 100vw, 1138px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1138px; --smush-placeholder-aspect-ratio: 1138\/689;\" \/><\/a><\/p>\n<p>tada&#8230; art\u0131k managed stack kar\u015f\u0131m\u0131zda.\u00a0Evet \u015fimdi bunlar\u0131 nas\u0131l yorumlayaca\u011f\u0131z k\u0131sm\u0131na gelelim.<\/p>\n<p>Uygulamam\u0131z\u0131n dump alma i\u015flemi s\u0131ras\u0131nda \u00e7al\u0131\u015fan thread&#8217;lere bir bakal\u0131m \u00f6ncelikle. Bunun i\u00e7in a\u015fa\u011f\u0131daki komut sat\u0131r\u0131n\u0131 girmemiz yeterlidir.<\/p>\n<pre class=\"lang:default decode:true \">!threads<\/pre>\n<p>Bu i\u015flemin sonucunda a\u015fa\u011f\u0131daki gibi thread&#8217;ler ekrana gelmektedir.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/05\/windbg-threads.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-604 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/05\/windbg-threads.jpg\" alt=\"windbg-threads\" width=\"1138\" height=\"689\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/windbg-threads.jpg 1138w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/windbg-threads-300x182.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/windbg-threads-1024x620.jpg 1024w\" data-sizes=\"(max-width: 1138px) 100vw, 1138px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1138px; --smush-placeholder-aspect-ratio: 1138\/689;\" \/><\/a><\/p>\n<p>Ekrana gelen bu managed thread&#8217;lere bakt\u0131\u011f\u0131m\u0131zda:<\/p>\n<pre class=\"lang:default decode:true \">0:000&gt; !threads\r\nThreadCount:      2\r\nUnstartedThread:  0\r\nBackgroundThread: 1\r\nPendingThread:    0\r\nDeadThread:       0\r\nHosted Runtime:   no\r\n                                                                         Lock  \r\n       ID OSID ThreadOBJ    State GC Mode     GC Alloc Context  Domain   Count Apt Exception\r\n   0    1 314c 00be98a8     2a020 Preemptive  02613E9C:00000000 00be3ed8 0     MTA System.FormatException 0260b2c4\r\n   5    2 2168 00bf77a8     2b220 Preemptive  00000000:00000000 00be3ed8 0     MTA (Finalizer)<\/pre>\n<p>&#8220;1&#8221; id&#8217;li olan managed thread&#8217;in exception ba\u015fl\u0131\u011f\u0131 alt\u0131nda &#8220;System.FormatException&#8221; verdi\u011fini a\u00e7\u0131k\u00e7a g\u00f6rebilmekteyiz. \u015eimdi bu hatan\u0131n detay\u0131na biraz daha inmek istersek e\u011fer a\u015fa\u011f\u0131daki komut sat\u0131r\u0131n\u0131 girmemiz yeterli olacakt\u0131r.<\/p>\n<pre class=\"lang:default decode:true \">!printexception<\/pre>\n<p>Bu komutun sonucunda ise exception detay\u0131 a\u015fa\u011f\u0131daki gibi kar\u015f\u0131m\u0131za \u00e7\u0131kacakt\u0131r. :)<\/p>\n<pre class=\"lang:default decode:true \">0:000&gt; !printexception\r\nException object: 0260b2c4\r\nException type:   System.FormatException\r\nMessage:          Giri\u015f dizesi do\u011fru bi\u00e7imde de\u011fildi.\r\nInnerException:   &lt;none&gt;\r\nStackTrace (generated):\r\n    SP       IP       Function\r\n    0018F2A0 720ACC39 mscorlib_ni!System.Number.StringToNumber(System.String, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo, Boolean)+0xb3cd59\r\n    0018F2C8 7156FE79 mscorlib_ni!System.Number.ParseInt32(System.String, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo)+0x79\r\n    0018F378 71BFD34A mscorlib_ni!System.Convert.ToInt32(System.String)+0x32\r\n    0018F384 00D804AB WinDbgTestApplication!WinDbgTestApplication.Program.Main(System.String[])+0x63\r\n\r\nStackTraceString: &lt;none&gt;\r\nHResult: 80131537<\/pre>\n<p>Evet\u00a0uygulamam\u0131z\u0131n crash olmas\u0131na sebep olan exception detaylar\u0131na git gide yakla\u015fmaktay\u0131z. \u0130lk ba\u015fta &#8220;!clrstack&#8221; komutu ile karma\u015f\u0131k gelen managed stack&#8217;den yola \u00e7\u0131karak git gide stack&#8217;i\u00a0anlamland\u0131rmaya ba\u015flad\u0131k. <strong>StackTrace<\/strong> k\u0131sm\u0131nda g\u00f6rebildi\u011fimiz gibi &#8220;System.Number.StringToNumber&#8221; fonksiyonu ile string&#8217;den int&#8217;e convert i\u015flemi s\u0131ras\u0131nda bir hatan\u0131n meydana geldi\u011fini g\u00f6rmekteyiz.<\/p>\n<p>Dilersek bu i\u015flem s\u0131ras\u0131nda bu fonksiyonlar\u0131n hangi parametreler ve ilgili de\u011fi\u015fkenleri ile beraber\u00a0\u00e7a\u011fr\u0131ld\u0131\u011f\u0131n\u0131 da a\u015fa\u011f\u0131daki kod blo\u011fu ile alabilmek m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<pre class=\"lang:default decode:true\">!clrstack -a<\/pre>\n<p>Bu i\u015flem sonucunda ise a\u015fa\u011f\u0131daki gibi bir kod ekran\u0131 kar\u015f\u0131m\u0131za gelecektir.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/05\/clrstack-a.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-606 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/05\/clrstack-a.jpg\" alt=\"clrstack-a\" width=\"1138\" height=\"689\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/clrstack-a.jpg 1138w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/clrstack-a-300x182.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/clrstack-a-1024x620.jpg 1024w\" data-sizes=\"(max-width: 1138px) 100vw, 1138px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1138px; --smush-placeholder-aspect-ratio: 1138\/689;\" \/><\/a><\/p>\n<p>Hatan\u0131n &#8220;<strong>0018f378 71bfd34a System.Convert.ToInt32(System.String)<\/strong>&#8221; k\u0131sm\u0131nda meydana geldi\u011fini g\u00f6rebilmekteyiz. Uygulamam\u0131z\u0131 a\u00e7t\u0131\u011f\u0131m\u0131zda ise &#8220;Program.cs @ 13&#8221; k\u0131sm\u0131nda belirtilen 13. sat\u0131rdaki koda bir bakal\u0131m:<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/05\/windbg-ornek-2.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-607 lazyload\" data-src=\"\/wp-content\/uploads\/2016\/05\/windbg-ornek-2.jpg\" alt=\"windbg-ornek-2\" width=\"688\" height=\"417\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/windbg-ornek-2.jpg 688w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2016\/05\/windbg-ornek-2-300x182.jpg 300w\" data-sizes=\"(max-width: 688px) 100vw, 688px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 688px; --smush-placeholder-aspect-ratio: 688\/417;\" \/><\/a><\/p>\n<p>13. sat\u0131rda g\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi tamda stack&#8217;de belirtilen &#8220;int birthYear = Convert.ToInt32(Console.ReadLine);&#8221; sat\u0131r\u0131 bulunmaktad\u0131r. Hatal\u0131 do\u011fum y\u0131l\u0131n\u0131 girdi\u011fimiz sat\u0131r! :)<\/p>\n<p>Size burada crash\u00a0durumlar\u0131ndaki dump&#8217;lar\u0131 nas\u0131l okuyabilece\u011fimiz hakk\u0131ndaki deneyimlerimi aktarmaya \u00e7al\u0131\u015ft\u0131m. Her zaman baz\u0131 spesifik hatalar\u0131\u00a0dump \u00fczerinden bulabilmek pekte kolay olmayacakt\u0131r. \u00d6zellikle <strong>memory leak<\/strong> veya a\u015f\u0131r\u0131 zaman alan uygulamalar\u0131n\u0131z\u0131n sebebini ara\u015ft\u0131rma durumlar\u0131nda. WinDBG konsolundan ayr\u0131ca, &#8220;!dumpheap&#8221; komutu ile heap&#8217;de yer alan objeleri ve bunlar\u0131n adetleri gibi detayl\u0131 bilgilere ula\u015fabilirken,\u00a0bir ba\u015fka daha kolay analiz y\u00f6ntemi ise <strong>DebugDiag Analysis<\/strong> arac\u0131 ile performans analizleri yapt\u0131r\u0131p, hangi thread&#8217;in ne kadar vakit harcad\u0131\u011f\u0131 gibi daha detayl\u0131 raporlama bilgilerine de ula\u015fabilmek m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<p>Bu makalemin devam\u0131 niteli\u011finde\u00a0bir ba\u015fka makale serisinde bu tarz problemlerdeki deneyimlerime\u00a0de aktarmaya \u00e7al\u0131\u015faca\u011f\u0131m. Umar\u0131m faydal\u0131 bir yaz\u0131 olmu\u015ftur.<\/p>\n<p>Vakit ay\u0131r\u0131p okudu\u011funuz i\u00e7in te\u015fekk\u00fcr ederim. :) Sevgiyle kal\u0131n.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Uzun bir aradan sonra tekrardan merhaba arkada\u015flar. Bir s\u00fcredir \u015firkette yo\u011fun ge\u00e7irdi\u011fim bir \u00e7al\u0131\u015fma temposundan sonra, bir makale daha yazabilmeye f\u0131rsat bulabildim. :) Bu makaleyi yazma ihtiyac\u0131m ise, bir ka\u00e7 haftadan bu yana mevcut bir sistemin \u00fczerine yerle\u015ftirmi\u015f oldu\u011fum Asp.NET Web API&#8217;da, anlams\u0131z bir \u015fekilde&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/gokhan-gokalp.com\/tr\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\/\">Devam\u0131n\u0131 okuyun<span class=\"screen-reader-text\">WinDBG ile Dump Analizi Yaparak Performans Sorunlar\u0131n\u0131 \u00c7\u00f6z\u00fcmleme<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,175],"tags":[171,170,177,172,167,174,173,168,169,176],"class_list":["post-580","post","type-post","status-publish","format-standard","hentry","category-net","category-performans-profiling","tag-net-dump-okuma","tag-net-memory-analizi","tag-clr-stack","tag-crash-dump-okuma","tag-psscor2-nedir","tag-sos-dll-nedir","tag-web-api-performans-problemi","tag-windbg","tag-windbg-kullanimi","tag-windows-symbol","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"tr","enabled_languages":["en","tr"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"tr":{"title":false,"content":false,"excerpt":false}}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>WinDBG ile Dump Analizi Yaparak Performans Sorunlar\u0131n\u0131 \u00c7\u00f6z\u00fcmleme - G\u00f6khan G\u00f6kalp<\/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:\/\/gokhan-gokalp.com\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WinDBG ile Dump Analizi Yaparak Performans Sorunlar\u0131n\u0131 \u00c7\u00f6z\u00fcmleme - G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gokhan-gokalp.com\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\/\" \/>\n<meta property=\"og:site_name\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"article:published_time\" content=\"2016-05-08T15:57:22+00:00\" \/>\n<meta name=\"author\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\\\/\"},\"author\":{\"name\":\"G\u00f6khan G\u00f6kalp\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"headline\":\"WinDBG ile Dump Analizi Yaparak Performans Sorunlar\u0131n\u0131 \u00c7\u00f6z\u00fcmleme\",\"datePublished\":\"2016-05-08T15:57:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\\\/\"},\"wordCount\":2527,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"keywords\":[\".Net Dump Okuma\",\".Net Memory Analizi\",\"Clr Stack\",\"Crash Dump Okuma\",\"PssCor2 nedir\",\"SOS.dll Nedir\",\"Web API Performans Problemi\",\"WinDBG\",\"WinDBG Kullan\u0131m\u0131\",\"Windows symbol\"],\"articleSection\":[\".NET\",\"Performans (Profiling)\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\\\/\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\\\/\",\"name\":\"WinDBG ile Dump Analizi Yaparak Performans Sorunlar\u0131n\u0131 \u00c7\u00f6z\u00fcmleme - G\u00f6khan G\u00f6kalp\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\"},\"datePublished\":\"2016-05-08T15:57:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WinDBG ile Dump Analizi Yaparak Performans Sorunlar\u0131n\u0131 \u00c7\u00f6z\u00fcmleme\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"description\":\"C# &amp; Python lover\",\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gokhan-gokalp.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"pronouns\":\"he\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"contentUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"caption\":\"G\u00f6khan G\u00f6kalp\"},\"logo\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\"},\"sameAs\":[\"https:\\\/\\\/gokhan-gokalp.com\"],\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/tr\\\/author\\\/gok-gokalp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"WinDBG ile Dump Analizi Yaparak Performans Sorunlar\u0131n\u0131 \u00c7\u00f6z\u00fcmleme - G\u00f6khan G\u00f6kalp","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:\/\/gokhan-gokalp.com\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\/","og_locale":"tr_TR","og_type":"article","og_title":"WinDBG ile Dump Analizi Yaparak Performans Sorunlar\u0131n\u0131 \u00c7\u00f6z\u00fcmleme - G\u00f6khan G\u00f6kalp","og_url":"https:\/\/gokhan-gokalp.com\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\/","og_site_name":"G\u00f6khan G\u00f6kalp","article_published_time":"2016-05-08T15:57:22+00:00","author":"G\u00f6khan G\u00f6kalp","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"G\u00f6khan G\u00f6kalp","Tahmini okuma s\u00fcresi":"15 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gokhan-gokalp.com\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\/#article","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\/"},"author":{"name":"G\u00f6khan G\u00f6kalp","@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"headline":"WinDBG ile Dump Analizi Yaparak Performans Sorunlar\u0131n\u0131 \u00c7\u00f6z\u00fcmleme","datePublished":"2016-05-08T15:57:22+00:00","mainEntityOfPage":{"@id":"https:\/\/gokhan-gokalp.com\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\/"},"wordCount":2527,"commentCount":2,"publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"keywords":[".Net Dump Okuma",".Net Memory Analizi","Clr Stack","Crash Dump Okuma","PssCor2 nedir","SOS.dll Nedir","Web API Performans Problemi","WinDBG","WinDBG Kullan\u0131m\u0131","Windows symbol"],"articleSection":[".NET","Performans (Profiling)"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gokhan-gokalp.com\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gokhan-gokalp.com\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\/","url":"https:\/\/gokhan-gokalp.com\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\/","name":"WinDBG ile Dump Analizi Yaparak Performans Sorunlar\u0131n\u0131 \u00c7\u00f6z\u00fcmleme - G\u00f6khan G\u00f6kalp","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/#website"},"datePublished":"2016-05-08T15:57:22+00:00","breadcrumb":{"@id":"https:\/\/gokhan-gokalp.com\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gokhan-gokalp.com\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/gokhan-gokalp.com\/windbg-ile-dump-analizi-yaparak-performans-sorunlarini-cozumleme\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gokhan-gokalp.com\/"},{"@type":"ListItem","position":2,"name":"WinDBG ile Dump Analizi Yaparak Performans Sorunlar\u0131n\u0131 \u00c7\u00f6z\u00fcmleme"}]},{"@type":"WebSite","@id":"https:\/\/gokhan-gokalp.com\/#website","url":"https:\/\/gokhan-gokalp.com\/","name":"G\u00f6khan G\u00f6kalp","description":"C# &amp; Python lover","publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gokhan-gokalp.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe","name":"G\u00f6khan G\u00f6kalp","pronouns":"he","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","url":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","contentUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","caption":"G\u00f6khan G\u00f6kalp"},"logo":{"@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659"},"sameAs":["https:\/\/gokhan-gokalp.com"],"url":"https:\/\/gokhan-gokalp.com\/tr\/author\/gok-gokalp\/"}]}},"_links":{"self":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/580","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/comments?post=580"}],"version-history":[{"count":14,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/580\/revisions"}],"predecessor-version":[{"id":613,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/580\/revisions\/613"}],"wp:attachment":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/media?parent=580"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/categories?post=580"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/tags?post=580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}