Dump Dosyası İncelemeye Giriş


Merhaba,
Uzun bir aradan sonra debugging ile ilgili serime devam ediyorum. Artık dump dosyalarını nasıl inceleyeceğimize geçeceğiz. Dump Alma ( Hang Mode - I ) yazımdaki yöntemle yanıt vermeyen bir uygulamanın dump'ını aldığınızı farz ediyorum.

Start –> All Programs –> Debugging Tools for Windows(x86) –> WinDbg uygulamasını açın.
File menüsünden “Open Crash Dump” seçeneğini tıklayın. Açılan gezgin penceresinden daha önce oluşturduğunuz dmp uzantılı dosyayı bulun ve açın.
“Save information for workspace” sorusunu her zaman hayır olarak yanıtlayın.

Biraz bekledikten sonra aşağıdaki gibi bir çıktı alacaksınız :

Debugger’ın Versiyon bilgisi :
Microsoft (R) Windows Debugger Version 6.13.0003.956 X86
Copyright (c) Microsoft Corporation. All rights reserved.

Yüklenen dump dosyasının yeri ve adı :
Loading Dump File [H:\BLOG\dumps\20101229_112225_Hang_Mode\FULLDUMP_HangMode_UITest.exe__061c_2010-12-29_11-22-28-575_158c.dmp]

Dump dosyasının tipi :
User Mini Dump File with Full Memory: Only application data is available
Comment: 'HangMode'

Sembol bilgileri :
Symbol search path is: *** Invalid ***
****************************************************************************
* Symbol loading may be unreliable without a symbol search path.           *
* Use .symfix to have the debugger choose a symbol path.                   *
* After setting your symbol path, use .reload to refresh symbol locations. *
****************************************************************************
Executable search path is:

Debugging, doğru sembol dosyaları olmadan çok zor yapılabilir çünkü; nerdeyse herşeyi disassemble edilmiş koddan bulmaya çalışırsınız.
Aşağıdaki bölümlerde konuyu daha fazla ele alacağım. Şu kadarını hatırlamanız yeterli : Sembol dosyası olmadan debugging yapılmaz.

Dump’ın alındığı makina ve sistem bilgileri :
Windows 7 Version 7600 MP (2 procs) Free x86 compatible
Product: Server, suite: Enterprise TerminalServer SingleUserTS
Built by: 6.1.7600.16385 (win7_rtm.090713-1255)
Machine Name:
Debug session time: Wed Dec 29 11:22:28.000 2010 (UTC + 2:00)
System Uptime: 6 days 18:34:10.924
Process Uptime: 0 days 0:40:35.000

Bu bilgiler işinize yarayabilir. İşletim Sisteminin sürümü, makina adı, dump'ın ne zaman alındığı. Bu bilgileri kullanarak Sistem ve Uygulama günlüklerini kontrol edebilirsiniz.
Yakın zamanda herhangi bir problem olup olmadığını denetleyebilirsiniz. Sistem ve Proses'in ne kadar zamandır çalıştığı da bir fikir verebilir. Sorunun sıklığına dair fikir edinebilirsiniz.

Sembol uyarıları ve exception bilgisi :

*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntdll.dll -
This dump file has an exception of interest stored in it.
The stored exception information can be accessed via .ecxr.
(158c.14f8): Wake debugger - code 80000007 (first/second chance not available)

Debugger (invasive moddayken) process'te bir thread yaratır ve DebugBreak fonksiyonunu çağırır. Bu da process'in
breakpoint exception'ı vermesine sebep olur. Dolayısıyla hang modda alınmış dump dosyalarında 0x80000007 numaralı olayın olması normal.

Şu anda debugger context’inin set edildiği thread’in register bilgileri :

eax=00000000 ebx=0022f2bc ecx=00000000 edx=00000000 esi=00000002 edi=00000000
eip=77b300ed esp=0022f26c ebp=0022f308 iopl=0         nv up ei pl nz na po nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000202
ntdll!NtWaitForMultipleObjects+0x15:
77b300ed 83c404          add     esp,4

WinDbg ekranının sol alt köşesinde "0:000>" ibaresini göreceksiniz. Aslında bu ProcessID:ThreadID ikilisini gösterir. User mode dumplarda ProcessID hep 0 olacaktır.
Dolayısıyla gördüğünüz "0:000", bu process'in 0 numaralı thread'inde olduğunuzu ifade eder. Kernel dumplarında Process Context'ini değiştirebilirsiniz.
ProcessID:ThreadID metin kutusunun sağında yer alan metin editör kontrolünü kullanarak WinDbg'ye istediğimiz komutları yollayacağız.

 

 

 

İlk komutlar


Dumpı alınmış process'in kaç tane thread'i olduğuna bakalım.
0:000> yazan kısımın sağ tarfındaki textbox'ı kullanacağız.
~ yazın ve enter'a basın
Aşağıdakine benzer bir çıktı alacaksınız.

0:000> ~
.  0  Id: 158c.14f8 Suspend: 1 Teb: 7efdd000 Unfrozen
   1  Id: 158c.104c Suspend: 1 Teb: 7efda000 Unfrozen
   2  Id: 158c.a1c Suspend: 1 Teb: 7efd7000 Unfrozen

Bu çıktı bize process içinde 3 thread olduğunu gösteriyor : 0, 1 ve 2. threadler. Windbg, thread'leri 0 dan başlayarak numaralandırır. Ayrıca, gerçek numaralarını da gösterir.
Örneğin, 158c.14f8 bize thread'in 158c ProcessID'li process'in 14f8 numaralı thread'i olduğunu anlatıyor. Teb: 7efdd000 ise TEB veri yapısının adresini gösterir.

CreateThread Function , TEB Structure 

Bir thread'in call stack'ini listelemek
Bu kez komut penceresine ( ProcessID:ThreadID metin kutusunun sağında yer alan metin editör kontrolü ) k komutunu girip enter'a basın.
Aşağıdakine benzer bir çıktı ile karşılaşacaksınız.

0:000> k
ChildEBP RetAddr 
WARNING: Stack unwind information not available. Following frames may be wrong.
0022f308 7614162d ntdll!NtWaitForMultipleObjects+0x15
0022f350 76141921 kernel32!WaitForMultipleObjectsEx+0x8e
0022f36c 65aa10e2 kernel32!WaitForMultipleObjects+0x18
0022f3b0 00d41b1d Senaryolar!DeadLockDurumuYarat+0x82
0022f3bc 61e42c6f UITest+0x1b1d
0022f3c8 61e42e51 mfc100u+0x1b2c6f
0022f3e4 61e76d36 mfc100u+0x1b2e51
0022f408 61ecc444 mfc100u+0x1e6d36
0022f458 61d0cceb mfc100u+0x23c444
0022f46c 61ecbc47 mfc100u+0x7cceb
0022f538 61ecbbba mfc100u+0x23bc47
0022f558 61eca019 mfc100u+0x23bbba
0022f5d0 61eca2a5 mfc100u+0x23a019
0022f5f4 61dc0ddb mfc100u+0x23a2a5
0022f63c 774a6238 mfc100u+0x130ddb
0022f668 774a68ea user32!gapfnScSendMessage+0x270
0022f6e0 774acd1a user32!gapfnScSendMessage+0x922
0022f724 774acd81 user32!GetWindow+0x21a
0022f748 74354e95 user32!SendMessageW+0x4c
0022f768 74354ef7 comctl32!GetEffectiveClientRect+0x306c
0022f784 74354d89 comctl32!GetEffectiveClientRect+0x30ce
0022f7e4 774a6238 comctl32!GetEffectiveClientRect+0x2f60
0022f810 774a68ea user32!gapfnScSendMessage+0x270
0022f888 774a7d31 user32!gapfnScSendMessage+0x922
0022f8e8 774a7dfa user32!LoadStringW+0x11f
0022f8f8 774c2292 user32!DispatchMessageW+0xf
0022f924 61ee0ac0 user32!IsDialogMessageW+0x11e
0022f938 61eced28 mfc100u+0x250ac0
0022f944 61e6c3ad mfc100u+0x23ed28
0022f99c 61d0cc9c mfc100u+0x1dc3ad
0022f9ac 61eccec5 mfc100u+0x7cc9c
0022f9c0 61eb8a28 mfc100u+0x23cec5
0022f9d8 61eb922d mfc100u+0x228a28
0022f9e4 61eb8a78 mfc100u+0x22922d
0022f9f0 61eb895d mfc100u+0x228a78
0022fa2c 61e6cae3 mfc100u+0x22895d
0022fa78 00d41197 mfc100u+0x1dcae3
0022fbfc 61ede3c3 UITest+0x1197
0022fc10 00d42425 mfc100u+0x24e3c3
0022fca4 76143677 UITest+0x2425
0022fcb0 77b49d42 kernel32!BaseThreadInitThunk+0x12
0022fcf0 77b49d15 ntdll!RtlInitializeExceptionChain+0x63
0022fd08 00000000 ntdll!RtlInitializeExceptionChain+0x36

Dikkat edilmesi gerekenler :
"WARNING: Stack unwind information not available. Following frames may be wrong." mesajı bize debugger'ın sembol dosyalarını bulamadığını o yüzden
callstack'i düzgün çıkaramadığını söylüyor.

Sembol dosyalarına erişmek :

Debugger'ın, sembol dosyalarına erişimini anlatan temel makaleyi okuyabilirsiniz :
Use the Microsoft Symbol Server to obtain debug symbol files

Adım adım ayarların yapılması :
#1 Bilgisayarınızda bir dizin açın. Bu dizin debugger'ın indirdiği sembol dosyalarını tutacaktır.
Örneğin :
H:\BLOG\symbols

#2 Windbg'de "File" menüsünden "Symbol File Path" seçeneğini tıklayın. Açılan pencere içine aşağıdakileri girin :
SRV*H:\BLOG\symbols*http://msdl.microsoft.com/download/symbols

Not : Sizin lokal sembol cache dizininiz farklı olabilir. Bu durumda "H:\BLOG\symbols" yerine o dizini girin.

#3 "Reload" checkbox'ını işaretleyin ve "OK" butonuna basın.

Şimdi k komutunu tekrar çalıştırın. Bu kez oldukça farklı bir callstack göreceksiniz :

0:000> k
ChildEBP RetAddr 
0022f26c 75b30962 ntdll!ZwWaitForMultipleObjects+0x15
0022f308 7614162d KERNELBASE!WaitForMultipleObjectsEx+0x100
0022f350 76141921 kernel32!WaitForMultipleObjectsExImplementation+0xe0
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for Senaryolar.dll -
0022f36c 65aa10e2 kernel32!WaitForMultipleObjects+0x18
*** ERROR: Module load completed but symbols could not be loaded for UITest.exe
WARNING: Stack unwind information not available. Following frames may be wrong.
0022f3b0 00d41b1d Senaryolar!DeadLockDurumuYarat+0x82
0022f3bc 61e42c6f UITest+0x1b1d
0022f3c8 61e42e51 mfc100u!_AfxDispatchCmdMsg+0x3b [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\cmdtarg.cpp @ 82]
0022f3e4 61e76d36 mfc100u!CCmdTarget::OnCmdMsg+0x124 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\cmdtarg.cpp @ 381]
0022f408 61ecc444 mfc100u!CPropertySheet::OnCmdMsg+0x1d [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\dlgprop.cpp @ 814]
0022f458 61d0cceb mfc100u!CWnd::OnCommand+0x92 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp @ 2675]
0022f46c 61ecbc47 mfc100u!CDialogEx::OnCommand+0x2f [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\afxdialogex.cpp @ 290]
0022f538 61ecbbba mfc100u!CWnd::OnWndMsg+0x66 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp @ 2081]
0022f558 61eca019 mfc100u!CWnd::WindowProc+0x24 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp @ 2067]
0022f5d0 61eca2a5 mfc100u!AfxCallWndProc+0xb5 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp @ 248]
0022f5f4 61dc0ddb mfc100u!AfxWndProc+0x37 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp @ 410]
0022f634 774a6901 mfc100u!AfxWndProcBase+0x56 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\afxstate.cpp @ 420]
0022f6e0 774acd1a user32!UserCallWinProcCheckWow+0x120
0022f724 774acd81 user32!SendMessageWorker+0x581
0022f748 74354e95 user32!SendMessageW+0x7f
0022f768 74354ef7 comctl32!Button_NotifyParent+0x3d
0022f784 74354d89 comctl32!Button_ReleaseCapture+0x113
0022f7e4 774a6238 comctl32!Button_WndProc+0xa18
0022f810 774a68ea user32!InternalCallWinProc+0x23
0022f888 774a7d31 user32!UserCallWinProcCheckWow+0x109
0022f8e8 774a7dfa user32!DispatchMessageWorker+0x3bc
0022f8f8 774c2292 user32!DispatchMessageW+0xf
0022f924 61ee0ac0 user32!IsDialogMessageW+0x5f6
0022f938 61eced28 mfc100u!CWnd::IsDialogMessageW+0x32 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\winocc.cpp @ 197]
0022f944 61e6c3ad mfc100u!CWnd::PreTranslateInput+0x2d [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp @ 4659]
0022f99c 61d0cc9c mfc100u!CDialog::PreTranslateMessage+0xcf [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\dlgcore.cpp @ 82]
0022f9ac 61eccec5 mfc100u!CDialogEx::PreTranslateMessage+0x29 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\afxdialogex.cpp @ 275]
0022f9c0 61eb8a28 mfc100u!CWnd::WalkPreTranslateTree+0x23 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp @ 3258]
0022f9d8 61eb922d mfc100u!AfxInternalPreTranslateMessage+0x41 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\thrdcore.cpp @ 233]
0022f9e4 61eb8a78 mfc100u!CWinThread::PreTranslateMessage+0xd [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\thrdcore.cpp @ 777]
0022f9f0 61eb895d mfc100u!AfxPreTranslateMessage+0x19 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\thrdcore.cpp @ 255]
0022fa00 61ecedfd mfc100u!AfxInternalPumpMessage+0x2d [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\thrdcore.cpp @ 178]
0022fa2c 61e6cae3 mfc100u!CWnd::RunModalLoop+0xc8 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp @ 4714]
0022fa78 00d41197 mfc100u!CDialog::DoModal+0x12d [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\dlgcore.cpp @ 638]
0022fbfc 61ede3c3 UITest+0x1197
0022fc10 00d42425 mfc100u!AfxWinMain+0x49 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\winmain.cpp @ 37]
0022fca4 76143677 UITest+0x2425
0022fcb0 77b49d42 kernel32!BaseThreadInitThunk+0xe
0022fcf0 77b49d15 ntdll!__RtlUserThreadStart+0x70
0022fd08 00000000 ntdll!_RtlUserThreadStart+0x1b

1. adımda açtığınız dizine bakarsanız bir çok alt dizinle dolduğunu göreceksiniz.

H:\BLOG\symbols>dir
Volume in drive H is TOSHIBA
Volume Serial Number is 4504-0DA4

Directory of H:\BLOG\symbols

29.12.2010  16:50    <DIR>          .
29.12.2010  16:50    <DIR>          ..
29.12.2010  16:53    <DIR>          wntdll.pdb
29.12.2010  16:53                 0 pingme.txt
29.12.2010  16:53    <DIR>          wkernelbase.pdb
29.12.2010  16:54    <DIR>          wkernel32.pdb
29.12.2010  16:54    <DIR>          mfc100u.i386.pdb
29.12.2010  16:54    <DIR>          wuser32.pdb
29.12.2010  16:54    <DIR>          comctl32.pdb
               1 File(s)              0 bytes
               8 Dir(s)  11.803.426.816 bytes free


Yukarıdaki callstack'e baktığınızda debugger'ın, UITest.exe ve senaryolar.dll modüllerinin sembol dosyalarını bulamadığını görüyoruz. Aslında, işletim sistemi ile gelen ve Microsoft'tan satın alınmış ürünlerin sembol dosyaları indirilecektir. Sizin, debugger'a diğer modüllerin sembol dosyalarını nereden bulabileceğini belirtmeniz gerekir. Bunun için yine Windbg'de, "File" menüsünden "Symbol File Path" seçeneğini tıklayın. Varolan ifadenin sonuna noltalı virgül ekleyin ve sembol dosyalarının bulunduğu dizini girin. Örneğin, benim için bu :
H:\BLOG\DebugSenaryolari\Release dizini. Ve, sembol path ifadem de aşağıdaki gibi olacaktır : SRV*H:\BLOG\symbols*http://msdl.microsoft.com/download/symbols;H:\BLOG\DebugSenaryolari\Release 

"Reload" checkbox'ını işaretleyin ve "OK" butonuna basın. Bir kez daha k komutunu çalıştırın. Bu kez tüm modüllerin sembol dosyasına ulaşılmış olunmalı :

0:000> k
ChildEBP RetAddr 
0022f26c 75b30962 ntdll!ZwWaitForMultipleObjects+0x15
0022f308 7614162d KERNELBASE!WaitForMultipleObjectsEx+0x100
0022f350 76141921 kernel32!WaitForMultipleObjectsExImplementation+0xe0
0022f36c 65aa10e2 kernel32!WaitForMultipleObjects+0x18
0022f3b0 00d41b1d Senaryolar!DeadLockDurumuYarat+0x82 [d:\work\blog\debugsenaryolari\senaryolar\aski.cpp @ 40]
0022f3bc 61e42c6f UITest!CUITestDlg::OnBnClickedButtonDeadlock+0xd [d:\work\blog\debugsenaryolari\uitest\uitestdlg.cpp @ 168]
0022f3c8 61e42e51 mfc100u!_AfxDispatchCmdMsg+0x3b [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\cmdtarg.cpp @ 82]
0022f3e4 61e76d36 mfc100u!CCmdTarget::OnCmdMsg+0x124 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\cmdtarg.cpp @ 381]
0022f408 61ecc444 mfc100u!CPropertySheet::OnCmdMsg+0x1d [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\dlgprop.cpp @ 814]
0022f458 61d0cceb mfc100u!CWnd::OnCommand+0x92 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp @ 2675]
0022f46c 61ecbc47 mfc100u!CDialogEx::OnCommand+0x2f [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\afxdialogex.cpp @ 290]
0022f538 61ecbbba mfc100u!CWnd::OnWndMsg+0x66 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp @ 2081]
0022f558 61eca019 mfc100u!CWnd::WindowProc+0x24 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp @ 2067]
0022f5d0 61eca2a5 mfc100u!AfxCallWndProc+0xb5 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp @ 248]
0022f5f4 61dc0ddb mfc100u!AfxWndProc+0x37 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp @ 410]
0022f634 774a6901 mfc100u!AfxWndProcBase+0x56 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\afxstate.cpp @ 420]
0022f6e0 774acd1a user32!UserCallWinProcCheckWow+0x120
0022f724 774acd81 user32!SendMessageWorker+0x581
0022f748 74354e95 user32!SendMessageW+0x7f
0022f768 74354ef7 comctl32!Button_NotifyParent+0x3d
0022f784 74354d89 comctl32!Button_ReleaseCapture+0x113
0022f7e4 774a6238 comctl32!Button_WndProc+0xa18
0022f810 774a68ea user32!InternalCallWinProc+0x23
0022f888 774a7d31 user32!UserCallWinProcCheckWow+0x109
0022f8e8 774a7dfa user32!DispatchMessageWorker+0x3bc
0022f8f8 774c2292 user32!DispatchMessageW+0xf
0022f924 61ee0ac0 user32!IsDialogMessageW+0x5f6
0022f938 61eced28 mfc100u!CWnd::IsDialogMessageW+0x32 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\winocc.cpp @ 197]
0022f944 61e6c3ad mfc100u!CWnd::PreTranslateInput+0x2d [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp @ 4659]
0022f99c 61d0cc9c mfc100u!CDialog::PreTranslateMessage+0xcf [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\dlgcore.cpp @ 82]
0022f9ac 61eccec5 mfc100u!CDialogEx::PreTranslateMessage+0x29 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\afxdialogex.cpp @ 275]
0022f9c0 61eb8a28 mfc100u!CWnd::WalkPreTranslateTree+0x23 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp @ 3258]
0022f9d8 61eb922d mfc100u!AfxInternalPreTranslateMessage+0x41 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\thrdcore.cpp @ 233]
0022f9e4 61eb8a78 mfc100u!CWinThread::PreTranslateMessage+0xd [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\thrdcore.cpp @ 777]
0022f9f0 61eb895d mfc100u!AfxPreTranslateMessage+0x19 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\thrdcore.cpp @ 255]
0022fa00 61ecedfd mfc100u!AfxInternalPumpMessage+0x2d [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\thrdcore.cpp @ 178]
0022fa2c 61e6cae3 mfc100u!CWnd::RunModalLoop+0xc8 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp @ 4714]
0022fa78 00d41197 mfc100u!CDialog::DoModal+0x12d [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\dlgcore.cpp @ 638]
0022fbfc 61ede3c3 UITest!CUITestApp::InitInstance+0xf7 [d:\work\blog\debugsenaryolari\uitest\uitest.cpp @ 72]
0022fc10 00d42425 mfc100u!AfxWinMain+0x49 [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\winmain.cpp @ 37]
0022fca4 76143677 UITest!__tmainCRTStartup+0x158 [f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 547]
0022fcb0 77b49d42 kernel32!BaseThreadInitThunk+0xe
0022fcf0 77b49d15 ntdll!__RtlUserThreadStart+0x70
0022fd08 00000000 ntdll!_RtlUserThreadStart+0x1b

Yazıyı fazla uzatmadan tadında bırakalım. Gelecek yazılarımda sembol dosyaları ve sembol ayarları konusunu detaylandıracağım.
Bu arada debugging ile ilgili internette bir çok kaynak mevcut. Ancak, en temel ve yaralı kaynak "Debugging Tools for Windows"un help uygulamasıdır.

Hoşçakalın
-faik

 

Comments (0)

Skip to main content