SlideShare uma empresa Scribd logo
1 de 59
์„œ์šฐ์„์„œ์šฐ์„
http://www.debuglab.comhttp://www.debuglab.com ์šด์˜์ž์šด์˜์ž
(seaousak@hotmail.com)(seaousak@hotmail.com)
Go to Debugging World #3Go to Debugging World #3
- Managed Debugging, WinDbg- Managed Debugging, WinDbg
AgendaAgenda
๏ฌ Visual Studio .NET DebuggingVisual Studio .NET Debugging
๏ฌ Symbol ServerSymbol Server ์„ค์ •์„ค์ •
๏ฌ WinDBGWinDBG ์‚ฌ์šฉํ•˜๊ธฐ์‚ฌ์šฉํ•˜๊ธฐ
๏ฌ Debugging War StoryDebugging War Story
๏ฌ DebuggerDebugger ์˜ ์ž‘๋™ ์›๋ฆฌ์˜ ์ž‘๋™ ์›๋ฆฌ
๏ฌ Debugging Tips & TricksDebugging Tips & Tricks
๋ˆ„๊ตฌ๋ฅผ ์œ„ํ•œ ์›น ์บ์ŠคํŠธ์ธ๊ฐ€๋ˆ„๊ตฌ๋ฅผ ์œ„ํ•œ ์›น ์บ์ŠคํŠธ์ธ๊ฐ€
??๏ฌ VS .NETVS .NET ๋””๋ฒ„๊น…์ด ๊ถ๊ธˆํ•œ ๊ฐœ๋ฐœ์ž๋””๋ฒ„๊น…์ด ๊ถ๊ธˆํ•œ ๊ฐœ๋ฐœ์ž
๏ฌ ์‹ฌ๋ณผ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ž์‹ฌ๋ณผ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ž
๏ฌ ์‹ฌ๋ณผ ์„œ๋ฒ„ ์„ค์ •์— ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ๋Š”์‹ฌ๋ณผ ์„œ๋ฒ„ ์„ค์ •์— ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ๋Š”
๊ฐœ๋ฐœ์ž๊ฐœ๋ฐœ์ž
๏ฌ ์‹ฌ๋ณผ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋„์›€์„ ๋ฐ›์ง€ ๋ชปํ•˜๊ณ  ์žˆ์‹ฌ๋ณผ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋„์›€์„ ๋ฐ›์ง€ ๋ชปํ•˜๊ณ  ์žˆ
๋Š” ๊ฐœ๋ฐœ์ž๋Š” ๊ฐœ๋ฐœ์ž
๏ฌ WinDBGWinDBG ๋ฅผ ์‹คํ–‰ํ•ด๋„ ๋ญ๊ฐ€ ๋ญ”์ง€ ๋ชจ๋ฅด๊ฒ ๋ฅผ ์‹คํ–‰ํ•ด๋„ ๋ญ๊ฐ€ ๋ญ”์ง€ ๋ชจ๋ฅด๊ฒ 
๋‹ค๋Š” ๊ฐœ๋ฐœ์ž๋‹ค๋Š” ๊ฐœ๋ฐœ์ž
VS.NET DebuggingVS.NET Debugging
๏ฌ Managed?Managed?
๏ƒ˜ ๋ฉ”๋ชจ๋ฆฌ ์ถฉ๋Œ์ด๋‚˜ ๋ˆ„์ˆ˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๋“ค์ด ์ž๋ฉ”๋ชจ๋ฆฌ ์ถฉ๋Œ์ด๋‚˜ ๋ˆ„์ˆ˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๋“ค์ด ์ž
๋™ ํ•ด๊ฒฐ๋™ ํ•ด๊ฒฐ (Garbage Collector)(Garbage Collector)
๏ฌ ๊ธฐ๋ณธ์ ์ธ ์ž‘๋™ ๋ฐฉ์‹์€๊ธฐ๋ณธ์ ์ธ ์ž‘๋™ ๋ฐฉ์‹์€ VS 6.0VS 6.0 ์˜ ๋””๋ฒ„๊ฑฐ์˜ ๋””๋ฒ„๊ฑฐ
์™€ ๋™์ผ์™€ ๋™์ผ
๏ฌ ์Šคํฌ๋ฆฝํŠธ์Šคํฌ๋ฆฝํŠธ , Microsoft Active Server, Microsoft Active Server
Pages(ASP), Microsoft ASP.NET, .NET,Pages(ASP), Microsoft ASP.NET, .NET,
XMLXML ์›น ์„œ๋น„์Šค์›น ์„œ๋น„์Šค ,, ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ , SQL, SQL
๋””๋ฒ„๊น…์„ ํ•˜๋‚˜์˜๋””๋ฒ„๊น…์„ ํ•˜๋‚˜์˜ UIUI ์—์„œ ๋””๋ฒ„๊น… ๊ฐ€๋Šฅ์—์„œ ๋””๋ฒ„๊น… ๊ฐ€๋Šฅ !!
์ค‘๋‹จ์  ์‚ฌ์šฉ ํŒ์ค‘๋‹จ์  ์‚ฌ์šฉ ํŒ
๏ฌ ๊ณ ๊ธ‰ ์ค‘๋‹จ์ ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ํ•œ ๋‹จ๊ณ„์”ฉ๊ณ ๊ธ‰ ์ค‘๋‹จ์ ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ํ•œ ๋‹จ๊ณ„์”ฉ
์ฝ”๋“œ ์‹คํ–‰ ๋ช…๋ น์œผ๋กœ ๋””๋ฒ„๊น…์„ ์‹œ์ž‘ํ•˜๋Š”์ฝ”๋“œ ์‹คํ–‰ ๋ช…๋ น์œผ๋กœ ๋””๋ฒ„๊น…์„ ์‹œ์ž‘ํ•˜๋Š”
๊ฒƒ์ด ์ข‹์Œ๊ฒƒ์ด ์ข‹์Œ
๏ฌ ์ค‘๋‹จ์  ์ฐฝ์„ ๋„์›Œ ๋†“๊ณ  ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ฒƒ์ด์ค‘๋‹จ์  ์ฐฝ์„ ๋„์›Œ ๋†“๊ณ  ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ฒƒ์ด
์ข‹์Œ์ข‹์Œ
๏ฌ ํ˜ธ์ถœ ์Šคํƒ์—์„œ ์ค‘๋‹จ์  ์„ค์ • ๊ฐ€๋Šฅํ˜ธ์ถœ ์Šคํƒ์—์„œ ์ค‘๋‹จ์  ์„ค์ • ๊ฐ€๋Šฅ
๏ฌ ์ผํšŒ์„ฑ ์ค‘๋‹จ์ ์ผํšŒ์„ฑ ์ค‘๋‹จ์  : <: < ์ปค์„œ๊นŒ์ง€ ์‹คํ–‰์ปค์„œ๊นŒ์ง€ ์‹คํ–‰ >>
๏ฌ ํ•˜์œ„ ํ‘œํ˜„์‹์— ์ค‘๋‹จ์  ์„ค์ • ๊ฐ€๋Šฅํ•˜์œ„ ํ‘œํ˜„์‹์— ์ค‘๋‹จ์  ์„ค์ • ๊ฐ€๋Šฅ
๏ƒ˜ for ( i = 0 , m = 0 ; i < 10 ; i++ , m-- )for ( i = 0 , m = 0 ; i < 10 ; i++ , m-- )
์ค‘๋‹จ์  ์‚ฌ์šฉ ํŒ์ค‘๋‹จ์  ์‚ฌ์šฉ ํŒ
๏ฌ ์ƒˆ ์ค‘๋‹จ์  ์ฐฝ์—์„œ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ ์ง์ ‘์ƒˆ ์ค‘๋‹จ์  ์ฐฝ์—์„œ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ ์ง์ ‘
์ž…๋ ฅ์ž…๋ ฅ
๏ƒ˜ MyThreadClass.ThreadFunc ( C# )MyThreadClass.ThreadFunc ( C# )
๏ƒ˜ ์˜ค๋ฒ„๋กœ๋“œ๋œ ๋ฉ”์„œ๋“œ๋Š” ์ค‘๋‹จ์  ํ™œ์„ฑํ™” ์„ ํƒ์˜ค๋ฒ„๋กœ๋“œ๋œ ๋ฉ”์„œ๋“œ๋Š” ์ค‘๋‹จ์  ํ™œ์„ฑํ™” ์„ ํƒ
๊ฐ€๋Šฅ๊ฐ€๋Šฅ !!
๏ฌ ์ฐพ๊ธฐ ์ฝค๋ณด ์ƒ์ž์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ์ž…๋ ฅํ•œ์ฐพ๊ธฐ ์ฝค๋ณด ์ƒ์ž์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ์ž…๋ ฅํ•œ
ํ›„ํ›„ , <F9>, <F9> ๋ฅผ ๋ˆŒ๋Ÿฌ ์ค‘๋‹จ์  ์„ค์ • ๊ฐ€๋Šฅ๋ฅผ ๋ˆŒ๋Ÿฌ ์ค‘๋‹จ์  ์„ค์ • ๊ฐ€๋Šฅ
๏ฌ ํ•œ ์ค„์— ํ•˜๋‚˜ ์ด์ƒ์˜ ์ค‘๋‹จ์  ์„ค์ • ๊ฐ€๋Šฅํ•œ ์ค„์— ํ•˜๋‚˜ ์ด์ƒ์˜ ์ค‘๋‹จ์  ์„ค์ • ๊ฐ€๋Šฅ
Basic BPsBasic BPs
DemoDemo
์กฐ์‚ฌ์‹ ์ฐฝ์กฐ์‚ฌ์‹ ์ฐฝ
๏ฌ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ๋ณธ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ๋ณธ ! +! + ๋ชจ๋ชจ
๋“  ํ‘œํ˜„์‹์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋“  ํ‘œํ˜„์‹์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ
์Œ์Œ
๏ฌ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ๊ฐ€๋Šฅ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ๊ฐ€๋Šฅ !!
๏ƒ˜ ์—ฌ๋Ÿฌ ๊ตฌ์กฐ์ฒด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ ๊ฒ€์—ฌ๋Ÿฌ ๊ตฌ์กฐ์ฒด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ ๊ฒ€
์ฆ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ์ฆ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ
๊ฐ€๋Šฅ๊ฐ€๋Šฅ
ํŠน์„ฑ์„ ์ด์šฉํ•œ ๋””๋ฒ„๊น…ํŠน์„ฑ์„ ์ด์šฉํ•œ ๋””๋ฒ„๊น…
๏ฌ DebuggerStepThroughAttributeDebuggerStepThroughAttribute
๏ƒ˜ ๋ฌด์กฐ๊ฑด ํ”„๋กœ์‹œ์ € ๋‹จ์œ„ ์‹คํ–‰ ๋ช…๋ น ์ ์šฉ๋ฌด์กฐ๊ฑด ํ”„๋กœ์‹œ์ € ๋‹จ์œ„ ์‹คํ–‰ ๋ช…๋ น ์ ์šฉ
๏ƒ˜ getget ์ด๋‚˜์ด๋‚˜ setset ์•ก์„ธ์„œ์ฒ˜๋Ÿผ ํ•œ ์ค„์งœ๋ฆฌ ์ฝ”๋“œ๋ฅผ์•ก์„ธ์„œ์ฒ˜๋Ÿผ ํ•œ ์ค„์งœ๋ฆฌ ์ฝ”๋“œ๋ฅผ
์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉ
๏ฌ DebuggerHiddenAttributeDebuggerHiddenAttribute
๏ƒ˜ ์ค‘๋‹จ์  ์„ค์ • ๋ถˆ๊ฐ€๋Šฅ์ค‘๋‹จ์  ์„ค์ • ๋ถˆ๊ฐ€๋Šฅ
๏ƒ˜ ๋ฉ”์„œ๋“œ๋ฅผ ์™„์ „ํžˆ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋‹ค๋ฉ”์„œ๋“œ๋ฅผ ์™„์ „ํžˆ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋‹ค ..
๏ƒ˜ Anti-DebuggingAnti-Debugging ๊ธฐ์ˆ ์€ ์•„๋‹ˆ๋‹ค๊ธฐ์ˆ ์€ ์•„๋‹ˆ๋‹ค ..
๏‚ง ์™œ์™œ ?? ์ด ํŠน์„ฑ์€์ด ํŠน์„ฑ์€ VS.NETVS.NET ๋””๋ฒ„๊ฑฐ์™€๋””๋ฒ„๊ฑฐ์™€ DBGCLR.EXEDBGCLR.EXE
์—์„œ ์‚ฌ์šฉํ•˜์ง€๋งŒ์—์„œ ์‚ฌ์šฉํ•˜์ง€๋งŒ CORDBG.EXECORDBG.EXE ์—์„œ๋Š” ์‚ฌ์šฉํ•˜์ง€์—์„œ๋Š” ์‚ฌ์šฉํ•˜์ง€
์•Š์Œ์•Š์Œ
ํ˜ผํ•ฉ ๋ชจ๋“œ ๋””๋ฒ„๊น…ํ˜ผํ•ฉ ๋ชจ๋“œ ๋””๋ฒ„๊น…
๏ฌ VS.NETVS.NET ๋””๋ฒ„๊ฑฐ๋Š”๋””๋ฒ„๊ฑฐ๋Š” NativeNative ์ฝ”๋“œ์™€์ฝ”๋“œ์™€ ManagedManaged
์ฝ”๋“œ๋ฅผ ๋™์‹œ์— ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ์Œ์ฝ”๋“œ๋ฅผ ๋™์‹œ์— ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ์Œ
๏ฌ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์ž ๋”ฐ๋กœ ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์ž ๋”ฐ๋กœ ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ
๏ฌ ์žฅ์ ์žฅ์ 
๏ƒ˜ ํ•˜๋‚˜์˜ํ•˜๋‚˜์˜ UIUI ์—์„œ ๋ชจ๋“  ์ž‘์—…์„ ์ง„ํ–‰์—์„œ ๋ชจ๋“  ์ž‘์—…์„ ์ง„ํ–‰
๏ฌ ๋‹จ์ ๋‹จ์ 
๏ƒ˜ ๋งค์šฐ ๋Š๋ฆด ์ˆ˜ ์žˆ๋‹ค๋งค์šฐ ๋Š๋ฆด ์ˆ˜ ์žˆ๋‹ค ..
๏ƒ˜ ๋ฐ์ดํ„ฐ ์ค‘๋‹จ์  ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋ฐ์ดํ„ฐ ์ค‘๋‹จ์  ์‚ฌ์šฉ ๋ถˆ๊ฐ€
๏ƒ˜ ๋””๋ฒ„๊ฑฐ๊ฐ€๋””๋ฒ„๊ฑฐ๊ฐ€ NativeNative ์ฝ”๋“œ ์ชฝ์— ์œ„์น˜ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค์ฝ”๋“œ ์ชฝ์— ์œ„์น˜ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค
๋ฉด๋ฉด ,, ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๋ฏธ๋‹ˆ ๋คํ”„ ์ƒ์„ฑ ๋ถˆ๊ฐ€ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๋ฏธ๋‹ˆ ๋คํ”„ ์ƒ์„ฑ ๋ถˆ๊ฐ€
๏ฌ ํŒํŒ
๏ƒ˜ ์˜ต์…˜์—์„œ โ€˜๋ณ€์ˆ˜ ์ฐฝ์—์„œ ์†์„ฑ ํ™•์ธ ํ—ˆ์šฉโ€™์„์˜ต์…˜์—์„œ โ€˜๋ณ€์ˆ˜ ์ฐฝ์—์„œ ์†์„ฑ ํ™•์ธ ํ—ˆ์šฉโ€™์„
์‹ฌ๋ณผ์‹ฌ๋ณผ (Symbol)(Symbol)
๏ฌ .dll.dll ์ด๋‚˜์ด๋‚˜ .exe.exe ์ด ์ž‘์„ฑ๋  ๋•Œ ์ƒ์„ฑ๋จ์ด ์ž‘์„ฑ๋  ๋•Œ ์ƒ์„ฑ๋จ
๏ฌ ํ™•์žฅ์ž๊ฐ€ํ™•์žฅ์ž๊ฐ€ .dbg.dbg ํ˜น์€ํ˜น์€ .pdb.pdb
๏ฌ ํ•จ์ˆ˜ ์ด๋ฆ„๊ณผ ๋ณ€์ˆ˜ ์ด๋ฆ„๊ณผ ๊ฐ™์€ ์‹ฌ๋ณผ ์ •ํ•จ์ˆ˜ ์ด๋ฆ„๊ณผ ๋ณ€์ˆ˜ ์ด๋ฆ„๊ณผ ๊ฐ™์€ ์‹ฌ๋ณผ ์ •
๋ณด ํฌํ•จ๋ณด ํฌํ•จ
๏ฌ WindowsWindows ๋””๋ฒ„๊ฑฐ์™€๋””๋ฒ„๊ฑฐ์™€ Microsoft VisualMicrosoft Visual
Studio .NETStudio .NET ๋””๋ฒ„๊ฑฐ์™€ ๊ฐ™์€ ๋””๋ฒ„๊ฑฐ๊ฐ€๋””๋ฒ„๊ฑฐ์™€ ๊ฐ™์€ ๋””๋ฒ„๊ฑฐ๊ฐ€
ํ˜ธ์ถœ ์Šคํƒ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ˜ธ์ถœ ์Šคํƒ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ
SymchkSymchk ํˆดํˆด
๏ฌ Debugging Tools for WindowsDebugging Tools for Windows ์— ํฌํ•จ์— ํฌํ•จ
๋˜์–ด ์žˆ์Œ๋˜์–ด ์žˆ์Œ ((http://www.microsoft.com/http://www.microsoft.com/
ddkddk/debugging//debugging/))
๏ฌ ๋ช…๋ น์ค„์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅ๋ช…๋ น์ค„์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅ (( ๊ฒฝ๋กœ ์„ค์ • ํ•„์š”๊ฒฝ๋กœ ์„ค์ • ํ•„์š” ))
๏ฌ ์˜ˆ์˜ˆ
๏ƒ˜ symchk /r c:windowssystem32 /ssymchk /r c:windowssystem32 /s
srv*c:ossymbols*http://msdl.microsoft.cosrv*c:ossymbols*http://msdl.microsoft.co
m/download/symbolsm/download/symbols
OSOS ์‹ฌ๋ณผ ์„œ๋ฒ„์‹ฌ๋ณผ ์„œ๋ฒ„
๏ฌ VS 7.1VS 7.1 ๋ถ€ํ„ฐ ์ง€์›๋ถ€ํ„ฐ ์ง€์›
๏ฌ 7.07.0 ์—์„œ๋„ ๊ฐ€๋Šฅ์—์„œ๋„ ๊ฐ€๋Šฅ
๏ƒ˜ symsrv.dllsymsrv.dll ๋‹ค์šด๋กœ๋“œ๋‹ค์šด๋กœ๋“œ
๏ƒ˜ symsrv.dllsymsrv.dll ์„์„ devenv.exedevenv.exe ํด๋”์— ๋ณต์‚ฌํด๋”์— ๋ณต์‚ฌ
๏ƒ˜ โ€œโ€œsrv*โ€ -> โ€œsymsrv*symsrv.dll*โ€srv*โ€ -> โ€œsymsrv*symsrv.dll*โ€
๏ฌ ์‹ฌ๋ณผ ์ €์žฅ์†Œ๋กœ๋ถ€ํ„ฐ ์ž๋™์œผ๋กœ์‹ฌ๋ณผ ์ €์žฅ์†Œ๋กœ๋ถ€ํ„ฐ ์ž๋™์œผ๋กœ PDBPDB ํŒŒ์ผ ๊ฒ€์‚ฌํŒŒ์ผ ๊ฒ€์‚ฌ
๏ฌ ์ž๋™์œผ๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ ๊ฒ€์‚ฌ์ž๋™์œผ๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ ๊ฒ€์‚ฌ
๏ฌ ์‹ฌ๋ณผ ๊ฒฝ๋กœ ๋ฌธ๋ฒ•์€ ๋‹ค์†Œ ๋‚œํ•ด์‹ฌ๋ณผ ๊ฒฝ๋กœ ๋ฌธ๋ฒ•์€ ๋‹ค์†Œ ๋‚œํ•ด
๏ฌ ์‹ฌ๋ณผ ์„œ๋ฒ„ ์„ค์ • ํ›„์‹ฌ๋ณผ ์„œ๋ฒ„ ์„ค์ • ํ›„ ,, ์‹ฌ๋ณผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ธฐ ๋•Œ์‹ฌ๋ณผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ธฐ ๋•Œ
๋ฌธ์—๋ฌธ์— ,, ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘์ด ๋‹ค์†Œ ์ง€์—ฐ๋จํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘์ด ๋‹ค์†Œ ์ง€์—ฐ๋จ
๏ƒ˜ symchksymchk /r/r c:windowssystem32 /sc:windowssystem32 /s
SRV*c:ossymbols*http://msdl.microsoft.com/dowSRV*c:ossymbols*http://msdl.microsoft.com/dow
nload/symbolsnload/symbols
OSOS ์‹ฌ๋ณผ ์„œ๋ฒ„ ๊ฒฝ๋กœ ์ง€์ • ๋ฐฉ์‹ฌ๋ณผ ์„œ๋ฒ„ ๊ฒฝ๋กœ ์ง€์ • ๋ฐฉ
๋ฒ•๋ฒ•๏ฌ srv*[srv*[ ๋กœ์ปฌ์บ์‹œ๋กœ์ปฌ์บ์‹œ *]*] ์›๊ฒฉ์ €์žฅ์†Œ์œ„์น˜์›๊ฒฉ์ €์žฅ์†Œ์œ„์น˜
๏ฌ Project/Properties/Symbol PathProject/Properties/Symbol Path ์— ์ž…๋ ฅ์— ์ž…๋ ฅ
ํ•œ๋‹คํ•œ๋‹ค ..
๏ฌ minidumpminidump ์‚ฌ์šฉ์‹œ์—๋Š”์‚ฌ์šฉ์‹œ์—๋Š” MODPATH=MODPATH= ์ธ์ธ
์ž๋กœ ๋„ฃ๋Š”๋‹ค์ž๋กœ ๋„ฃ๋Š”๋‹ค ..
๏ฌ ๋กœ์ปฌ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๋ฒˆ ๋””๋ฒ„๊น…์‹œ๋กœ์ปฌ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๋ฒˆ ๋””๋ฒ„๊น…์‹œ
์— ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค์— ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค ..
๏ฌ ์›๊ฒฉ ๊ฒฝ๋กœ๋Š” ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ ๋ฐ ์ธํ„ฐ๋„ท์›๊ฒฉ ๊ฒฝ๋กœ๋Š” ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ ๋ฐ ์ธํ„ฐ๋„ท
์ฃผ์†Œ๋กœ ์ง€์ •ํ•œ๋‹ค์ฃผ์†Œ๋กœ ์ง€์ •ํ•œ๋‹ค ..
OSOS ์‹ฌ๋ณผ ์„œ๋ฒ„ ๊ฒฝ๋กœ ์ง€์ • ์ˆœ์‹ฌ๋ณผ ์„œ๋ฒ„ ๊ฒฝ๋กœ ์ง€์ • ์ˆœ
์„œ์„œ๏ฌ ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•  ์ปดํ“จํ„ฐ ์„ค์ •์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•  ์ปดํ“จํ„ฐ ์„ค์ •
๏ƒ˜ ์˜ˆ์˜ˆ )) SYMBOLSSYMBOLS
๏ฌ OSSYMBOLSOSSYMBOLS ์ด๋ฆ„์œผ๋กœ ๊ณต์œ  ํด๋” ์ƒ์„ฑ์ด๋ฆ„์œผ๋กœ ๊ณต์œ  ํด๋” ์ƒ์„ฑ
๏ฌ Debugging Tools for WindowsDebugging Tools for Windows ์„ค์น˜ ํ›„์„ค์น˜ ํ›„ ,,
PATHPATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ๋””๋ ‰ํ„ฐ๋ฆฌ ์ถ”๊ฐ€ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ๋””๋ ‰ํ„ฐ๋ฆฌ ์ถ”๊ฐ€
๏ฌ ํ”„๋ฝ์‹œ ์„œ๋ฒ„ ํ™˜๊ฒฝ์ด๋ผ๋ฉดํ”„๋ฝ์‹œ ์„œ๋ฒ„ ํ™˜๊ฒฝ์ด๋ผ๋ฉด
_NT_SYMBOL_PROXY_NT_SYMBOL_PROXY ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
๏ฌ _NT_SYMBOL_PATH_NT_SYMBOL_PATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
์ œํ’ˆ ์‹ฌ๋ณผ ์„œ๋ฒ„ ์„ค์ •์ œํ’ˆ ์‹ฌ๋ณผ ์„œ๋ฒ„ ์„ค์ •
๏ฌ ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•  ์ปดํ“จํ„ฐ ์„ค์ •์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•  ์ปดํ“จํ„ฐ ์„ค์ •
๏ƒ˜ ์˜ˆ์˜ˆ )) SYMBOLSSYMBOLS
๏ฌ PRODUCTSYMBOLSPRODUCTSYMBOLS ์ด๋ฆ„์œผ๋กœ ๊ณต์œ  ํด์ด๋ฆ„์œผ๋กœ ๊ณต์œ  ํด
๋” ์ƒ์„ฑ๋” ์ƒ์„ฑ
๏ฌ symstore add /r /f d:build*.* /ssymstore add /r /f d:build*.* /s
SYMBOLSproductsymbols /t โ€œMyAppโ€SYMBOLSproductsymbols /t โ€œMyAppโ€
/v โ€œBuild 632โ€ /c โ€œ2004/09/14 Daily/v โ€œBuild 632โ€ /c โ€œ2004/09/14 Daily
Buildโ€Buildโ€
๏ฌ ์‚ญ์ œ ์‹œ์—๋Š” ํŠธ๋žœ์žญ์…˜์‚ญ์ œ ์‹œ์—๋Š” ํŠธ๋žœ์žญ์…˜ IDID ์‚ฌ์šฉ์‚ฌ์šฉ
๏ƒ˜ symstore del /I 00000009 /ssymstore del /I 00000009 /s
symbolsproductsymbolssymbolsproductsymbols
SymbolSymbol ์„œ๋ฒ„ ์„ค์ •์„œ๋ฒ„ ์„ค์ •
NotepadNotepad ๋””๋ฒ„๊น…๋””๋ฒ„๊น…
OSSymbolTestOSSymbolTest
ProductSymbolTestProductSymbolTest
DemoDemo
์ฐธ๊ณ ์ž๋ฃŒ์ฐธ๊ณ ์ž๋ฃŒ
๏ฌ HOW TO: Use a Symbol Server with theHOW TO: Use a Symbol Server with the
Visual Studio .NET DebuggerVisual Studio .NET Debugger
๏ƒ˜ http://http://support.microsoft.comsupport.microsoft.com/?id=319037/?id=319037
๏ฌ Bugslalyer : Symbols and Crash DumpsBugslalyer : Symbols and Crash Dumps
๏ƒ˜ http://msdn.microsoft.com/msdnmag/issues/0http://msdn.microsoft.com/msdnmag/issues/0
๏ฌ WinDBGWinDBG
๏ƒ˜ SymbolsSymbols ์„น์…˜์„น์…˜
WinDBGWinDBG ์‚ฌ์šฉ์‚ฌ์šฉ
๏ฌ WinDBGWinDBG ๋ฌธ์„œ ํ•„๋…๋ฌธ์„œ ํ•„๋…
๏ฌ WinDBGWinDBG ๊ธฐ๋Šฅ๊ธฐ๋Šฅ
๏ƒ˜ WinDBGWinDBG ์„ค์ • ๋ฐ ์‚ฌ์šฉ์„ค์ • ๋ฐ ์‚ฌ์šฉ
๏‚ง WinDBGWinDBG ๋Š” ์‹ฌ๋ณผ์˜ ๋กœ๋“œ๋˜๋Š” ๊ฒฝ๋กœ์„ค์ •์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ฐฉ๋Š” ์‹ฌ๋ณผ์˜ ๋กœ๋“œ๋˜๋Š” ๊ฒฝ๋กœ์„ค์ •์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ฐฉ
๋ฒ•์ œ๊ณต๋ฒ•์ œ๊ณต
๏‚ง ๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค ๋””๋ฒ„๊น…๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค ๋””๋ฒ„๊น…
๏‚ง BreakPointBreakPoint ์™€์™€ exceptionexception ์ œ์–ด์ œ์–ด
๏‚ง WinDBG commandsWinDBG commands
๏ƒ˜ ๋คํ”„ํŒŒ์ผ ๋””๋ฒ„๊น…๋คํ”„ํŒŒ์ผ ๋””๋ฒ„๊น…
๏‚ง VS.NET :VS.NET : ๊ฐœ๋ฐœํ•œ ์ปดํ“จํ„ฐ์—์„œ ์ƒ์„ฑ๋œ ๋คํ”„ํŒŒ์ผ๋งŒ ์ž‘๋™๊ฐœ๋ฐœํ•œ ์ปดํ“จํ„ฐ์—์„œ ์ƒ์„ฑ๋œ ๋คํ”„ํŒŒ์ผ๋งŒ ์ž‘๋™
๏‚ง WinDBG :WinDBG : ๊ณ ๊ฐ์œผ๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ๋คํ”„ํŒŒ์ผ๋„ ๊ฐ€๋Šฅ๊ณ ๊ฐ์œผ๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ๋คํ”„ํŒŒ์ผ๋„ ๊ฐ€๋Šฅ
๏ƒ˜ SOSSOS
๏‚ง ManagedManaged ์™€์™€ nativenative ๊ฐ€ ํ˜ผํ•ฉ๋œ๊ฐ€ ํ˜ผํ•ฉ๋œ applicationapplication ์˜ ์œ ์ผํ•œ ๋””์˜ ์œ ์ผํ•œ ๋””
๋ฒ„๊น… ๋ฐฉ๋ฒ•๋ฒ„๊น… ๋ฐฉ๋ฒ•
WinDBGWinDBG ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€ ??
๏ฌ ํƒ„์ƒ๋ฐฐ๊ฒฝํƒ„์ƒ๋ฐฐ๊ฒฝ : OS: OS ์˜์˜ debuggingdebugging ์ž๋™ํ™”๋ฅผ ์œ„ํ•จ์ž๋™ํ™”๋ฅผ ์œ„ํ•จ
๏ฌ VS.NETVS.NET ๋””๋ฒ„๊ฑฐ๋””๋ฒ„๊ฑฐ , WinDBG, WinDBG
๏ƒ˜ VS.NETVS.NET ๋””๋ฒ„๊ฑฐ๋Š” ์‘์šฉ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๋””๋ฒ„๊ฑฐ๋Š” ์‘์šฉ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž
๏ƒ˜ WinDBGWinDBG ๋Š” ์šด์˜์ฒด๊ณ„๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•จ๋Š” ์šด์˜์ฒด๊ณ„๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•จ
๏‚ง Device driverDevice driver ๋ฐ๋ฐ user mode native appuser mode native app ์—๋„ ๋ง‰๊ฐ•ํ•œ ๊ธฐ์—๋„ ๋ง‰๊ฐ•ํ•œ ๊ธฐ
๋Šฅ ์‚ฌ์šฉ๊ฐ€๋Šฅ๋Šฅ ์‚ฌ์šฉ๊ฐ€๋Šฅ
๏‚ง ๋‹ค์–‘ํ•œ๋‹ค์–‘ํ•œ processprocess ์ •๋ณด์ •๋ณด ->-> ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ์š”์ธ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ์š”์ธ ??
๏‚ง Memory breakpointMemory breakpoint
๏‚ง Mini-dumpMini-dump ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ํ–ฅ์ƒ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ œ๊ณต๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ํ–ฅ์ƒ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ œ๊ณต
๏‚ง ์™„์ „ํ•œ ์šด์˜์ฒด์ œ์˜์™„์ „ํ•œ ์šด์˜์ฒด์ œ์˜ heap, processheap, process ์˜์˜ handlehandle ์ •๋ณด๋ฅผ ๋ณผ์ •๋ณด๋ฅผ ๋ณผ
์ˆ˜ ์žˆ์Œ์ˆ˜ ์žˆ์Œ
๏‚ง Install dirInstall dir ์˜์˜ dubugger.chmdubugger.chm ์˜ ๋„์›€๋ง ํŒŒ์ผ์˜ ๋„์›€๋ง ํŒŒ์ผ
๏‚ง UIUI ๋Š” ๋‹จ์ˆœํžˆ๋Š” ๋‹จ์ˆœํžˆ DBGENG.DLLDBGENG.DLL ์„ ๊ฐ์‹ธ๋Š” ์ •๋„์ด๋ฉฐ์„ ๊ฐ์‹ธ๋Š” ์ •๋„์ด๋ฉฐ
NTSD(ms symbolic debugger)NTSD(ms symbolic debugger) ์™€ ๋น„์Šทํ•˜๋ฏ€๋กœ์™€ ๋น„์Šทํ•˜๋ฏ€๋กœ winDBGwinDBG ๋ฅผ๋ฅผ
์ตํžˆ๋ฉด์ตํžˆ๋ฉด NTSDNTSD ๋„ ์‰ฝ๊ฒŒ ์ตํž ์ˆ˜ ์žˆ์Œ๋„ ์‰ฝ๊ฒŒ ์ตํž ์ˆ˜ ์žˆ์Œ
WinDBGWinDBG ์„ค์น˜์„ค์น˜
๏ฌ Download pageDownload page
๏ƒ˜ http://www.microsoft.com/whdc/devtools/debhttp://www.microsoft.com/whdc/devtools/deb
๏ฌ Overview pageOverview page
๏ƒ˜ http://www.microsoft.com/http://www.microsoft.com/
whdc/devtools/debugging/default.mspxwhdc/devtools/debugging/default.mspx
WinDBGWinDBG ์„ค์ •์„ค์ •
๏ฌ VS.NET symbol serverVS.NET symbol server
๏ƒ˜ VS.NET symbolVS.NET symbol ์„œ๋ฒ„ ์„ค์ •์„œ๋ฒ„ ์„ค์ • -> WinDBG-> WinDBG ๋Š” ์ž๋™์œผ๋Š” ์ž๋™์œผ
๋กœ๋กœ _NT_SYMBOL_PATH_NT_SYMBOL_PATH ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๊ธฐ๋ณธ ์‹ฌ๋ณผ๊ฒฝํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๊ธฐ๋ณธ ์‹ฌ๋ณผ๊ฒฝ
๋กœ๋กœ ์‚ฌ์šฉ๋กœ๋กœ ์‚ฌ์šฉ
๏ƒ˜ ๊ณตํ†ต ์†Œ์ŠคํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ์ž‘์—… ํ•„์š”๊ณตํ†ต ์†Œ์ŠคํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ์ž‘์—… ํ•„์š”
๏‚ง _NT_SOURCE_PATH_NT_SOURCE_PATH ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋“ฑ๋กํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋“ฑ๋ก
๏‚ง WinDBGWinDBG ๋ฅผ ์—ด๊ณ ๋ฅผ ์—ด๊ณ  source search pathsource search path ์— ํ•„์š”์ •๋ณด ์ž…๋ ฅ์— ํ•„์š”์ •๋ณด ์ž…๋ ฅ
๏ƒ˜ WinDBGWinDBG ๊ฐ€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ์‹คํ–‰ํŒŒ์ผ๊ฐ€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ์‹คํ–‰ํŒŒ์ผ
์ด๋ฏธ์ง€ ๊ฒฝ๋กœ ์„ค์ •์ด๋ฏธ์ง€ ๊ฒฝ๋กœ ์„ค์ •
๏‚ง File-Image File PathFile-Image File Path ๋ฅผ ์ด์šฉํ•ด ์„ค์ •๋ฅผ ์ด์šฉํ•ด ์„ค์ • :: ๊ฐœ๋ฐœ์ž๊ฐœ๋ฐœ์ž ,, ๊ณ ๊ฐ์˜๊ณ ๊ฐ์˜
dumpdump
๏ฌ CommandCommand ์ฐฝ์— ๊ธฐ๋ณธ ์›Œํฌ์ŠคํŽ˜์ด์Šค์— ์ƒ‰์ƒ์ •์ฐฝ์— ๊ธฐ๋ณธ ์›Œํฌ์ŠคํŽ˜์ด์Šค์— ์ƒ‰์ƒ์ •
๋ณด ์ž…๋ ฅ๋ณด ์ž…๋ ฅ
๏ƒ˜ ์—„์ฒญ๋‚œ ์ •๋ณด์ค‘์—์—„์ฒญ๋‚œ ์ •๋ณด์ค‘์— TRACE, OutputDebugStringTRACE, OutputDebugString ๋“ฑ๋“ฑ
์˜ ์ •๋ณด๋งŒ์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์˜ ์ •๋ณด๋งŒ์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—… -> Debuggee-> Debuggee
WinDBG commandsWinDBG commands
๏ฌ WinDBG commandsWinDBG commands ์ข…๋ฅ˜์ข…๋ฅ˜ // ํŠน์ง•ํŠน์ง•
๏ƒ˜ ์ผ๋ฐ˜๋ช…๋ น์ผ๋ฐ˜๋ช…๋ น
๏‚ง ๋””๋ฒ„๊ธฐ ์ œ์–ด๋””๋ฒ„๊ธฐ ์ œ์–ด :: ์ถ”์ •์ถ”์ • ,, ๋‹จ๊ณ„์‹คํ–‰๋‹จ๊ณ„์‹คํ–‰ ,, ๋ฉ”๋ชจ๋ฆฌ ํ™•์ธ๋“ฑ๋ฉ”๋ชจ๋ฆฌ ํ™•์ธ๋“ฑ
๋“ฑ๋“ฑ
๏ƒ˜ ๋ฉ”ํƒ€๋ช…๋ น๋ฉ”ํƒ€๋ช…๋ น (.(. ๋ช…๋ น๋ช…๋ น ))
๏‚ง ๋””๋ฒ„๊ฑฐ์™€ ๋””๋ฒ„๊น… ๋ฐฉ๋ฒ• ์ œ์–ด๋””๋ฒ„๊ฑฐ์™€ ๋””๋ฒ„๊น… ๋ฐฉ๋ฒ• ์ œ์–ด :: ๋กœ๊ทธํŒŒ์ผ์ƒ์„ฑ๋กœ๊ทธํŒŒ์ผ์ƒ์„ฑ ,,
ํ”„๋กœ์„ธ์Šค ์—ฐ๊ฒฐํ”„๋กœ์„ธ์Šค ์—ฐ๊ฒฐ ,, ๋คํ”„ํŒŒ์ผ ์ž‘์„ฑ ๋“ฑ๋“ฑ๋คํ”„ํŒŒ์ผ ์ž‘์„ฑ ๋“ฑ๋“ฑ
๏ƒ˜ ํ™•์žฅ๋ช…๋ นํ™•์žฅ๋ช…๋ น
๏‚ง ๋””๋ฒ„๊ธฐ๋ฅผ ์ œ์–ดํ•˜๊ณ  ํ˜„์žฌ ์ƒํƒœ๋ถ„์„๋””๋ฒ„๊ธฐ๋ฅผ ์ œ์–ดํ•˜๊ณ  ํ˜„์žฌ ์ƒํƒœ๋ถ„์„ :: ๋คํ”„์ฒ˜๋ฆฌ๋คํ”„์ฒ˜๋ฆฌ ,,
์ž„๊ณ„์„ธ์…˜ ๋ถ„์„์ž„๊ณ„์„ธ์…˜ ๋ถ„์„ ,, ์ถฉ๋Œ๋ถ„์„ ๋“ฑ๋“ฑ์ถฉ๋Œ๋ถ„์„ ๋“ฑ๋“ฑ
๏ƒ˜ ์ผ๋ฐ˜์ผ๋ฐ˜ ,, ๋ฉ”ํƒ€ ๋ช…๋ น์€ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ณ„๋ฉ”ํƒ€ ๋ช…๋ น์€ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ณ„ X,X, ํ™•์žฅํ™•์žฅ
๋ช…๋ น ๊ตฌ๋ถ„๋ช…๋ น ๊ตฌ๋ถ„
์‹ฌ๋ณผ ๋กœ๋“œ์‹ฌ๋ณผ ๋กœ๋“œ
๏ฌ WinDGBWinDGB ์‹ฌ๋ณผ์ฒ˜๋ฆฌ ์šฐ์ˆ˜ํ•จ์‹ฌ๋ณผ์ฒ˜๋ฆฌ ์šฐ์ˆ˜ํ•จ
๏ƒ˜ VS.NETVS.NET ๋ณด๋‹ค ์‹ฌ๋ณผ์ฒ˜๋ฆฌ ๋›ฐ์–ด๋‚˜๋ฉฐ๋ณด๋‹ค ์‹ฌ๋ณผ์ฒ˜๋ฆฌ ๋›ฐ์–ด๋‚˜๋ฉฐ VS.NETVS.NET
์€ ๋กœ๋“œ๋œ ์‹ฌ๋ณผ์„ ํ™•์ธํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ•„์ž์€ ๋กœ๋“œ๋œ ์‹ฌ๋ณผ์„ ํ™•์ธํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ•„์ž
๋Š”๋Š” VS.NETVS.NET ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์—์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— WinDBGWinDBG ๋ฅผ๋ฅผ
์ด์šฉํ•œ๋‹ค๊ณ ํ•จ์ด์šฉํ•œ๋‹ค๊ณ ํ•จ (winDBG(winDBG ์˜์˜ lmlm ์œผ๋กœ ํ™•์ธ์œผ๋กœ ํ™•์ธ
๊ฐ€๋Šฅ๊ฐ€๋Šฅ ))
๏‚ง Lm v m : v-Lm v m : v- ์ž์„ธํ•œ ์ •๋ณด์ž์„ธํ•œ ์ •๋ณด , m-module, m-module
๏ƒ˜ AnytimeAnytime
๏ƒ˜ Lazy symbol loading(save memory)Lazy symbol loading(save memory)
๏‚ง Ex) kernel debuggingEx) kernel debugging ์‹œ์‹œ NTDLL.DLLNTDLL.DLL ๋งŒ ๋กœ๋”ฉ๋งŒ ๋กœ๋”ฉ
๏ƒ˜ LD(load symbol) :LD(load symbol) : ๊ฐ•์ œ ๋กœ๋”ฉ๊ฐ•์ œ ๋กœ๋”ฉ
๏‚ง ์‹คํ–‰ํŒŒ์ผ์„์‹คํ–‰ํŒŒ์ผ์„ loadload ํ•  ๊ฒฝ์šฐํ•  ๊ฒฝ์šฐ buildbuild ๋ฅผ๋ฅผ /checksum/checksum
์œผ๋กœ ํ•˜์—ฌ์•ผ ํ•จ์œผ๋กœ ํ•˜์—ฌ์•ผ ํ•จ
Process & ThreadProcess & Thread
๏ฌ Multi-process debuggingMulti-process debugging
๏ƒ˜ VS.NET, WinDBGVS.NET, WinDBG ๋ชจ๋‘ ๊ฐ€๋Šฅ๋ชจ๋‘ ๊ฐ€๋Šฅ
๏ƒ˜ WinDBGWinDBG ๊ฐ€๊ฐ€ process controlprocess control ์ด ๋” ์šฐ์ˆ˜ํ•จ์ด ๋” ์šฐ์ˆ˜ํ•จ
๏ฌ CommandsCommands
๏ƒ˜ .childdbg option.childdbg option ๋ณ€๊ฒฝ๋ณ€๊ฒฝ
๏ƒ˜ | : process status| : process status
๏‚ง . :. : ํ™œ์„ฑํ™”๋œํ™œ์„ฑํ™”๋œ processprocess
๏‚ง # : WinDBG# : WinDBG ์—์„œ ์‹คํ–‰์„ ์ค‘๋‹จํ•˜๊ธฐ์œ„ํ•ด ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ์—์„œ ์‹คํ–‰์„ ์ค‘๋‹จํ•˜๊ธฐ์œ„ํ•ด ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ
processprocess
๏‚ง ~ : thread status~ : thread status
๏ƒ˜ .create c:winntsystem32sol.exe.create c:winntsystem32sol.exe
๏ƒ˜ .attach : tlist->.attach : tlist-> ์‹คํ–‰ ์ค‘์‹คํ–‰ ์ค‘ process attachprocess attach
๏ฌ Child process debugging exampleChild process debugging example
์‹คํ–‰์‹คํ–‰ ,, ๋‹จ๊ณ„ ์‹คํ–‰๋‹จ๊ณ„ ์‹คํ–‰ ,, ์ถ”์ ์ถ”์ 
๏ฌ WinDBGWinDBG ์˜์˜ G(go), T(trace), P(step)G(go), T(trace), P(step)
๏ƒ˜ F5F5 ๋กœ ์‹คํ–‰์€ ํ•˜๊ฑฐ๋‚˜๋กœ ์‹คํ–‰์€ ํ•˜๊ฑฐ๋‚˜ shift + F11shift + F11 ๋“ฑ์˜ ๋‹จ์ถ•ํ‚ค๋Š”๋“ฑ์˜ ๋‹จ์ถ•ํ‚ค๋Š” g,g,
tt ๋“ฑ์˜ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ ๋ฟ์ž„๋“ฑ์˜ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ ๋ฟ์ž„
๏ฌ ๋ฐ์ดํ„ฐ ์ถ”์ ๋ฐ์ดํ„ฐ ์ถ”์  ,, ์กฐ์‚ฌ์กฐ์‚ฌ (p443)(p443)
๏ƒ˜ DV :DV : ๋ณ€์ˆ˜์˜ ๊ฐ’๋ณ€์ˆ˜์˜ ๊ฐ’ , DT :, DT : ๋ณ€์ˆ˜๋ณ€์ˆ˜ typetype
๏ƒ˜ ์„ฑ๋Šฅ๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒฝ์šฐ ์˜ˆ๋ฅผ ๋“ค์–ด์„ฑ๋Šฅ๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒฝ์šฐ ์˜ˆ๋ฅผ ๋“ค์–ด
STLSTL ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ™์€ ๊ฒฝ์šฐ debugdebug ๊ฐ€ ์–ด๋ ค์›€๊ฐ€ ์–ด๋ ค์›€ -> wt(trace and-> wt(trace and
watch data)watch data) ๋ช…๋ น์–ด์— ์‹œ๊ฐ„์„ ํˆฌ์žํ•ด ์—ฐ๊ตฌํ•ด์•ผ ํ•จ๋ช…๋ น์–ด์— ์‹œ๊ฐ„์„ ํˆฌ์žํ•ด ์—ฐ๊ตฌํ•ด์•ผ ํ•จ ,,
์ฆ‰์ฆ‰ wtwt ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด์„œ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด์„œ kernel modekernel mode ๋ณ€ํ™˜์ด ์–ผ๋ณ€ํ™˜์ด ์–ผ
๋งˆ๋‚˜ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋งˆ๋‚˜ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์—ฌ๋ถ€ (( ์„ฑ๋Šฅ์˜ ํ•ต์‹ฌ์„ฑ๋Šฅ์˜ ํ•ต์‹ฌ )) ๋ฅผ ์ธก์ •ํ•˜์—ฌ๋ฅผ ์ธก์ •ํ•˜์—ฌ
kmkm ๋ณ€ํ™˜์„ ํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ•๊ตฌ๋ณ€ํ™˜์„ ํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ•๊ตฌ ->-> ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ฑ๋Šฅ ํ–ฅ์ƒ
๏ƒ˜ ๋กœ๊ทธ๋ฅผ ์ด์šฉํ•œ๋กœ๊ทธ๋ฅผ ์ด์šฉํ•œ dump : .logopen(filename) ,dump : .logopen(filename) ,
.logappend, .logclose.logappend, .logclose ๋“ฑ์˜๋“ฑ์˜ metameta ๋ช…๋ น์„ ์ด์šฉ๋ช…๋ น์„ ์ด์šฉ
์‹คํ–‰์‹คํ–‰ ,, ๋‹จ๊ณ„ ์‹คํ–‰๋‹จ๊ณ„ ์‹คํ–‰ ,, ์ถ”์ ์ถ”์ 
๏ฌ BreakpointBreakpoint
๏ƒ˜ ์ผ๋ฐ˜์ ์ธ์ผ๋ฐ˜์ ์ธ breakpointbreakpoint
๏‚ง BP : memory addressBP : memory address ๋ฅผ ์ด์šฉํ•จ๋ฅผ ์ด์šฉํ•จ
๏‚ง BU :BU : ์‹ฌ๋ณผ์„ ์ด์šฉํ•จ์‹ฌ๋ณผ์„ ์ด์šฉํ•จ
๏‚ง BL : breakpoint listBL : breakpoint list
๏‚ง BE, BD : breakpoint enable/disableBE, BD : breakpoint enable/disable
๏‚ง JJ ํ‘œํ˜„์‹ํ‘œํ˜„์‹ ?? ์ฐธ ๋ช…๋ น์ฐธ ๋ช…๋ น ;; ๊ฑฐ์ง“ ๋ช…๋ น๊ฑฐ์ง“ ๋ช…๋ น
๏ƒ˜ Memory accessMemory access
๏‚ง BA : BPBA : BP ์ธ์ธ memory addressmemory address ๋ฅผ ์ด์šฉํ•ด๋ฅผ ์ด์šฉํ•ด debuggingdebugging ์„ ํ•˜์„ ํ•˜
๊ณ ๊ณ  DVDV ๋ฅผ ์ด์šฉํ•ด ๋ณ€์ˆ˜ ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•ด์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅ๋ฅผ ์ด์šฉํ•ด ๋ณ€์ˆ˜ ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•ด์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅ
๏ฌ ์˜ˆ์™ธ์™€ ์ด๋ฒคํŠธ์˜ˆ์™ธ์™€ ์ด๋ฒคํŠธ
๏ƒ˜ Access violationAccess violation ๋„ ํฌํ•จ๋จ๋„ ํฌํ•จ๋จ
๏ƒ˜ CommandCommand ๋„ ์ง€์›ํ•˜์ง€๋งŒ๋„ ์ง€์›ํ•˜์ง€๋งŒ debug-event filtersdebug-event filters
menumenu ์ด์šฉ ๊ถŒ์žฅ์ด์šฉ ๊ถŒ์žฅ
๏ƒ˜ P451P451 ์˜ˆ์™ธ ๋ธŒ๋ ˆ์ดํฌ ์ƒํƒœ ์ฐธ์กฐ์˜ˆ์™ธ ๋ธŒ๋ ˆ์ดํฌ ์ƒํƒœ ์ฐธ์กฐ
WinDBGWinDBG ์ œ์–ดํ•˜๊ธฐ์ œ์–ดํ•˜๊ธฐ
๏ฌ ์ถ”๊ฐ€์ ์ธ ๋ฉ”ํƒ€ ๋ช…๋ น๋“ค์ถ”๊ฐ€์ ์ธ ๋ฉ”ํƒ€ ๋ช…๋ น๋“ค
๏ƒ˜ .cls : clear screen.cls : clear screen
๏ƒ˜ .enable_unicode : unicode.enable_unicode : unicode
๏ƒ˜ .locale.locale
๏ƒ˜ .formats.formats
๏ƒ˜ .shell.shell
๏ƒ˜ .occommand : outputdebugstring.occommand : outputdebugstring ํ•จ์ˆ˜ ํ˜ธํ•จ์ˆ˜ ํ˜ธ
์ถœ์‹œ ์ ‘๋‘์‚ฌ ๋ช…์‹œ์ถœ์‹œ ์ ‘๋‘์‚ฌ ๋ช…์‹œ
ํ™•์žฅ ๊ธฐ๋Šฅํ™•์žฅ ๊ธฐ๋Šฅ
๏ฌ ํ™•์žฅ๊ธฐ๋Šฅ ๋กœ๋“œํ™•์žฅ๊ธฐ๋Šฅ ๋กœ๋“œ ,, ์ œ์–ด์ œ์–ด
๏ƒ˜ .chain.chain ์œผ๋กœ ๋กœ๋“œ๋œ ํ™•์žฅ๊ธฐ๋Šฅ ๊ฒ€ํ† ์œผ๋กœ ๋กœ๋“œ๋œ ํ™•์žฅ๊ธฐ๋Šฅ ๊ฒ€ํ† 
๏‚ง SOSSOS ๋ฅผ๋ฅผ loadload ํ•˜๋ฉด ์ด ๋ถ€๋ถ„์—ํ•˜๋ฉด ์ด ๋ถ€๋ถ„์— SOS.dllSOS.dll ์ด ์ถ”๊ฐ€๋จ์„ ์•Œ ์ˆ˜์ด ์ถ”๊ฐ€๋จ์„ ์•Œ ์ˆ˜
์žˆ์Œ์žˆ์Œ
๏‚ง .load sos : .dll.load sos : .dll ์€ ์ƒ๋žตํ•ด์•ผ ํ•จ์€ ์ƒ๋žตํ•ด์•ผ ํ•จ
๏ƒ˜ .load, .unload.load, .unload ๋กœ ํ™•์žฅ๋กœ ํ™•์žฅ dll load & unloaddll load & unload
๏ฌ ์ค‘์š”ํ•œ ํ™•์žฅ ๋ช…๋ น๋“ค์ค‘์š”ํ•œ ํ™•์žฅ ๋ช…๋ น๋“ค
๏ƒ˜ !analyze โ€“v :!analyze โ€“v : ํ˜„์žฌ ์˜ˆ์™ธ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๋ถ„์„์ •๋ณดํ˜„์žฌ ์˜ˆ์™ธ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๋ถ„์„์ •๋ณด
๏ƒ˜ !critsec!critsec ์ฃผ์†Œ์ฃผ์†Œ :: ์ž„๊ณ„์„น์…˜์ž„๊ณ„์„น์…˜
๏ƒ˜ !locks โ€“v :!locks โ€“v : ์ž ๊ฒจ์ง„ ์ž„๊ณ„์„น์…˜ ํ™•์ธ์ž ๊ฒจ์ง„ ์ž„๊ณ„์„น์…˜ ํ™•์ธ
๏ƒ˜ !token : thread!token : thread ์— ์ ์šฉ๋œ ๋ณด์•ˆ ์ •๋ณด์— ์ ์šฉ๋œ ๋ณด์•ˆ ์ •๋ณด
๏ƒ˜ !handle :!handle : ํ•ธ๋“ค์„ ํฌํ•จํ•˜๋Š” ๊ฐ์ฒดํƒ€์ž… ๋ฐ ์š”์•ฝ์ •๋ณดํ•ธ๋“ค์„ ํฌํ•จํ•˜๋Š” ๊ฐ์ฒดํƒ€์ž… ๋ฐ ์š”์•ฝ์ •๋ณด
๏‚ง ๋ฉ”๋ชจ๋ฆฌ๋ฉ”๋ชจ๋ฆฌ leak, deadlock debugleak, deadlock debug ์ค‘์š”ํ•œ์ค‘์š”ํ•œ debuggingdebugging
๋คํ”„ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ๋คํ”„ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ
๏ฌ ๋””๋ฒ„๊น… ๋„์ค‘๋””๋ฒ„๊น… ๋„์ค‘ .DUMP.DUMP ๋ช…๋ น์œผ๋กœ ํŒŒ์ผ ์ƒ์„ฑ๋ช…๋ น์œผ๋กœ ํŒŒ์ผ ์ƒ์„ฑ
๏ƒ˜ Ex) .dump /a/u c:tempaa.dmpEx) .dump /a/u c:tempaa.dmp ๋กœ ํ•˜๋ฉด ์‹ค์ œ ํŒŒ์ผ๋กœ ํ•˜๋ฉด ์‹ค์ œ ํŒŒ์ผ
์€์€ aa_2004-10-15_18-30-13-108_05E8.dmpaa_2004-10-15_18-30-13-108_05E8.dmp ๋กœ ์ƒ๋กœ ์ƒ
์„ฑ์„ฑ
๏ฌ ๋คํ”„ํŒŒ์ผ๋คํ”„ํŒŒ์ผ optionoption
๏ƒ˜ /u :/u : ๋‚ ์งœ๋‚ ์งœ ,, ์‹œ๊ฐ„์‹œ๊ฐ„ , PID, PID ๋ฅผ ํŒŒ์ผ์ด๋ฆ„์œผ๋กœ ์ถ”๊ฐ€ํ•จ๋ฅผ ํŒŒ์ผ์ด๋ฆ„์œผ๋กœ ์ถ”๊ฐ€ํ•จ
๏ƒ˜ /c :/c : ์ž์„ธํ•œ ์ •๋ณด์ž์„ธํ•œ ์ •๋ณด
๏ƒ˜ /a : load/a : load ๋œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ •๋ณด
๏ƒ˜ /f :/f : ํ˜„์žฌํ˜„์žฌ thread stackthread stack ๋ถ€ํ„ฐ๋ถ€ํ„ฐ loadload ๋œ ์‹ค์ œ๋œ ์‹ค์ œ binarybinary
์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๋ชจ๋“  ์ •๋ณด ํฌํ•จ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๋ชจ๋“  ์ •๋ณด ํฌํ•จ
๏ƒ˜ /m :/m : ์ผ๋ฐ˜์ ์ธ์ผ๋ฐ˜์ ์ธ mini dump (vs.netmini dump (vs.net ๊ณผ ๋™์ผ๊ณผ ๋™์ผ ))
๏ƒ˜ /b : dmp/b : dmp ํŒŒ์ผ์„ ์••์ถ•ํ•˜์—ฌํŒŒ์ผ์„ ์••์ถ•ํ•˜์—ฌ .cab.cab ํŒŒ์ผ ์ƒ์„ฑํŒŒ์ผ ์ƒ์„ฑ
๋คํ”„ํŒŒ์ผ ์—ด๊ธฐ๋คํ”„ํŒŒ์ผ ์—ด๊ธฐ
๏ฌ ๋ฐฉ๋ฒ•๋ฐฉ๋ฒ•
๏ƒ˜ WinDBGWinDBG ์˜ ๋ฉ”๋‰ด์˜ ๋ฉ”๋‰ด (open crash dump)(open crash dump)
๏ƒ˜ ๋คํ”„ํŒŒ์ผ์„ ์—ด๊ณ  ์‹ฌ๋ณผ๋คํ”„ํŒŒ์ผ์„ ์—ด๊ณ  ์‹ฌ๋ณผ ,, ์†Œ์Šค์†Œ์Šค ,, ๋ฐ”์ด๋„ˆ๋ฆฌ ๊ฒฝ๋ฐ”์ด๋„ˆ๋ฆฌ ๊ฒฝ
๋กœ ์„ค์ •๋กœ ์„ค์ •
๏ฌ ๋‹จ๊ณ„๋‹จ๊ณ„
๏ƒ˜ LM /vLM /v ๋ฅผ ์ด์šฉํ•ด ๋กœ๋“œ๋œ ์‹ฌ๋ณผ ํ™•์ธ๋ฅผ ์ด์šฉํ•ด ๋กœ๋“œ๋œ ์‹ฌ๋ณผ ํ™•์ธ :: ํ•„์š”ํ•„์š”
์‹œ ์‹ฌ๋ณผ ๊ฒฝ๋กœ์„ค์ •์‹œ ์‹ฌ๋ณผ ๊ฒฝ๋กœ์„ค์ •
๏ƒ˜ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ ์„ค์ •์ด๋ฏธ์ง€ ๊ฒฝ๋กœ ์„ค์ •
๏‚ง Windows hotfixWindows hotfix ์˜ ๊ฒฝ์šฐ์˜ ๊ฒฝ์šฐ OSSYMS.JSOSSYMS.JS ๋ฅผ ์‹คํ–‰ํ•˜๋ฅผ ์‹คํ–‰ํ•˜
์—ฌ ์‹ฌ๋ณผ ์ €์žฅ์†Œ ๋‹ค์‹œ ๋กœ๋“œํ•ด์•„ํ•จ์—ฌ ์‹ฌ๋ณผ ์ €์žฅ์†Œ ๋‹ค์‹œ ๋กœ๋“œํ•ด์•„ํ•จ ..
๏ฌ ๋คํ”„ ๋””๋ฒ„๊น…์€๋คํ”„ ๋””๋ฒ„๊น…์€ WinDBGWinDBG ์‚ฌ์šฉ๋ฒ•๊ณผ ๋™์ผ์‚ฌ์šฉ๋ฒ•๊ณผ ๋™์ผ
SOS(Son of Strike)SOS(Son of Strike)
๏ฌ Dump debuggingDump debugging
๏ƒ˜ Native application debugging :Native application debugging : ๊ธฐ๋Šฅ์ด ๋งŽ๊ธฐ๋Šฅ์ด ๋งŽ
์€์€
๏ƒ˜ Managed application :Managed application : ์ œ์•ฝ์‚ฌํ•ญ์ด ๋งŽ์Œ์ œ์•ฝ์‚ฌํ•ญ์ด ๋งŽ์Œ
๏ฌ Native appNative app ์™€์™€ managed appmanaged app ๋ฅผ ๋™์‹œ์—๋ฅผ ๋™์‹œ์—
๊ฐ€์ง„๊ฐ€์ง„ app dump debuggingapp dump debugging ์„ ์œ„ํ•ด์„ ์œ„ํ•ด
SOSSOS ๋ฅผ ์ง€์›ํ•จ๋ฅผ ์ง€์›ํ•จ
๏ฌ ์œ„์น˜์œ„์น˜ : <.net install dir>sdkv1.1Tool: <.net install dir>sdkv1.1Tool
developers guidesamplessosdevelopers guidesamplessos
๏ฌ ์ƒ์„ธํ•œ ๋‚ด์šฉ์€์ƒ์„ธํ•œ ๋‚ด์šฉ์€ sos.htmsos.htm ์ฐธ์กฐ์ฐธ์กฐ
SOS.dll loadSOS.dll load
๏ฌ SOSSOS ๋Š”๋Š” .NET Framework.NET Framework ์˜ ์ผ๋ถ€์˜ ์ผ๋ถ€
๏ฌ Vsvars32.batVsvars32.bat ์‹คํ–‰์‹คํ–‰
๏ƒ˜ .net.net ๊ณผ ๊ด€๋ จ๋œ๊ณผ ๊ด€๋ จ๋œ dirdir ๊ฒฝ๋กœ์— ํฌํ•จ๋˜๋„๋ก ํ™˜๊ฒฝ์„ค์ •๊ฒฝ๋กœ์— ํฌํ•จ๋˜๋„๋ก ํ™˜๊ฒฝ์„ค์ •
๏ƒ˜ .load sos.load sos ์‹คํ–‰์‹คํ–‰
๏ฌ ExampleExample
๏ƒ˜ ์ฑ…์˜์ฑ…์˜ sourcesource ์˜์˜ exceptapp.exeexceptapp.exe
๏ƒ˜ !thread!thread ๋ฅผ ์ด์šฉํ•ด๋ฅผ ์ด์šฉํ•ด appDomainappDomain ์˜ ์ •๋ณด๋ฅผ ์•Œ์ˆ˜์žˆ์Œ์˜ ์ •๋ณด๋ฅผ ์•Œ์ˆ˜์žˆ์Œ
๏ƒ˜ !clrstack .all!clrstack .all ์„ ์ด์šฉํ•ด์„ ์ด์šฉํ•ด stackstack ํ™•์ธํ™•์ธ
๏ƒ˜ !dumpstack : .net!dumpstack : .net ๊ณผ๊ณผ nativenative ํ˜ธ์ถœ์ด ๋งŽ์€ ํ”„๋กœ๊ทธํ˜ธ์ถœ์ด ๋งŽ์€ ํ”„๋กœ๊ทธ
๋žจ์„ ๋‹ค๋ฃจ๋Š”๋žจ์„ ๋‹ค๋ฃจ๋Š” appapp ์˜ ํ˜ธ์ถœ ์Šคํƒํ™•์ธ์˜ ํ˜ธ์ถœ ์Šคํƒํ™•์ธ
๏ƒ˜ !dumpclass : class!dumpclass : class ์˜ ๋ชจ๋“ ์˜ ๋ชจ๋“  data fielddata field ํ™•์ธํ™•์ธ
๏ƒ˜ ~~~~
๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ
๏ฌ ๋™๋ฃŒ์™€ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•œ ๋””๋ฒ„๊น… ๊ณผ์ • ๊ธฐ์ˆ ๋™๋ฃŒ์™€ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•œ ๋””๋ฒ„๊น… ๊ณผ์ • ๊ธฐ์ˆ 
๋ฐฉ๋ฒ•๋ฐฉ๋ฒ•
๏ฌ ์‚ฌ๋ก€ ์‹ค์Šต์œผ๋กœ ์ ๊ทน ํ™œ์šฉ์‚ฌ๋ก€ ์‹ค์Šต์œผ๋กœ ์ ๊ทน ํ™œ์šฉ
๏ฌ ํ›Œ๋ฅญํ•œ ๋””๋ฒ„๊น… ํŒ์œผ๋กœ ์ž๋ฃŒ ๊ณต์œ ํ›Œ๋ฅญํ•œ ๋””๋ฒ„๊น… ํŒ์œผ๋กœ ์ž๋ฃŒ ๊ณต์œ 
๏ฌ John RobbinsJohn Robbins ๊ฐ€ ์ฒ˜์Œ ๋„์ž…๊ฐ€ ์ฒ˜์Œ ๋„์ž…
๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ #1#1
๏ฌ ์‚ฌ๊ฑด ๋ฐœ๋‹จ์‚ฌ๊ฑด ๋ฐœ๋‹จ
๏ƒ˜ ํŒŒ์ผ ์ƒ์„ฑ์ด ๋˜์ง€ ์•Š๋Š”๋‹คํŒŒ์ผ ์ƒ์„ฑ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค !!
๏ฌ ์ „๊ฐœ์ „๊ฐœ
๏ƒ˜ fopenfopen ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์กฐ์‚ฌ์‹ ์ฐฝ์—์„œ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์กฐ์‚ฌ์‹ ์ฐฝ์—์„œ
@err,hr@err,hr ์„ ์ž…๋ ฅํ•˜์—ฌ์„ ์ž…๋ ฅํ•˜์—ฌ Last ErrorLast Error ๊ฐ’ ํ™•์ธ๊ฐ’ ํ™•์ธ
๏‚ง โ€œโ€œ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹คํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค .โ€.โ€
๏‚ง ๋ถ„๋ช…ํžˆ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ๋ถ„๋ช…ํžˆ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ !!
๏ƒ˜ ํŒŒ์ผ์„ ์—ฌ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•ํŒŒ์ผ์„ ์—ฌ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•
๏‚ง MFCMFC ์˜์˜ SDI/MDISDI/MDI ์—์„œ ์ง€์›ํ•˜๋Š”์—์„œ ์ง€์›ํ•˜๋Š” [[ ์ตœ๊ทผ์— ์‚ฌ์šฉํ•œ ํŒŒ์ตœ๊ทผ์— ์‚ฌ์šฉํ•œ ํŒŒ
์ผ์ผ ]] ๋ฉ”๋‰ด ์ด์šฉ๋ฉ”๋‰ด ์ด์šฉ
๏‚ง ์˜ค๋ฅ˜ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ์˜ค๋ฅ˜ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ !!
๏‚ง [[ ํŒŒ์ผํŒŒ์ผ ]-[]-[ ์—ด๊ธฐ์—ด๊ธฐ ]] ๋ฉ”๋‰ด ์ด์šฉ๋ฉ”๋‰ด ์ด์šฉ
๏‚ง ์˜ค๋ฅ˜ ๋ฐœ์ƒ์˜ค๋ฅ˜ ๋ฐœ์ƒ !!
๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ #1#1
๏ฌ ์ „๊ฐœ์ „๊ฐœ
๏ƒ˜ ์ƒ๋Œ€ ๊ฒฝ๋กœ์˜ ์ฃผ์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธ๋˜์–ด ์žˆ์ƒ๋Œ€ ๊ฒฝ๋กœ์˜ ์ฃผ์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธ๋˜์–ด ์žˆ
์Œ์Œ
๏‚ง #define FILE_SAVE_PATH โ€œData/result.datโ€#define FILE_SAVE_PATH โ€œData/result.datโ€
๏ƒ˜ ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ๋ฐ”๊พธ๋‹ˆ ์„ฑ๊ณต์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ๋ฐ”๊พธ๋‹ˆ ์„ฑ๊ณต !!
๏ฌ ๋ถ„์„๋ถ„์„
๏ƒ˜ [[ ์ตœ๊ทผ์— ์‚ฌ์šฉํ•œ ํŒŒ์ผ์ตœ๊ทผ์— ์‚ฌ์šฉํ•œ ํŒŒ์ผ ]] ๋ฉ”๋‰ด๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ด๋ฉ”๋‰ด๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ด
์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
๏ƒ˜ [[ ํŒŒ์ผํŒŒ์ผ ]-[]-[ ์—ด๊ธฐ์—ด๊ธฐ ]] ์‚ฌ์šฉ์‹œ์—๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์‚ฌ์šฉ์‹œ์—๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰
๊ฒฝ๋กœ๊ฐ€ ํŒŒ์ผ์„ ์—ด์—ˆ๋˜ ๊ฒฝ๋กœ๋กœ ๋ฐ”๋€Œ์–ด ๋ฒ„๋ฆผ๊ฒฝ๋กœ๊ฐ€ ํŒŒ์ผ์„ ์—ด์—ˆ๋˜ ๊ฒฝ๋กœ๋กœ ๋ฐ”๋€Œ์–ด ๋ฒ„๋ฆผ
๏ฌ ํ•ด๊ฒฐํ•ด๊ฒฐ
๏ƒ˜ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์‹œ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ์ €์žฅํ•˜์—ฌํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์‹œ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ์ €์žฅํ•˜์—ฌ ,, ์ƒ์ƒ
๋Œ€ ๊ฒฝ๋กœ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ €์žฅ๋œ ๊ฒฝ๋กœ๋ฅผ ์ด์šฉ๋Œ€ ๊ฒฝ๋กœ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ €์žฅ๋œ ๊ฒฝ๋กœ๋ฅผ ์ด์šฉ
๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ #1#1
๏ฌ ๊ตํ›ˆ๊ตํ›ˆ
๏ƒ˜ ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ด์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ์–ด๋–ค ์™ธ๋ถ€์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ด์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ์–ด๋–ค ์™ธ๋ถ€
์ ์ธ ์š”์ธ์— ์˜ํ•ด์„œ ํ˜„์žฌ ๊ฒฝ๋กœ๊ฐ€ ๋ฐ”๋€” ์ˆ˜ ์žˆ์ ์ธ ์š”์ธ์— ์˜ํ•ด์„œ ํ˜„์žฌ ๊ฒฝ๋กœ๊ฐ€ ๋ฐ”๋€” ์ˆ˜ ์žˆ
์Œ์„ ์ฃผ์˜ํ•ด์•ผ ํ•จ์Œ์„ ์ฃผ์˜ํ•ด์•ผ ํ•จ
๏ƒ˜ ๋””๋ฒ„๊น…์„ ํ•˜๊ธฐ ์ „์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋””๋ฒ„๊น…์„ ํ•˜๊ธฐ ์ „์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค
๋ฅผ ๋ฏธ๋ฆฌ ์ •ํ•ด๋†“๊ณ  ๋””๋ฒ„๊น…์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๋„๋ฅผ ๋ฏธ๋ฆฌ ์ •ํ•ด๋†“๊ณ  ๋””๋ฒ„๊น…์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๋„
์›€์ด ๋จ์›€์ด ๋จ
๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ #2#2
๏ฌ ์‚ฌ๊ฑด ๋ฐœ๋‹จ์‚ฌ๊ฑด ๋ฐœ๋‹จ
๏ƒ˜ ํฌ์ธํ„ฐ์˜ ๊ฐ’์ดํฌ์ธํ„ฐ์˜ ๊ฐ’์ด NULLNULL ์ด ๋˜๋Š” ๊ธฐ์ดํ•œ ํ˜„์ƒ์ด ๋˜๋Š” ๊ธฐ์ดํ•œ ํ˜„์ƒ
๏ฌ ์ „๊ฐœ์ „๊ฐœ
MyStruct * pHead = (MyStruct *) malloc ( sizeof ( MyStruct ) );MyStruct * pHead = (MyStruct *) malloc ( sizeof ( MyStruct ) );
int mystruct[10];int mystruct[10];
for ( int i = 0 ; i <= 10 ; i++ )for ( int i = 0 ; i <= 10 ; i++ )
{{
mystruct[i] = 0;mystruct[i] = 0;
}}
๏ƒ˜ pHeadpHead ๊ฐ’์ด๊ฐ’์ด NULLNULL ๋กœ ์„ค์ •๋กœ ์„ค์ •
๏ƒ˜ ๊ฐ’์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ค‘๋‹จ์  ์„ค์ •๊ฐ’์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ค‘๋‹จ์  ์„ค์ •
๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ #2#2
๏ฌ ์ „๊ฐœ์ „๊ฐœ (( ๊ณ„์†๊ณ„์† ))
๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ #2#2
๏ฌ ์ „๊ฐœ์ „๊ฐœ (( ๊ณ„์†๊ณ„์† ))
๏ƒ˜ ๋ฐ์ดํ„ฐ ์ค‘๋‹จ์ ์„ ํ†ตํ•ด์„œ ๋ณ€์ˆ˜์˜ ๊ฐ’๋“ค์„ ํ™•๋ฐ์ดํ„ฐ ์ค‘๋‹จ์ ์„ ํ†ตํ•ด์„œ ๋ณ€์ˆ˜์˜ ๊ฐ’๋“ค์„ ํ™•
์ธ์ธ
๏ฌ ๊ตํ›ˆ๊ตํ›ˆ
๏ƒ˜ ํฌ์ธํ„ฐ ๊ฐœ๋…์„ ์ •ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜๋„๋ก ํ•˜์žํฌ์ธํ„ฐ ๊ฐœ๋…์„ ์ •ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜๋„๋ก ํ•˜์ž ..
๏ƒ˜ ๋””๋ฒ„๊ฑฐ์˜ ๊ธฐ๋Šฅ์„ ์ถฉ๋ถ„ํžˆ ํ™œ์šฉํ•˜๋„๋ก ํ•˜์ž๋””๋ฒ„๊ฑฐ์˜ ๊ธฐ๋Šฅ์„ ์ถฉ๋ถ„ํžˆ ํ™œ์šฉํ•˜๋„๋ก ํ•˜์ž ..
๋””๋ฒ„๊ฑฐ ์ž‘๋™ ์›๋ฆฌ๋””๋ฒ„๊ฑฐ ์ž‘๋™ ์›๋ฆฌ
๏ฌ Win32Win32 ๋””๋ฒ„๊ฑฐ๋Š”๋””๋ฒ„๊ฑฐ๋Š” WindowsWindows ์˜ ๊ธฐ๋Šฅ์„์˜ ๊ธฐ๋Šฅ์„
์‚ฌ์šฉํ•œ๋‹ค์‚ฌ์šฉํ•œ๋‹ค ..
๏ฌ ์š”๊ตฌ ์‚ฌํ•ญ์š”๊ตฌ ์‚ฌํ•ญ
๏ƒ˜ CreateProcessCreateProcess ์˜์˜ dwCreationFlagsdwCreationFlags ๋งค๊ฐœ๋งค๊ฐœ
๋ณ€์ˆ˜์—๋ณ€์ˆ˜์— DEBUG_ONLY_THIS_PROCESSDEBUG_ONLY_THIS_PROCESS
์„ค์ •์„ค์ •
๏ƒ˜ ๋””๋ฒ„๊ธฐ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๋‚˜์„œ๋””๋ฒ„๊ธฐ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๋‚˜์„œ
WaitForDebugEvent APIWaitForDebugEvent API ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ
๋ฃจํ”„๋กœ ์ง„์ž…๋ฃจํ”„๋กœ ์ง„์ž…
๏ƒ˜ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‚œ ํ›„์—๋Š”์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‚œ ํ›„์—๋Š”
ContinueDebugEventContinueDebugEvent ํ•จ์ˆ˜ ํ˜ธ์ถœํ•จ์ˆ˜ ํ˜ธ์ถœ
๏ƒ˜
๋””๋ฒ„๊ฑฐ์˜ ๊ธฐ๋ณธ ๊ณจ๊ฒฉ ์ฝ”๋“œ๋””๋ฒ„๊ฑฐ์˜ ๊ธฐ๋ณธ ๊ณจ๊ฒฉ ์ฝ”๋“œ
void main ( void )void main ( void )
{{
CreateProcess ( โ€ฆ , DEBUG_ONLY_THIS_PROCESS, โ€ฆ );CreateProcess ( โ€ฆ , DEBUG_ONLY_THIS_PROCESS, โ€ฆ );
while ( 1 == WaitForDebugEvent ( โ€ฆ ) )while ( 1 == WaitForDebugEvent ( โ€ฆ ) )
{{
if ( EXIT_PROCESS )if ( EXIT_PROCESS )
{{
break ;break ;
}}
ContinueDebugEvent ( โ€ฆ );ContinueDebugEvent ( โ€ฆ );
}}
}}
๋””๋ฒ„๊น… ์ด๋ฒคํŠธ๋””๋ฒ„๊น… ์ด๋ฒคํŠธ
๏ฌ DEBUG_EVENTDEBUG_EVENT ๊ตฌ์กฐ์ฒด๊ตฌ์กฐ์ฒด (( ๋‚ด๋ถ€์ ์œผ๋กœ๋‚ด๋ถ€์ ์œผ๋กœ
unionunion ๊ตฌ์กฐ๊ตฌ์กฐ )) ์— ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ด์— ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ด
๏ฌ CREATE_PROCESS_DEBUG_EVENTCREATE_PROCESS_DEBUG_EVENT
๏ƒ˜ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋””๋ฒ„๊น…๋˜๋Š” ํ”„๋กœ์„ธ์Šค์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋””๋ฒ„๊น…๋˜๋Š” ํ”„๋กœ์„ธ์Šค
๋‚ด์—์„œ ์ƒ์„ฑ๋  ๋•Œ๋‚˜ ๋””๋ฒ„๊ฑฐ๊ฐ€ ์ด๋ฏธ ํ™œ์„ฑํ™”๋‚ด์—์„œ ์ƒ์„ฑ๋  ๋•Œ๋‚˜ ๋””๋ฒ„๊ฑฐ๊ฐ€ ์ด๋ฏธ ํ™œ์„ฑํ™”
๋˜์–ด ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋””๋ฒ„๊น…ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐœ๋˜์–ด ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋””๋ฒ„๊น…ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐœ
์ƒ์ƒ
๏ฌ CREATE_THREAD_DEBUG_EVENTCREATE_THREAD_DEBUG_EVENT
๏ƒ˜ ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ ๋ฐœ์ƒ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ ๋ฐœ์ƒ
๏ฌ EXCEPTION_DEBUG_EVENTEXCEPTION_DEBUG_EVENT
๏ƒ˜ ๋””๋ฒ„๊ธฐ์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ๋ฐœ์ƒ๋””๋ฒ„๊ธฐ์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ๋ฐœ์ƒ
๋””๋ฒ„๊น… ์ด๋ฒคํŠธ๋””๋ฒ„๊น… ์ด๋ฒคํŠธ
๏ฌ EXIT_PROCESS_DEBUG_EVENTEXIT_PROCESS_DEBUG_EVENT
๏ƒ˜ ๋งˆ์ง€๋ง‰ ์Šค๋ ˆ๋“œ๊ฐ€ ๋””๋ฒ„๊ฑฐ๋ฅผ ๋‚˜๊ฐˆ ๋•Œ๋‚˜๋งˆ์ง€๋ง‰ ์Šค๋ ˆ๋“œ๊ฐ€ ๋””๋ฒ„๊ฑฐ๋ฅผ ๋‚˜๊ฐˆ ๋•Œ๋‚˜
ExitProcessExitProcess ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ
๏ฌ EXIT_THREAD_DEBUG_EVENTEXIT_THREAD_DEBUG_EVENT
๏ƒ˜ ๋””๋ฒ„๊ธฐ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒํ•  ๋•Œ ๋ฐœ์ƒ๋””๋ฒ„๊ธฐ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒํ•  ๋•Œ ๋ฐœ์ƒ
๏ƒ˜ ๋””๋ฒ„๊ฑฐ๊ฐ€ ์ด ํ•ธ๋“ค์„ ๋‹ซ์•„์„œ๋Š” ์•ˆ๋จ๋””๋ฒ„๊ฑฐ๊ฐ€ ์ด ํ•ธ๋“ค์„ ๋‹ซ์•„์„œ๋Š” ์•ˆ๋จ
๏ฌ LOAD_DLL_DEBUG_EVENTLOAD_DLL_DEBUG_EVENT
๏ƒ˜ ๋””๋ฒ„๊ธฐ๊ฐ€๋””๋ฒ„๊ธฐ๊ฐ€ DLLDLL ์„ ๋กœ๋“œํ•  ๋•Œ ๋ฐœ์ƒ์„ ๋กœ๋“œํ•  ๋•Œ ๋ฐœ์ƒ
๏ฌ OUTPUT_DEBUG_STRING_EVENTOUTPUT_DEBUG_STRING_EVENT
๏ƒ˜ ๋””๋ฒ„๊ธฐ๊ฐ€๋””๋ฒ„๊ธฐ๊ฐ€ OutputDebugStringOutputDebugString ํ•จ์ˆ˜ ํ˜ธ์ถœํ•  ๋•Œ ๋ฐœํ•จ์ˆ˜ ํ˜ธ์ถœํ•  ๋•Œ ๋ฐœ
์ƒ์ƒ
๏ฌ UNLOAD_DLL_DEBUG_EVENTUNLOAD_DLL_DEBUG_EVENT
๏ƒ˜ ๋””๋ฒ„๊ธฐ๊ฐ€๋””๋ฒ„๊ธฐ๊ฐ€ FreeLibraryFreeLibrary ๋กœ๋กœ DLLDLL ์„ ์–ธ๋กœ๋“œํ•  ๋•Œ ๋ฐœ์„ ์–ธ๋กœ๋“œํ•  ๋•Œ ๋ฐœ
๋””๋ฒ„๊ฑฐ ์ž‘์„ฑ ์‹œ ์ฃผ์˜ ์‚ฌํ•ญ๋””๋ฒ„๊ฑฐ ์ž‘์„ฑ ์‹œ ์ฃผ์˜ ์‚ฌํ•ญ
๏ฌ WriteProcessMemoryWriteProcessMemory ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ
๋””๋ฒ„๊ธฐ์˜ ์ฝ”๋“œ๋ฅผ ๊ณ ์น˜๋Š” ๊ฒฝ์šฐ๋””๋ฒ„๊ธฐ์˜ ์ฝ”๋“œ๋ฅผ ๊ณ ์น˜๋Š” ๊ฒฝ์šฐ ,,
FlushInstructionCacheFlushInstructionCache ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜
์—ฌ ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ์–ด์•ผ ํ•จ์—ฌ ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ์–ด์•ผ ํ•จ
๏ฌ ์ค‘๋‹จ์ ์ด ํ™œ์„ฑํ™”๋˜๋ฉด์ค‘๋‹จ์ ์ด ํ™œ์„ฑํ™”๋˜๋ฉด
ContinueDebugEventContinueDebugEvent ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์•ผํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์•ผ
ํ•œ๋‹คํ•œ๋‹ค ..
MINDBGMINDBG
DemoDemo
Tips & TricksTips & Tricks
๋ฉ”๋ชจ๋ฆฌ ๊ฐ’์˜ ์˜๋ฏธ๋ฉ”๋ชจ๋ฆฌ ๊ฐ’์˜ ์˜๋ฏธ
๏ฌ 0xAB, 0xABAB, 0xABABAB0xAB, 0xABAB, 0xABABAB
๏ƒ˜ LocalAlloc()LocalAlloc() ์— ์˜ํ•ด์„œ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ํ•ด์„œ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ
๏ฌ 0xBAADF00D0xBAADF00D
๏ƒ˜ LocalAlloc ( LMEM_FIXED, โ€ฆ )LocalAlloc ( LMEM_FIXED, โ€ฆ ) ์— ์˜ํ•ด์„œ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ํ•ด์„œ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ
๏ฌ 0xFEEE0xFEEE
๏ƒ˜ HeapAlloc()HeapAlloc() ๋˜๋Š”๋˜๋Š” LocalAlloc()LocalAlloc() ์— ์˜ํ•ด์„œ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ํ•ด์„œ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ
๏ฌ 0xCC0xCC
๏ƒ˜ /GZ/GZ ์˜ต์…˜์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์˜ต์…˜์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ,, ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜์— ์ž๋™์œผ๋กœ ํ• ๋‹น์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜์— ์ž๋™์œผ๋กœ ํ• ๋‹น
๋˜๋Š” ๊ฐ’๋˜๋Š” ๊ฐ’ (( ์Šคํƒ์Šคํƒ ))
๏ฌ 0xCD0xCD
๏ƒ˜ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๊ฒ€์‚ฌํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๊ฒ€์‚ฌํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค .. ์ผ๋ฐ˜์ ์œผ๋กœ์ผ๋ฐ˜์ ์œผ๋กœ
DEBUG_NEWDEBUG_NEW ๊ฐ€ ์ •์˜๋˜์–ด์žˆ์„ ๋•Œ๊ฐ€ ์ •์˜๋˜์–ด์žˆ์„ ๋•Œ . malloc(). malloc() ๋‚˜๋‚˜ newnew ๋กœ ํ• ๋‹น๋˜๋Š”๋กœ ํ• ๋‹น๋˜๋Š”
๊ฐ’๊ฐ’
๏ฌ 0xDD0xDD
๏ƒ˜ free()free() ๋‚˜๋‚˜ deletedelete ๋กœ ํ•ด์ œ๋œ ๊ฐ’๋กœ ํ•ด์ œ๋œ ๊ฐ’ .. ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฐ’์ด ํ•ด์ œ๋˜์—ˆ๋Š”์ง€ ํ™•์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฐ’์ด ํ•ด์ œ๋˜์—ˆ๋Š”์ง€ ํ™•
์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅ์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅ
๏ฌ 0xFD0xFD
๏ƒ˜ DEBUG_NEWDEBUG_NEW ๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์„ ๋•Œ๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์„ ๋•Œ ,, ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•˜๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•˜
์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์•ž๋’ค์— ์ถ”๊ฐ€ํ•จ์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์•ž๋’ค์— ์ถ”๊ฐ€ํ•จ
๋””๋ฒ„๊ฑฐ ์ž๋™ ์‹คํ–‰๋””๋ฒ„๊ฑฐ ์ž๋™ ์‹คํ–‰
๏ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋””๋ฒ„๊ฑฐ๊ฐ€์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋””๋ฒ„๊ฑฐ๊ฐ€
์ž๋™์„ ์‹คํ–‰์ž๋™์„ ์‹คํ–‰
๏ƒ˜ WindowsWindows ์„œ๋น„์Šค์™€์„œ๋น„์Šค์™€ COMCOM ์•„์›ƒ์•„์›ƒ -- ์˜ค๋ธŒ์˜ค๋ธŒ -- ํ”„ํ”„
๋กœ์„ธ์Šค์—์„œ ์œ ์šฉ๋กœ์„ธ์Šค์—์„œ ์œ ์šฉ
๏ฌ HKEY_LOCAL_MACHINESOFTWAREMHKEY_LOCAL_MACHINESOFTWAREM
icrosoftWindowsNTCurrentVersionImicrosoftWindowsNTCurrentVersionIm
age File Execution Optionsage File Execution Options ํ‚ค์—์„œ ์‘์šฉํ‚ค์—์„œ ์‘์šฉ
ํ”„๋กœ๊ทธ๋žจ์˜ ํŒŒ์ผ ์ด๋ฆ„๊ณผ ๋™์ผ ์ด๋ฆ„์˜ ํ‚คํ”„๋กœ๊ทธ๋žจ์˜ ํŒŒ์ผ ์ด๋ฆ„๊ณผ ๋™์ผ ์ด๋ฆ„์˜ ํ‚ค
๋ฅผ ์ƒ์„ฑ๋ฅผ ์ƒ์„ฑ
๏ƒ˜ DebuggerDebugger ๋ฌธ์ž์—ด ๊ฐ’๋ฌธ์ž์—ด ๊ฐ’ :: ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š”์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š”
๋””๋ฒ„๊ฑฐ์˜ ์ „์ฒด ๊ฒฝ๋กœ์™€ ํŒŒ์ผ ์ด๋ฆ„ ์ž…๋ ฅ๋””๋ฒ„๊ฑฐ์˜ ์ „์ฒด ๊ฒฝ๋กœ์™€ ํŒŒ์ผ ์ด๋ฆ„ ์ž…๋ ฅ
๋ฐฐ์—ด์˜ ํŠน์ • ๋ฒ”์œ„๋งŒ ํ™•์ธ๋ฐฐ์—ด์˜ ํŠน์ • ๋ฒ”์œ„๋งŒ ํ™•์ธ
๏ฌ ํฌ๊ธฐ๊ฐ€ํฌ๊ธฐ๊ฐ€ 50005000 ์ธ ๋ฐฐ์—ด์—์„œ์ธ ๋ฐฐ์—ด์—์„œ , 2000, 2000 ๋ฒˆ์งธ ๋ถ€๋ฒˆ์งธ ๋ถ€
ํ„ฐํ„ฐ 1010 ๊ฐœ ์š”์†Œ๋งŒ ํ™•์ธํ•˜๊ณ  ์‹ถ์„๋•Œ๊ฐœ ์š”์†Œ๋งŒ ํ™•์ธํ•˜๊ณ  ์‹ถ์„๋•Œ
๏ƒ˜ Char pFoo[5000];Char pFoo[5000];
๏ƒ˜ WatchWatch ์ฐฝ์—์„œ์ฐฝ์—์„œ (pFoo + 2000) , 10(pFoo + 2000) , 10
DirectXDirectX ๋ฐ์ดํ„ฐ ํ‘œ์‹œ๋ฐ์ดํ„ฐ ํ‘œ์‹œ
๏ฌ Autoexp.datAutoexp.dat ์— ์ถ”๊ฐ€์— ์ถ”๊ฐ€
D3DXQUATERNION =x=<x> y=<y> z=<z> w=<w>D3DXQUATERNION =x=<x> y=<y> z=<z> w=<w>
_D3DMATRIX =_11=<_11> _22=<_22> _33=<_33> _44=<_44>_D3DMATRIX =_11=<_11> _22=<_22> _33=<_33> _44=<_44>
D3DXVECTOR4 =x=<x> y=<y> z=<z> w=<w>D3DXVECTOR4 =x=<x> y=<y> z=<z> w=<w>
_D3DVECTOR =x=<x> y=<y> z=<z>_D3DVECTOR =x=<x> y=<y> z=<z>
D3DXVECTOR2 =x=<x> y=<y>D3DXVECTOR2 =x=<x> y=<y>
_D3DCOLORVALUE =r=<r> g=<g> b=<b> a=<a>_D3DCOLORVALUE =r=<r> g=<g> b=<b> a=<a>
_D3DPRESENT_PARAMETERS_ =hwnd=<hDeviceWindow>_D3DPRESENT_PARAMETERS_ =hwnd=<hDeviceWindow>
Fmt=<BackBufferFormat> ZBuff=<EnableAutoDepthStencil>Fmt=<BackBufferFormat> ZBuff=<EnableAutoDepthStencil>
_D3DDISPLAYMODE =w=<Width> h=<Height>_D3DDISPLAYMODE =w=<Width> h=<Height>
Hz=<RefreshRate> Fmt=<Format>Hz=<RefreshRate> Fmt=<Format>
_D3DVIEWPORT8 =x=<x> y=<y> width=<Width>_D3DVIEWPORT8 =x=<x> y=<y> width=<Width>
height=<Height>height=<Height>
(Visual C++ 6.0(Visual C++ 6.0 ์—์„œ๋„ ๊ฐ€๋Šฅ์—์„œ๋„ ๊ฐ€๋Šฅ ))
์Šค๋ ˆ๋“œ ์ด๋ฆ„ ์„ค์ •์Šค๋ ˆ๋“œ ์ด๋ฆ„ ์„ค์ •
typedef struct tagTHREADNAME_INFOtypedef struct tagTHREADNAME_INFO
{{
DWORDDWORD dwType;dwType; // must be 0x1000// must be 0x1000
LPCSTRLPCSTR szName;szName; // pointer to name (in user addr space)// pointer to name (in user addr space)
DWORDDWORD dwThreadID;dwThreadID; // thread ID (-1=caller thread)// thread ID (-1=caller thread)
DWORDDWORD dwFlags;dwFlags; // reserved for future use, must be zero// reserved for future use, must be zero
} THREADNAME_INFO;} THREADNAME_INFO;
void SetThreadName( DWORD dwThread, LPCSTR szThreadName, DWORD dwFlags )void SetThreadName( DWORD dwThread, LPCSTR szThreadName, DWORD dwFlags )
{{
THREADNAME_INFO info;THREADNAME_INFO info;
info.dwType = 0x1000;info.dwType = 0x1000;
info.szName = szThreadName;info.szName = szThreadName;
info.dwThreadID = dwThread;info.dwThreadID = dwThread;
info.dwFlags = dwFlags;info.dwFlags = dwFlags;
__try__try
{{
RaiseException( 0x406D1388, 0, sizeof(info)/sizeof(DWORD), (DWORD*)&info );RaiseException( 0x406D1388, 0, sizeof(info)/sizeof(DWORD), (DWORD*)&info );
}}
__except(EXCEPTION_CONTINUE_EXECUTION)__except(EXCEPTION_CONTINUE_EXECUTION)
{{
}}
์ฝ˜์†”์ฝ˜์†” TRACETRACE
๏ฌ ์ œํ’ˆ ๋””๋ฒ„๊น… ์‹œ์—๋„ ํ™œ์šฉ ๊ฐ€๋Šฅ์ œํ’ˆ ๋””๋ฒ„๊น… ์‹œ์—๋„ ํ™œ์šฉ ๊ฐ€๋Šฅ
๏ฌ AllocConsoleAllocConsole ์™€์™€ FreeConsole APIFreeConsole API ํ™œ์šฉํ™œ์šฉ
๏ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์‹คํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์‹ค
ํ–‰ ์˜ต์…˜ ์ด์šฉํ–‰ ์˜ต์…˜ ์ด์šฉ
SP2SP2 ์—์„œ์˜ ์›๊ฒฉ ๋””๋ฒ„๊น…์—์„œ์˜ ์›๊ฒฉ ๋””๋ฒ„๊น…
๏ฌ DCOMDCOM ์„ค์ •์„ค์ • (Visual Studio Computer)(Visual Studio Computer)
๏ƒ˜ DCOMCNFGDCOMCNFG ์‹คํ–‰์‹คํ–‰
๏‚ง Component ServicesComponent Services ๏ƒ ๏ƒ  ์ปดํ“จํ„ฐ์ปดํ“จํ„ฐ ๏ƒ ๏ƒ  ๋‚ด ์ปดํ“จํ„ฐ ํด๋ฆญํ›„์— ๋‚ด ์ปดํ“จ๋‚ด ์ปดํ“จํ„ฐ ํด๋ฆญํ›„์— ๋‚ด ์ปดํ“จ
ํ„ฐ ๊ตฌ์„ฑ ๋ฒ„ํŠผ ํด๋ฆญํ„ฐ ๊ตฌ์„ฑ ๋ฒ„ํŠผ ํด๋ฆญ
๏‚ง ๊ธฐ๋ณธ๊ธฐ๋ณธ COMCOM ๋ณด์•ˆ ํƒญ์—์„œ ์•ก์„ธ์Šค ๊ถŒํ•œ์—๋ณด์•ˆ ํƒญ์—์„œ ์•ก์„ธ์Šค ๊ถŒํ•œ์— ANONYMOUS LOGONANONYMOUS LOGON
์ถ”๊ฐ€ ํ›„์ถ”๊ฐ€ ํ›„ ,, ์›๊ฒฉ ์ ‘์† ๊ถŒํ•œ ํ—ˆ์šฉ์›๊ฒฉ ์ ‘์† ๊ถŒํ•œ ํ—ˆ์šฉ
๏ฌ WindowsWindows ๋ฐฉํ™”๋ฒฝ ์„ค์ •๋ฐฉํ™”๋ฒฝ ์„ค์ • (VS(VS ์™€ ์›๊ฒฉ ๋ชจ๋‘์™€ ์›๊ฒฉ ๋ชจ๋‘ ))
๏ƒ˜ DebuggerFirewallConfiguration.exeDebuggerFirewallConfiguration.exe ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ
๏ฌ ASP, ASP.NET, ATLASP, ASP.NET, ATL ์„œ๋ฒ„ ๋””๋ฒ„๊น…์„œ๋ฒ„ ๋””๋ฒ„๊น…
๏ƒ˜ Enable Web Server Debugging :Enable Web Server Debugging : KB 833977KB 833977
๏ฌ ์Šคํฌ๋ฆฝํŠธ ๋””๋ฒ„๊น…์Šคํฌ๋ฆฝํŠธ ๋””๋ฒ„๊น…
๏ƒ˜ Enable Script Debugging :Enable Script Debugging : KB 833977KB 833977
๏ฌ ์›๊ฒฉ์›๊ฒฉ T-SQLT-SQL ๋””๋ฒ„๊น…๋””๋ฒ„๊น…
๏ƒ˜ ํ˜„์žฌ๋กœ์„œ๋Š” ๋ถˆ๊ฐ€๋Šฅํ˜„์žฌ๋กœ์„œ๋Š” ๋ถˆ๊ฐ€๋Šฅ , SP, SP ์ œ๊ณต ํ›„ ์ง€์› ๊ฐ€๋Šฅ์ œ๊ณต ํ›„ ์ง€์› ๊ฐ€๋Šฅ
๏ฌ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ž๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ž
๏ƒ˜ Run the debugger as a normal user :Run the debugger as a normal user : KB 833977KB 833977
ํ”„๋กœ์„ธ์Šค ๋‹ค๋ฃจ๊ธฐํ”„๋กœ์„ธ์Šค ๋‹ค๋ฃจ๊ธฐ
๏ฌ Process KillProcess Kill
๏ƒ˜ ์ž‘์—… ๊ด€๋ฆฌ์ž์ž‘์—… ๊ด€๋ฆฌ์ž , Process Explorer,, Process Explorer,
Taskkill(Windows XP+)Taskkill(Windows XP+)
๏ฌ ์šฐ์„  ์ˆœ์œ„ ๋‹ค๋ฃจ๊ธฐ์šฐ์„  ์ˆœ์œ„ ๋‹ค๋ฃจ๊ธฐ
๏ƒ˜ ntsd taskmgrntsd taskmgr ๋กœ๋กœ SeDebugPrivilegeSeDebugPrivilege ํš๋“ํš๋“
๏‚ง ntsd โ€“hd โ€“c โ€œqdโ€ taskmgrntsd โ€“hd โ€“c โ€œqdโ€ taskmgr
๏‚ง -hd :-hd : ์ผ๋ฐ˜ ํž™ ์‚ฌ์šฉ์ผ๋ฐ˜ ํž™ ์‚ฌ์šฉ
๏‚ง -c :-c : ์ฒซ๋ฒˆ์งธ ๋ช…๋ น ์‹คํ–‰์ฒซ๋ฒˆ์งธ ๋ช…๋ น ์‹คํ–‰
์‹คํ–‰ ์ˆœ์„œ ํ™•์ธ์‹คํ–‰ ์ˆœ์„œ ํ™•์ธ
๏ฌ ManagedManaged ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์ˆœ์„œ ํ™•์ธ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์ˆœ์„œ ํ™•์ธ
๏ƒ˜ ํ”„๋กœ๊ทธ๋žจ์˜ ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹คํ”„๋กœ๊ทธ๋žจ์˜ ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹ค ..
๏ƒ˜ ํ”„๋กœํŒŒ์ผ๋งํ”„๋กœํŒŒ์ผ๋ง (Profiling)(Profiling) ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ
๏ƒ˜ CORDBG.EXECORDBG.EXE ์˜์˜ wtwt ๋ช…๋ น๋ช…๋ น
(cordbg) wt(cordbg) wt
1 App::Main1 App::Main
3 App::Foo3 App::Foo
3 App::Bar3 App::Bar
5 App::Baz5 App::Baz
3 App::Bar3 App::Bar
3 App::Foo3 App::Foo
3 App::Main3 App::Main
21 instructions total21 instructions total
๋””๋ฒ„๊ทธ๋””๋ฒ„๊ทธ FA-KBFA-KB
๏ฌ Debugger slow to startupDebugger slow to startup
๏ƒ˜ 312115, XDK pre-Feb 2003, IIS Admin312115, XDK pre-Feb 2003, IIS Admin
๏ฌ Crash on Attach to ProcessCrash on Attach to Process
๏ƒ˜ 324879324879
๏ฌ Trouble reading 6.0 pdbsTrouble reading 6.0 pdbs
๏ƒ˜ 318135318135
๏ฌ Stepping in C# not accurateStepping in C# not accurate
๏ƒ˜ 316834 (fix in .NET SP1 C# compiler)316834 (fix in .NET SP1 C# compiler)
๏ฌ Cannot debug with KD attachedCannot debug with KD attached
๏ƒ˜ 306037306037
๏ฌ Managed app fails to startManaged app fails to start
๏ƒ˜ 326098326098
ExceptionException ์˜ ๋‘๊ฐ€์ง€ ํƒ€์ž…์˜ ๋‘๊ฐ€์ง€ ํƒ€์ž…
๏ฌ First Chance ExceptionFirst Chance Exception
๏ƒ˜ ๋””๋ฒ„๊ธฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋””๋ฒ„๊ฑฐ๊ฐ€๋””๋ฒ„๊ธฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋””๋ฒ„๊ฑฐ๊ฐ€
๊ฐ€๋กœ์ฑ˜์„ ๋•Œ์˜๊ฐ€๋กœ์ฑ˜์„ ๋•Œ์˜ ExceptionException
๏ƒ˜ ๋””๋ฒ„๊ฑฐ๋Š” ์ด๋””๋ฒ„๊ฑฐ๋Š” ์ด ExceptionException ์„ ๋””๋ฒ„๊ธฐ๊ฐ€ ์ฒ˜๋ฆฌ์„ ๋””๋ฒ„๊ธฐ๊ฐ€ ์ฒ˜๋ฆฌ
ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„˜๊น€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„˜๊น€
๏ฌ Second chance ExceptionSecond chance Exception
๏ƒ˜ ๋””๋ฒ„๊ฑฐ๊ฐ€ ์ „๋‹ฌํ•œ๋””๋ฒ„๊ฑฐ๊ฐ€ ์ „๋‹ฌํ•œ ExceptionException ์„ ๋””๋ฒ„๊ธฐ๊ฐ€์„ ๋””๋ฒ„๊ธฐ๊ฐ€
์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋””๋ฒ„๊ฑฐ๋กœ ๋‹ค์‹œ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋””๋ฒ„๊ฑฐ๋กœ ๋‹ค์‹œ ExceptionException
์ด ๋‚ ์•„์˜ด์ด ๋‚ ์•„์˜ด
๏ƒ˜ ๋””๋ฒ„๊ธฐ๊ฐ€๋””๋ฒ„๊ธฐ๊ฐ€ ExceptionException ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ–ˆ๊ธฐ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ–ˆ๊ธฐ
๋•Œ๋ฌธ์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ !!
ยฉ 2004 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Mais conteรบdo relacionado

Mais procurados

[NDC12] ๋ณ€ํ™”๋Ÿ‰ ๋ถ„์„์„ ์ค‘์‹ฌ์œผ๋กœ ํ•œ ์ €๋น„์šฉ ๊ณ ํšจ์œจ์˜ ์ง€์†๊ฐ€๋Šฅํ•œ ์ฝ”๋“œํ€„๋ฆฌํ‹ฐ ๊ด€๋ฆฌ๋ฒ• - ์†ก์ฐฝ๊ทœ
[NDC12] ๋ณ€ํ™”๋Ÿ‰ ๋ถ„์„์„ ์ค‘์‹ฌ์œผ๋กœ ํ•œ ์ €๋น„์šฉ ๊ณ ํšจ์œจ์˜ ์ง€์†๊ฐ€๋Šฅํ•œ ์ฝ”๋“œํ€„๋ฆฌํ‹ฐ ๊ด€๋ฆฌ๋ฒ• - ์†ก์ฐฝ๊ทœ[NDC12] ๋ณ€ํ™”๋Ÿ‰ ๋ถ„์„์„ ์ค‘์‹ฌ์œผ๋กœ ํ•œ ์ €๋น„์šฉ ๊ณ ํšจ์œจ์˜ ์ง€์†๊ฐ€๋Šฅํ•œ ์ฝ”๋“œํ€„๋ฆฌํ‹ฐ ๊ด€๋ฆฌ๋ฒ• - ์†ก์ฐฝ๊ทœ
[NDC12] ๋ณ€ํ™”๋Ÿ‰ ๋ถ„์„์„ ์ค‘์‹ฌ์œผ๋กœ ํ•œ ์ €๋น„์šฉ ๊ณ ํšจ์œจ์˜ ์ง€์†๊ฐ€๋Šฅํ•œ ์ฝ”๋“œํ€„๋ฆฌํ‹ฐ ๊ด€๋ฆฌ๋ฒ• - ์†ก์ฐฝ๊ทœChangKyu Song
ย 
๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๋Š” ์ข‹์€ ์ฝ”๋“œ ์„œ์˜ํ›ˆ
๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๋Š” ์ข‹์€ ์ฝ”๋“œ   ์„œ์˜ํ›ˆ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๋Š” ์ข‹์€ ์ฝ”๋“œ   ์„œ์˜ํ›ˆ
๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๋Š” ์ข‹์€ ์ฝ”๋“œ ์„œ์˜ํ›ˆSeo YoungHoon
ย 
์˜จ๋ผ์ธ ๊ฒŒ์ž„์—์„œ ์‚ฌ๋ก€๋กœ ์‚ดํŽด๋ณด๋Š” ๋””๋ฒ„๊น… in NDC2010
์˜จ๋ผ์ธ ๊ฒŒ์ž„์—์„œ ์‚ฌ๋ก€๋กœ ์‚ดํŽด๋ณด๋Š” ๋””๋ฒ„๊น… in NDC2010์˜จ๋ผ์ธ ๊ฒŒ์ž„์—์„œ ์‚ฌ๋ก€๋กœ ์‚ดํŽด๋ณด๋Š” ๋””๋ฒ„๊น… in NDC2010
์˜จ๋ผ์ธ ๊ฒŒ์ž„์—์„œ ์‚ฌ๋ก€๋กœ ์‚ดํŽด๋ณด๋Š” ๋””๋ฒ„๊น… in NDC2010Ryan Park
ย 
Java the good parts
Java the good partsJava the good parts
Java the good partsSungchul Park
ย 
ํŒ€์žฅ ์ž”์†Œ๋ฆฌ
ํŒ€์žฅ ์ž”์†Œ๋ฆฌํŒ€์žฅ ์ž”์†Œ๋ฆฌ
ํŒ€์žฅ ์ž”์†Œ๋ฆฌSungchul Park
ย 
แ„‹แ…ตแ†ฐแ„€แ…ต แ„Œแ…ฉแ‡‚แ„‹แ…ณแ†ซ แ„แ…ฉแ„ƒแ…ณแ„€แ…ก แ„Œแ…ฉแ‡‚แ„‹แ…ณแ†ซแ„แ…ฉแ„ƒแ…ณแ„ƒแ…ก
แ„‹แ…ตแ†ฐแ„€แ…ต แ„Œแ…ฉแ‡‚แ„‹แ…ณแ†ซ แ„แ…ฉแ„ƒแ…ณแ„€แ…ก แ„Œแ…ฉแ‡‚แ„‹แ…ณแ†ซแ„แ…ฉแ„ƒแ…ณแ„ƒแ…กแ„‹แ…ตแ†ฐแ„€แ…ต แ„Œแ…ฉแ‡‚แ„‹แ…ณแ†ซ แ„แ…ฉแ„ƒแ…ณแ„€แ…ก แ„Œแ…ฉแ‡‚แ„‹แ…ณแ†ซแ„แ…ฉแ„ƒแ…ณแ„ƒแ…ก
แ„‹แ…ตแ†ฐแ„€แ…ต แ„Œแ…ฉแ‡‚แ„‹แ…ณแ†ซ แ„แ…ฉแ„ƒแ…ณแ„€แ…ก แ„Œแ…ฉแ‡‚แ„‹แ…ณแ†ซแ„แ…ฉแ„ƒแ…ณแ„ƒแ…กwonmin lee
ย 
19.debugger detected and anti anti-techniques hangul
19.debugger detected and anti anti-techniques hangul19.debugger detected and anti anti-techniques hangul
19.debugger detected and anti anti-techniques hangulre4lfl0w
ย 
Work With Engineer
Work With EngineerWork With Engineer
Work With EngineerSungchul Park
ย 
Effective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinEffective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinDong Chan Shin
ย 
Exception&log
Exception&logException&log
Exception&logNam Hyeonuk
ย 
C++ ํ”„๋กœ์ ํŠธ์— ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋„์ž…ํ•˜๊ธฐ
C++ ํ”„๋กœ์ ํŠธ์— ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋„์ž…ํ•˜๊ธฐC++ ํ”„๋กœ์ ํŠธ์— ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋„์ž…ํ•˜๊ธฐ
C++ ํ”„๋กœ์ ํŠธ์— ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋„์ž…ํ•˜๊ธฐHeo Seungwook
ย 
[Toolcon2014] WebStorm์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฆฌํŒฉํ† ๋งํ•˜๊ธฐ
[Toolcon2014] WebStorm์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฆฌํŒฉํ† ๋งํ•˜๊ธฐ[Toolcon2014] WebStorm์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฆฌํŒฉํ† ๋งํ•˜๊ธฐ
[Toolcon2014] WebStorm์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฆฌํŒฉํ† ๋งํ•˜๊ธฐ์šฐ์˜ ์ฃผ
ย 
PSR - Code Convention
PSR - Code ConventionPSR - Code Convention
PSR - Code Conventionjhyeon1010
ย 
[์‹ค์ „ ์œˆ๋„์šฐ ๋””๋ฒ„๊น…] 13 ํฌ์ŠคํŠธ๋ชจํ…œ ๋””๋ฒ„๊น…
[์‹ค์ „ ์œˆ๋„์šฐ ๋””๋ฒ„๊น…] 13 ํฌ์ŠคํŠธ๋ชจํ…œ ๋””๋ฒ„๊น…[์‹ค์ „ ์œˆ๋„์šฐ ๋””๋ฒ„๊น…] 13 ํฌ์ŠคํŠธ๋ชจํ…œ ๋””๋ฒ„๊น…
[์‹ค์ „ ์œˆ๋„์šฐ ๋””๋ฒ„๊น…] 13 ํฌ์ŠคํŠธ๋ชจํ…œ ๋””๋ฒ„๊น…์ข…๋นˆ ์˜ค
ย 
แ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„Œแ…ก แ„ƒแ…กแ†ซแ„‹แ…ฑแ„แ…ฆแ„‰แ…ณแ„แ…ณ
แ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„Œแ…ก แ„ƒแ…กแ†ซแ„‹แ…ฑแ„แ…ฆแ„‰แ…ณแ„แ…ณแ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„Œแ…ก แ„ƒแ…กแ†ซแ„‹แ…ฑแ„แ…ฆแ„‰แ…ณแ„แ…ณ
แ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„Œแ…ก แ„ƒแ…กแ†ซแ„‹แ…ฑแ„แ…ฆแ„‰แ…ณแ„แ…ณYongEun Choi
ย 
NDC 2017 ๋ผ์ด๋ธŒ ํ”„๋กœ์„ธ์Šค ๋ถ„์„์„ ํ†ตํ•œ ํšจ์œจ์ ์ธ ๊ฒŒ์ž„ ๋กœ์ง ๊ฐœ๋ฐœ - ๊น€์„ฑ์€
NDC 2017 ๋ผ์ด๋ธŒ ํ”„๋กœ์„ธ์Šค ๋ถ„์„์„ ํ†ตํ•œ ํšจ์œจ์ ์ธ ๊ฒŒ์ž„ ๋กœ์ง ๊ฐœ๋ฐœ - ๊น€์„ฑ์€NDC 2017 ๋ผ์ด๋ธŒ ํ”„๋กœ์„ธ์Šค ๋ถ„์„์„ ํ†ตํ•œ ํšจ์œจ์ ์ธ ๊ฒŒ์ž„ ๋กœ์ง ๊ฐœ๋ฐœ - ๊น€์„ฑ์€
NDC 2017 ๋ผ์ด๋ธŒ ํ”„๋กœ์„ธ์Šค ๋ถ„์„์„ ํ†ตํ•œ ํšจ์œจ์ ์ธ ๊ฒŒ์ž„ ๋กœ์ง ๊ฐœ๋ฐœ - ๊น€์„ฑ์€Sung Eun Kim
ย 
Tdd retro agile_korea_๊ฒŒ์‹œ์šฉ
Tdd retro agile_korea_๊ฒŒ์‹œ์šฉTdd retro agile_korea_๊ฒŒ์‹œ์šฉ
Tdd retro agile_korea_๊ฒŒ์‹œ์šฉSangcheol Hwang
ย 
์Šคํ”„๋ง ์ฝ”์–ด ๊ฐ•์˜ 1๋ถ€ - ๋ด„ ๋งž์ด ์ค€๋น„ ์šด๋™
์Šคํ”„๋ง ์ฝ”์–ด ๊ฐ•์˜ 1๋ถ€ - ๋ด„ ๋งž์ด ์ค€๋น„ ์šด๋™์Šคํ”„๋ง ์ฝ”์–ด ๊ฐ•์˜ 1๋ถ€ - ๋ด„ ๋งž์ด ์ค€๋น„ ์šด๋™
์Šคํ”„๋ง ์ฝ”์–ด ๊ฐ•์˜ 1๋ถ€ - ๋ด„ ๋งž์ด ์ค€๋น„ ์šด๋™Sungchul Park
ย 
[1B1]์Šค์œ„ํ”„ํŠธํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด
[1B1]์Šค์œ„ํ”„ํŠธํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด[1B1]์Šค์œ„ํ”„ํŠธํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด
[1B1]์Šค์œ„ํ”„ํŠธํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ดNAVER D2
ย 

Mais procurados (19)

[NDC12] ๋ณ€ํ™”๋Ÿ‰ ๋ถ„์„์„ ์ค‘์‹ฌ์œผ๋กœ ํ•œ ์ €๋น„์šฉ ๊ณ ํšจ์œจ์˜ ์ง€์†๊ฐ€๋Šฅํ•œ ์ฝ”๋“œํ€„๋ฆฌํ‹ฐ ๊ด€๋ฆฌ๋ฒ• - ์†ก์ฐฝ๊ทœ
[NDC12] ๋ณ€ํ™”๋Ÿ‰ ๋ถ„์„์„ ์ค‘์‹ฌ์œผ๋กœ ํ•œ ์ €๋น„์šฉ ๊ณ ํšจ์œจ์˜ ์ง€์†๊ฐ€๋Šฅํ•œ ์ฝ”๋“œํ€„๋ฆฌํ‹ฐ ๊ด€๋ฆฌ๋ฒ• - ์†ก์ฐฝ๊ทœ[NDC12] ๋ณ€ํ™”๋Ÿ‰ ๋ถ„์„์„ ์ค‘์‹ฌ์œผ๋กœ ํ•œ ์ €๋น„์šฉ ๊ณ ํšจ์œจ์˜ ์ง€์†๊ฐ€๋Šฅํ•œ ์ฝ”๋“œํ€„๋ฆฌํ‹ฐ ๊ด€๋ฆฌ๋ฒ• - ์†ก์ฐฝ๊ทœ
[NDC12] ๋ณ€ํ™”๋Ÿ‰ ๋ถ„์„์„ ์ค‘์‹ฌ์œผ๋กœ ํ•œ ์ €๋น„์šฉ ๊ณ ํšจ์œจ์˜ ์ง€์†๊ฐ€๋Šฅํ•œ ์ฝ”๋“œํ€„๋ฆฌํ‹ฐ ๊ด€๋ฆฌ๋ฒ• - ์†ก์ฐฝ๊ทœ
ย 
๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๋Š” ์ข‹์€ ์ฝ”๋“œ ์„œ์˜ํ›ˆ
๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๋Š” ์ข‹์€ ์ฝ”๋“œ   ์„œ์˜ํ›ˆ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๋Š” ์ข‹์€ ์ฝ”๋“œ   ์„œ์˜ํ›ˆ
๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๋Š” ์ข‹์€ ์ฝ”๋“œ ์„œ์˜ํ›ˆ
ย 
์˜จ๋ผ์ธ ๊ฒŒ์ž„์—์„œ ์‚ฌ๋ก€๋กœ ์‚ดํŽด๋ณด๋Š” ๋””๋ฒ„๊น… in NDC2010
์˜จ๋ผ์ธ ๊ฒŒ์ž„์—์„œ ์‚ฌ๋ก€๋กœ ์‚ดํŽด๋ณด๋Š” ๋””๋ฒ„๊น… in NDC2010์˜จ๋ผ์ธ ๊ฒŒ์ž„์—์„œ ์‚ฌ๋ก€๋กœ ์‚ดํŽด๋ณด๋Š” ๋””๋ฒ„๊น… in NDC2010
์˜จ๋ผ์ธ ๊ฒŒ์ž„์—์„œ ์‚ฌ๋ก€๋กœ ์‚ดํŽด๋ณด๋Š” ๋””๋ฒ„๊น… in NDC2010
ย 
Java the good parts
Java the good partsJava the good parts
Java the good parts
ย 
ํŒ€์žฅ ์ž”์†Œ๋ฆฌ
ํŒ€์žฅ ์ž”์†Œ๋ฆฌํŒ€์žฅ ์ž”์†Œ๋ฆฌ
ํŒ€์žฅ ์ž”์†Œ๋ฆฌ
ย 
แ„‹แ…ตแ†ฐแ„€แ…ต แ„Œแ…ฉแ‡‚แ„‹แ…ณแ†ซ แ„แ…ฉแ„ƒแ…ณแ„€แ…ก แ„Œแ…ฉแ‡‚แ„‹แ…ณแ†ซแ„แ…ฉแ„ƒแ…ณแ„ƒแ…ก
แ„‹แ…ตแ†ฐแ„€แ…ต แ„Œแ…ฉแ‡‚แ„‹แ…ณแ†ซ แ„แ…ฉแ„ƒแ…ณแ„€แ…ก แ„Œแ…ฉแ‡‚แ„‹แ…ณแ†ซแ„แ…ฉแ„ƒแ…ณแ„ƒแ…กแ„‹แ…ตแ†ฐแ„€แ…ต แ„Œแ…ฉแ‡‚แ„‹แ…ณแ†ซ แ„แ…ฉแ„ƒแ…ณแ„€แ…ก แ„Œแ…ฉแ‡‚แ„‹แ…ณแ†ซแ„แ…ฉแ„ƒแ…ณแ„ƒแ…ก
แ„‹แ…ตแ†ฐแ„€แ…ต แ„Œแ…ฉแ‡‚แ„‹แ…ณแ†ซ แ„แ…ฉแ„ƒแ…ณแ„€แ…ก แ„Œแ…ฉแ‡‚แ„‹แ…ณแ†ซแ„แ…ฉแ„ƒแ…ณแ„ƒแ…ก
ย 
19.debugger detected and anti anti-techniques hangul
19.debugger detected and anti anti-techniques hangul19.debugger detected and anti anti-techniques hangul
19.debugger detected and anti anti-techniques hangul
ย 
Work With Engineer
Work With EngineerWork With Engineer
Work With Engineer
ย 
Effective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinEffective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshin
ย 
Exception&log
Exception&logException&log
Exception&log
ย 
C++ ํ”„๋กœ์ ํŠธ์— ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋„์ž…ํ•˜๊ธฐ
C++ ํ”„๋กœ์ ํŠธ์— ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋„์ž…ํ•˜๊ธฐC++ ํ”„๋กœ์ ํŠธ์— ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋„์ž…ํ•˜๊ธฐ
C++ ํ”„๋กœ์ ํŠธ์— ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋„์ž…ํ•˜๊ธฐ
ย 
[Toolcon2014] WebStorm์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฆฌํŒฉํ† ๋งํ•˜๊ธฐ
[Toolcon2014] WebStorm์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฆฌํŒฉํ† ๋งํ•˜๊ธฐ[Toolcon2014] WebStorm์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฆฌํŒฉํ† ๋งํ•˜๊ธฐ
[Toolcon2014] WebStorm์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฆฌํŒฉํ† ๋งํ•˜๊ธฐ
ย 
PSR - Code Convention
PSR - Code ConventionPSR - Code Convention
PSR - Code Convention
ย 
[์‹ค์ „ ์œˆ๋„์šฐ ๋””๋ฒ„๊น…] 13 ํฌ์ŠคํŠธ๋ชจํ…œ ๋””๋ฒ„๊น…
[์‹ค์ „ ์œˆ๋„์šฐ ๋””๋ฒ„๊น…] 13 ํฌ์ŠคํŠธ๋ชจํ…œ ๋””๋ฒ„๊น…[์‹ค์ „ ์œˆ๋„์šฐ ๋””๋ฒ„๊น…] 13 ํฌ์ŠคํŠธ๋ชจํ…œ ๋””๋ฒ„๊น…
[์‹ค์ „ ์œˆ๋„์šฐ ๋””๋ฒ„๊น…] 13 ํฌ์ŠคํŠธ๋ชจํ…œ ๋””๋ฒ„๊น…
ย 
แ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„Œแ…ก แ„ƒแ…กแ†ซแ„‹แ…ฑแ„แ…ฆแ„‰แ…ณแ„แ…ณ
แ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„Œแ…ก แ„ƒแ…กแ†ซแ„‹แ…ฑแ„แ…ฆแ„‰แ…ณแ„แ…ณแ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„Œแ…ก แ„ƒแ…กแ†ซแ„‹แ…ฑแ„แ…ฆแ„‰แ…ณแ„แ…ณ
แ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„Œแ…ก แ„ƒแ…กแ†ซแ„‹แ…ฑแ„แ…ฆแ„‰แ…ณแ„แ…ณ
ย 
NDC 2017 ๋ผ์ด๋ธŒ ํ”„๋กœ์„ธ์Šค ๋ถ„์„์„ ํ†ตํ•œ ํšจ์œจ์ ์ธ ๊ฒŒ์ž„ ๋กœ์ง ๊ฐœ๋ฐœ - ๊น€์„ฑ์€
NDC 2017 ๋ผ์ด๋ธŒ ํ”„๋กœ์„ธ์Šค ๋ถ„์„์„ ํ†ตํ•œ ํšจ์œจ์ ์ธ ๊ฒŒ์ž„ ๋กœ์ง ๊ฐœ๋ฐœ - ๊น€์„ฑ์€NDC 2017 ๋ผ์ด๋ธŒ ํ”„๋กœ์„ธ์Šค ๋ถ„์„์„ ํ†ตํ•œ ํšจ์œจ์ ์ธ ๊ฒŒ์ž„ ๋กœ์ง ๊ฐœ๋ฐœ - ๊น€์„ฑ์€
NDC 2017 ๋ผ์ด๋ธŒ ํ”„๋กœ์„ธ์Šค ๋ถ„์„์„ ํ†ตํ•œ ํšจ์œจ์ ์ธ ๊ฒŒ์ž„ ๋กœ์ง ๊ฐœ๋ฐœ - ๊น€์„ฑ์€
ย 
Tdd retro agile_korea_๊ฒŒ์‹œ์šฉ
Tdd retro agile_korea_๊ฒŒ์‹œ์šฉTdd retro agile_korea_๊ฒŒ์‹œ์šฉ
Tdd retro agile_korea_๊ฒŒ์‹œ์šฉ
ย 
์Šคํ”„๋ง ์ฝ”์–ด ๊ฐ•์˜ 1๋ถ€ - ๋ด„ ๋งž์ด ์ค€๋น„ ์šด๋™
์Šคํ”„๋ง ์ฝ”์–ด ๊ฐ•์˜ 1๋ถ€ - ๋ด„ ๋งž์ด ์ค€๋น„ ์šด๋™์Šคํ”„๋ง ์ฝ”์–ด ๊ฐ•์˜ 1๋ถ€ - ๋ด„ ๋งž์ด ์ค€๋น„ ์šด๋™
์Šคํ”„๋ง ์ฝ”์–ด ๊ฐ•์˜ 1๋ถ€ - ๋ด„ ๋งž์ด ์ค€๋น„ ์šด๋™
ย 
[1B1]์Šค์œ„ํ”„ํŠธํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด
[1B1]์Šค์œ„ํ”„ํŠธํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด[1B1]์Šค์œ„ํ”„ํŠธํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด
[1B1]์Šค์œ„ํ”„ํŠธํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด
ย 

Destaque

[2014 CodeEngn Conference 10] ๋…ธ์šฉํ™˜ - ๋””๋ฒ„๊ฑฐ ๊ฐœ๋ฐœ, ์‚ฝ์งˆ๊ธฐ
[2014 CodeEngn Conference 10] ๋…ธ์šฉํ™˜ -  ๋””๋ฒ„๊ฑฐ ๊ฐœ๋ฐœ, ์‚ฝ์งˆ๊ธฐ[2014 CodeEngn Conference 10] ๋…ธ์šฉํ™˜ -  ๋””๋ฒ„๊ฑฐ ๊ฐœ๋ฐœ, ์‚ฝ์งˆ๊ธฐ
[2014 CodeEngn Conference 10] ๋…ธ์šฉํ™˜ - ๋””๋ฒ„๊ฑฐ ๊ฐœ๋ฐœ, ์‚ฝ์งˆ๊ธฐGangSeok Lee
ย 
Windbg๋ž‘ ์นœํ•ด์ง€๊ธฐ
Windbg๋ž‘ ์นœํ•ด์ง€๊ธฐWindbg๋ž‘ ์นœํ•ด์ง€๊ธฐ
Windbg๋ž‘ ์นœํ•ด์ง€๊ธฐJi Hun Kim
ย 
๋ณด์•ˆ ์œ„ํ˜‘๊ณผ ์•…์„ฑ์ฝ”๋“œ ๋ถ„์„ ๊ธฐ๋ฒ•
๋ณด์•ˆ ์œ„ํ˜‘๊ณผ ์•…์„ฑ์ฝ”๋“œ ๋ถ„์„ ๊ธฐ๋ฒ•๋ณด์•ˆ ์œ„ํ˜‘๊ณผ ์•…์„ฑ์ฝ”๋“œ ๋ถ„์„ ๊ธฐ๋ฒ•
๋ณด์•ˆ ์œ„ํ˜‘๊ณผ ์•…์„ฑ์ฝ”๋“œ ๋ถ„์„ ๊ธฐ๋ฒ•Youngjun Chang
ย 
์‹ค์ „ ์œˆ๋„์šฐ ๋””๋ฒ„๊น…. Ch3. ๋””๋ฒ„๊ฑฐ ํ•ด๋ถ€
์‹ค์ „ ์œˆ๋„์šฐ ๋””๋ฒ„๊น…. Ch3. ๋””๋ฒ„๊ฑฐ ํ•ด๋ถ€์‹ค์ „ ์œˆ๋„์šฐ ๋””๋ฒ„๊น…. Ch3. ๋””๋ฒ„๊ฑฐ ํ•ด๋ถ€
์‹ค์ „ ์œˆ๋„์šฐ ๋””๋ฒ„๊น…. Ch3. ๋””๋ฒ„๊ฑฐ ํ•ด๋ถ€hyun soomyung
ย 
Codegate 2014 - Bug Hunting Challenge [Track0]
Codegate 2014 - Bug Hunting Challenge [Track0]Codegate 2014 - Bug Hunting Challenge [Track0]
Codegate 2014 - Bug Hunting Challenge [Track0]sweetchip
ย 
Inc0gnito fuzzing for_fun_sweetchip
Inc0gnito fuzzing for_fun_sweetchipInc0gnito fuzzing for_fun_sweetchip
Inc0gnito fuzzing for_fun_sweetchipsweetchip
ย 
๋คํ”„ ํŒŒ์ผ์„ ํ†ตํ•œ ์‚ฌํ›„ ๋””๋ฒ„๊น… ์‹ค์šฉ ํ…Œํฌ๋‹‰ NDC2012
๋คํ”„ ํŒŒ์ผ์„ ํ†ตํ•œ ์‚ฌํ›„ ๋””๋ฒ„๊น… ์‹ค์šฉ ํ…Œํฌ๋‹‰ NDC2012๋คํ”„ ํŒŒ์ผ์„ ํ†ตํ•œ ์‚ฌํ›„ ๋””๋ฒ„๊น… ์‹ค์šฉ ํ…Œํฌ๋‹‰ NDC2012
๋คํ”„ ํŒŒ์ผ์„ ํ†ตํ•œ ์‚ฌํ›„ ๋””๋ฒ„๊น… ์‹ค์šฉ ํ…Œํฌ๋‹‰ NDC2012Esun Kim
ย 
[Td 2015]๋””๋ฒ„๊น…, ์–ด๋””๊นŒ์ง€ ํ•ด๋ดค๋‹ˆ ๋‹น์‹ ์ด ์•„๋งˆ๋„ ๋ชฐ๋ž์„ ๋””๋ฒ„๊น… ๊ฟ€ํŒ ๊ณต๊ฐœ(๊น€ํฌ์ค€)
[Td 2015]๋””๋ฒ„๊น…, ์–ด๋””๊นŒ์ง€ ํ•ด๋ดค๋‹ˆ ๋‹น์‹ ์ด ์•„๋งˆ๋„ ๋ชฐ๋ž์„ ๋””๋ฒ„๊น… ๊ฟ€ํŒ ๊ณต๊ฐœ(๊น€ํฌ์ค€)[Td 2015]๋””๋ฒ„๊น…, ์–ด๋””๊นŒ์ง€ ํ•ด๋ดค๋‹ˆ ๋‹น์‹ ์ด ์•„๋งˆ๋„ ๋ชฐ๋ž์„ ๋””๋ฒ„๊น… ๊ฟ€ํŒ ๊ณต๊ฐœ(๊น€ํฌ์ค€)
[Td 2015]๋””๋ฒ„๊น…, ์–ด๋””๊นŒ์ง€ ํ•ด๋ดค๋‹ˆ ๋‹น์‹ ์ด ์•„๋งˆ๋„ ๋ชฐ๋ž์„ ๋””๋ฒ„๊น… ๊ฟ€ํŒ ๊ณต๊ฐœ(๊น€ํฌ์ค€)Sang Don Kim
ย 

Destaque (8)

[2014 CodeEngn Conference 10] ๋…ธ์šฉํ™˜ - ๋””๋ฒ„๊ฑฐ ๊ฐœ๋ฐœ, ์‚ฝ์งˆ๊ธฐ
[2014 CodeEngn Conference 10] ๋…ธ์šฉํ™˜ -  ๋””๋ฒ„๊ฑฐ ๊ฐœ๋ฐœ, ์‚ฝ์งˆ๊ธฐ[2014 CodeEngn Conference 10] ๋…ธ์šฉํ™˜ -  ๋””๋ฒ„๊ฑฐ ๊ฐœ๋ฐœ, ์‚ฝ์งˆ๊ธฐ
[2014 CodeEngn Conference 10] ๋…ธ์šฉํ™˜ - ๋””๋ฒ„๊ฑฐ ๊ฐœ๋ฐœ, ์‚ฝ์งˆ๊ธฐ
ย 
Windbg๋ž‘ ์นœํ•ด์ง€๊ธฐ
Windbg๋ž‘ ์นœํ•ด์ง€๊ธฐWindbg๋ž‘ ์นœํ•ด์ง€๊ธฐ
Windbg๋ž‘ ์นœํ•ด์ง€๊ธฐ
ย 
๋ณด์•ˆ ์œ„ํ˜‘๊ณผ ์•…์„ฑ์ฝ”๋“œ ๋ถ„์„ ๊ธฐ๋ฒ•
๋ณด์•ˆ ์œ„ํ˜‘๊ณผ ์•…์„ฑ์ฝ”๋“œ ๋ถ„์„ ๊ธฐ๋ฒ•๋ณด์•ˆ ์œ„ํ˜‘๊ณผ ์•…์„ฑ์ฝ”๋“œ ๋ถ„์„ ๊ธฐ๋ฒ•
๋ณด์•ˆ ์œ„ํ˜‘๊ณผ ์•…์„ฑ์ฝ”๋“œ ๋ถ„์„ ๊ธฐ๋ฒ•
ย 
์‹ค์ „ ์œˆ๋„์šฐ ๋””๋ฒ„๊น…. Ch3. ๋””๋ฒ„๊ฑฐ ํ•ด๋ถ€
์‹ค์ „ ์œˆ๋„์šฐ ๋””๋ฒ„๊น…. Ch3. ๋””๋ฒ„๊ฑฐ ํ•ด๋ถ€์‹ค์ „ ์œˆ๋„์šฐ ๋””๋ฒ„๊น…. Ch3. ๋””๋ฒ„๊ฑฐ ํ•ด๋ถ€
์‹ค์ „ ์œˆ๋„์šฐ ๋””๋ฒ„๊น…. Ch3. ๋””๋ฒ„๊ฑฐ ํ•ด๋ถ€
ย 
Codegate 2014 - Bug Hunting Challenge [Track0]
Codegate 2014 - Bug Hunting Challenge [Track0]Codegate 2014 - Bug Hunting Challenge [Track0]
Codegate 2014 - Bug Hunting Challenge [Track0]
ย 
Inc0gnito fuzzing for_fun_sweetchip
Inc0gnito fuzzing for_fun_sweetchipInc0gnito fuzzing for_fun_sweetchip
Inc0gnito fuzzing for_fun_sweetchip
ย 
๋คํ”„ ํŒŒ์ผ์„ ํ†ตํ•œ ์‚ฌํ›„ ๋””๋ฒ„๊น… ์‹ค์šฉ ํ…Œํฌ๋‹‰ NDC2012
๋คํ”„ ํŒŒ์ผ์„ ํ†ตํ•œ ์‚ฌํ›„ ๋””๋ฒ„๊น… ์‹ค์šฉ ํ…Œํฌ๋‹‰ NDC2012๋คํ”„ ํŒŒ์ผ์„ ํ†ตํ•œ ์‚ฌํ›„ ๋””๋ฒ„๊น… ์‹ค์šฉ ํ…Œํฌ๋‹‰ NDC2012
๋คํ”„ ํŒŒ์ผ์„ ํ†ตํ•œ ์‚ฌํ›„ ๋””๋ฒ„๊น… ์‹ค์šฉ ํ…Œํฌ๋‹‰ NDC2012
ย 
[Td 2015]๋””๋ฒ„๊น…, ์–ด๋””๊นŒ์ง€ ํ•ด๋ดค๋‹ˆ ๋‹น์‹ ์ด ์•„๋งˆ๋„ ๋ชฐ๋ž์„ ๋””๋ฒ„๊น… ๊ฟ€ํŒ ๊ณต๊ฐœ(๊น€ํฌ์ค€)
[Td 2015]๋””๋ฒ„๊น…, ์–ด๋””๊นŒ์ง€ ํ•ด๋ดค๋‹ˆ ๋‹น์‹ ์ด ์•„๋งˆ๋„ ๋ชฐ๋ž์„ ๋””๋ฒ„๊น… ๊ฟ€ํŒ ๊ณต๊ฐœ(๊น€ํฌ์ค€)[Td 2015]๋””๋ฒ„๊น…, ์–ด๋””๊นŒ์ง€ ํ•ด๋ดค๋‹ˆ ๋‹น์‹ ์ด ์•„๋งˆ๋„ ๋ชฐ๋ž์„ ๋””๋ฒ„๊น… ๊ฟ€ํŒ ๊ณต๊ฐœ(๊น€ํฌ์ค€)
[Td 2015]๋””๋ฒ„๊น…, ์–ด๋””๊นŒ์ง€ ํ•ด๋ดค๋‹ˆ ๋‹น์‹ ์ด ์•„๋งˆ๋„ ๋ชฐ๋ž์„ ๋””๋ฒ„๊น… ๊ฟ€ํŒ ๊ณต๊ฐœ(๊น€ํฌ์ค€)
ย 

Semelhante a Windows Debugging Technique #3

ํšจ๊ณผ์ ์ธ ์ž„๋ฒ ๋””๋“œ ๋””๋ฒ„๊น… ํ™˜๊ฒฝ๊ตฌ์ถ•
ํšจ๊ณผ์ ์ธ ์ž„๋ฒ ๋””๋“œ ๋””๋ฒ„๊น… ํ™˜๊ฒฝ๊ตฌ์ถ•ํšจ๊ณผ์ ์ธ ์ž„๋ฒ ๋””๋“œ ๋””๋ฒ„๊น… ํ™˜๊ฒฝ๊ตฌ์ถ•
ํšจ๊ณผ์ ์ธ ์ž„๋ฒ ๋””๋“œ ๋””๋ฒ„๊น… ํ™˜๊ฒฝ๊ตฌ์ถ•guest0ad316e
ย 
๋‹น์‹ ์˜ ๋””๋ฒ„๊น…์— ๋‹ˆ์ฝ”๋‹ˆ์ฝ”๋‹ˆ
๋‹น์‹ ์˜ ๋””๋ฒ„๊น…์— ๋‹ˆ์ฝ”๋‹ˆ์ฝ”๋‹ˆ๋‹น์‹ ์˜ ๋””๋ฒ„๊น…์— ๋‹ˆ์ฝ”๋‹ˆ์ฝ”๋‹ˆ
๋‹น์‹ ์˜ ๋””๋ฒ„๊น…์— ๋‹ˆ์ฝ”๋‹ˆ์ฝ”๋‹ˆLusain Kim
ย 
๋นŒ๋“œ๊ด€๋ฆฌ ๋ฐ ๋””๋ฒ„๊น… (2010๋…„ ์ž๋ฃŒ)
๋นŒ๋“œ๊ด€๋ฆฌ ๋ฐ ๋””๋ฒ„๊น… (2010๋…„ ์ž๋ฃŒ)๋นŒ๋“œ๊ด€๋ฆฌ ๋ฐ ๋””๋ฒ„๊น… (2010๋…„ ์ž๋ฃŒ)
๋นŒ๋“œ๊ด€๋ฆฌ ๋ฐ ๋””๋ฒ„๊น… (2010๋…„ ์ž๋ฃŒ)YEONG-CHEON YOU
ย 
์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ: ์„คํƒ•์—†๋Š” ์„ธ๊ณ„
์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ: ์„คํƒ•์—†๋Š” ์„ธ๊ณ„์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ: ์„คํƒ•์—†๋Š” ์„ธ๊ณ„
์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ: ์„คํƒ•์—†๋Š” ์„ธ๊ณ„Leonardo YongUk Kim
ย 
S#03 ๊น€์šฉํ˜„:VS2010์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜
S#03 ๊น€์šฉํ˜„:VS2010์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜S#03 ๊น€์šฉํ˜„:VS2010์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜
S#03 ๊น€์šฉํ˜„:VS2010์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜codercay
ย 
java_1์žฅ
java_1์žฅjava_1์žฅ
java_1์žฅHeeJung Chae
ย 
java_1์žฅ.pptx
java_1์žฅ.pptxjava_1์žฅ.pptx
java_1์žฅ.pptxHeeJung Chae
ย 
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debuggingJongwon Han
ย 
java_1์žฅ.pptx
java_1์žฅ.pptxjava_1์žฅ.pptx
java_1์žฅ.pptxssuserdfc8b1
ย 
programming with GDB
programming with GDBprogramming with GDB
programming with GDBNakCheon Jung
ย 
๊ธ€๋กœ๋ฒŒ ๊ฒŒ์ž„ ํ”Œ๋žซํผ์—์„œ ๋ฌด์ •์ง€, ๋ฌด์ ๊ฒ€ ์„œ๋ฒ„ ๊ฐœ๋ฐœ๊ณผ ์šด์˜ ์‚ฌ๋ก€
๊ธ€๋กœ๋ฒŒ ๊ฒŒ์ž„ ํ”Œ๋žซํผ์—์„œ ๋ฌด์ •์ง€, ๋ฌด์ ๊ฒ€ ์„œ๋ฒ„ ๊ฐœ๋ฐœ๊ณผ ์šด์˜ ์‚ฌ๋ก€๊ธ€๋กœ๋ฒŒ ๊ฒŒ์ž„ ํ”Œ๋žซํผ์—์„œ ๋ฌด์ •์ง€, ๋ฌด์ ๊ฒ€ ์„œ๋ฒ„ ๊ฐœ๋ฐœ๊ณผ ์šด์˜ ์‚ฌ๋ก€
๊ธ€๋กœ๋ฒŒ ๊ฒŒ์ž„ ํ”Œ๋žซํผ์—์„œ ๋ฌด์ •์ง€, ๋ฌด์ ๊ฒ€ ์„œ๋ฒ„ ๊ฐœ๋ฐœ๊ณผ ์šด์˜ ์‚ฌ๋ก€if kakao
ย 
Android Native Module ์•ˆ์ •์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ
Android Native Module ์•ˆ์ •์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐAndroid Native Module ์•ˆ์ •์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ
Android Native Module ์•ˆ์ •์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐhanbeom Park
ย 
(111217) #fitalk rootkit tools and debugger
(111217) #fitalk   rootkit tools and debugger(111217) #fitalk   rootkit tools and debugger
(111217) #fitalk rootkit tools and debuggerINSIGHT FORENSIC
ย 
NDC 2017 ํ•˜์žฌ์Šน NEXON ZERO (๋„ฅ์Šจ ์ œ๋กœ) ์ ๊ฒ€์—†์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฝ”๋“œ ์ˆ˜์ • ๋ฐ ๊ฒŒ์ž„ ์ •๋ณด ์ˆ˜์ง‘ํ•˜๊ธฐ
NDC 2017 ํ•˜์žฌ์Šน NEXON ZERO (๋„ฅ์Šจ ์ œ๋กœ) ์ ๊ฒ€์—†์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฝ”๋“œ ์ˆ˜์ • ๋ฐ ๊ฒŒ์ž„ ์ •๋ณด ์ˆ˜์ง‘ํ•˜๊ธฐNDC 2017 ํ•˜์žฌ์Šน NEXON ZERO (๋„ฅ์Šจ ์ œ๋กœ) ์ ๊ฒ€์—†์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฝ”๋“œ ์ˆ˜์ • ๋ฐ ๊ฒŒ์ž„ ์ •๋ณด ์ˆ˜์ง‘ํ•˜๊ธฐ
NDC 2017 ํ•˜์žฌ์Šน NEXON ZERO (๋„ฅ์Šจ ์ œ๋กœ) ์ ๊ฒ€์—†์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฝ”๋“œ ์ˆ˜์ • ๋ฐ ๊ฒŒ์ž„ ์ •๋ณด ์ˆ˜์ง‘ํ•˜๊ธฐJaeseung Ha
ย 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rdPark Jonggun
ย 
cross compile
cross compilecross compile
cross compilehe4722
ย 
Mongodb tip42 50
Mongodb tip42 50Mongodb tip42 50
Mongodb tip42 50Kyungryul KIM
ย 
ใ€Žแ„‹แ…ตแ„‘แ…ฆแ†จแ„แ…ตแ„‡แ…ณ แ„ƒแ…ตแ„‡แ…ฅแ„€แ…ตแ†ผใ€ - ๋””๋ฒ„๊น… ์ง€์˜ฅ์—์„œ ํƒˆ์ถœํ•˜๋Š” 66๊ฐ€์ง€ ์ „๋žต๊ณผ ๊ธฐ๋ฒ•
ใ€Žแ„‹แ…ตแ„‘แ…ฆแ†จแ„แ…ตแ„‡แ…ณ แ„ƒแ…ตแ„‡แ…ฅแ„€แ…ตแ†ผใ€ - ๋””๋ฒ„๊น… ์ง€์˜ฅ์—์„œ ํƒˆ์ถœํ•˜๋Š” 66๊ฐ€์ง€ ์ „๋žต๊ณผ ๊ธฐ๋ฒ•ใ€Žแ„‹แ…ตแ„‘แ…ฆแ†จแ„แ…ตแ„‡แ…ณ แ„ƒแ…ตแ„‡แ…ฅแ„€แ…ตแ†ผใ€ - ๋””๋ฒ„๊น… ์ง€์˜ฅ์—์„œ ํƒˆ์ถœํ•˜๋Š” 66๊ฐ€์ง€ ์ „๋žต๊ณผ ๊ธฐ๋ฒ•
ใ€Žแ„‹แ…ตแ„‘แ…ฆแ†จแ„แ…ตแ„‡แ…ณ แ„ƒแ…ตแ„‡แ…ฅแ„€แ…ตแ†ผใ€ - ๋””๋ฒ„๊น… ์ง€์˜ฅ์—์„œ ํƒˆ์ถœํ•˜๋Š” 66๊ฐ€์ง€ ์ „๋žต๊ณผ ๊ธฐ๋ฒ•๋ณต์—ฐ ์ด
ย 
TOAST Meetup2015 - ๊ตฌ๋ฆ„ Cloud IDE (๋ฅ˜์„ฑํƒœ)
TOAST Meetup2015 - ๊ตฌ๋ฆ„ Cloud IDE (๋ฅ˜์„ฑํƒœ)TOAST Meetup2015 - ๊ตฌ๋ฆ„ Cloud IDE (๋ฅ˜์„ฑํƒœ)
TOAST Meetup2015 - ๊ตฌ๋ฆ„ Cloud IDE (๋ฅ˜์„ฑํƒœ)TOAST_NHNent
ย 

Semelhante a Windows Debugging Technique #3 (20)

ํšจ๊ณผ์ ์ธ ์ž„๋ฒ ๋””๋“œ ๋””๋ฒ„๊น… ํ™˜๊ฒฝ๊ตฌ์ถ•
ํšจ๊ณผ์ ์ธ ์ž„๋ฒ ๋””๋“œ ๋””๋ฒ„๊น… ํ™˜๊ฒฝ๊ตฌ์ถ•ํšจ๊ณผ์ ์ธ ์ž„๋ฒ ๋””๋“œ ๋””๋ฒ„๊น… ํ™˜๊ฒฝ๊ตฌ์ถ•
ํšจ๊ณผ์ ์ธ ์ž„๋ฒ ๋””๋“œ ๋””๋ฒ„๊น… ํ™˜๊ฒฝ๊ตฌ์ถ•
ย 
๋‹น์‹ ์˜ ๋””๋ฒ„๊น…์— ๋‹ˆ์ฝ”๋‹ˆ์ฝ”๋‹ˆ
๋‹น์‹ ์˜ ๋””๋ฒ„๊น…์— ๋‹ˆ์ฝ”๋‹ˆ์ฝ”๋‹ˆ๋‹น์‹ ์˜ ๋””๋ฒ„๊น…์— ๋‹ˆ์ฝ”๋‹ˆ์ฝ”๋‹ˆ
๋‹น์‹ ์˜ ๋””๋ฒ„๊น…์— ๋‹ˆ์ฝ”๋‹ˆ์ฝ”๋‹ˆ
ย 
๋นŒ๋“œ๊ด€๋ฆฌ ๋ฐ ๋””๋ฒ„๊น… (2010๋…„ ์ž๋ฃŒ)
๋นŒ๋“œ๊ด€๋ฆฌ ๋ฐ ๋””๋ฒ„๊น… (2010๋…„ ์ž๋ฃŒ)๋นŒ๋“œ๊ด€๋ฆฌ ๋ฐ ๋””๋ฒ„๊น… (2010๋…„ ์ž๋ฃŒ)
๋นŒ๋“œ๊ด€๋ฆฌ ๋ฐ ๋””๋ฒ„๊น… (2010๋…„ ์ž๋ฃŒ)
ย 
์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ: ์„คํƒ•์—†๋Š” ์„ธ๊ณ„
์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ: ์„คํƒ•์—†๋Š” ์„ธ๊ณ„์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ: ์„คํƒ•์—†๋Š” ์„ธ๊ณ„
์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ: ์„คํƒ•์—†๋Š” ์„ธ๊ณ„
ย 
S#03 ๊น€์šฉํ˜„:VS2010์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜
S#03 ๊น€์šฉํ˜„:VS2010์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜S#03 ๊น€์šฉํ˜„:VS2010์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜
S#03 ๊น€์šฉํ˜„:VS2010์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜
ย 
java_1์žฅ
java_1์žฅjava_1์žฅ
java_1์žฅ
ย 
java_1์žฅ.pptx
java_1์žฅ.pptxjava_1์žฅ.pptx
java_1์žฅ.pptx
ย 
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging
ย 
java_1์žฅ.pptx
java_1์žฅ.pptxjava_1์žฅ.pptx
java_1์žฅ.pptx
ย 
programming with GDB
programming with GDBprogramming with GDB
programming with GDB
ย 
๊ธ€๋กœ๋ฒŒ ๊ฒŒ์ž„ ํ”Œ๋žซํผ์—์„œ ๋ฌด์ •์ง€, ๋ฌด์ ๊ฒ€ ์„œ๋ฒ„ ๊ฐœ๋ฐœ๊ณผ ์šด์˜ ์‚ฌ๋ก€
๊ธ€๋กœ๋ฒŒ ๊ฒŒ์ž„ ํ”Œ๋žซํผ์—์„œ ๋ฌด์ •์ง€, ๋ฌด์ ๊ฒ€ ์„œ๋ฒ„ ๊ฐœ๋ฐœ๊ณผ ์šด์˜ ์‚ฌ๋ก€๊ธ€๋กœ๋ฒŒ ๊ฒŒ์ž„ ํ”Œ๋žซํผ์—์„œ ๋ฌด์ •์ง€, ๋ฌด์ ๊ฒ€ ์„œ๋ฒ„ ๊ฐœ๋ฐœ๊ณผ ์šด์˜ ์‚ฌ๋ก€
๊ธ€๋กœ๋ฒŒ ๊ฒŒ์ž„ ํ”Œ๋žซํผ์—์„œ ๋ฌด์ •์ง€, ๋ฌด์ ๊ฒ€ ์„œ๋ฒ„ ๊ฐœ๋ฐœ๊ณผ ์šด์˜ ์‚ฌ๋ก€
ย 
Android Native Module ์•ˆ์ •์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ
Android Native Module ์•ˆ์ •์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐAndroid Native Module ์•ˆ์ •์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ
Android Native Module ์•ˆ์ •์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ
ย 
(111217) #fitalk rootkit tools and debugger
(111217) #fitalk   rootkit tools and debugger(111217) #fitalk   rootkit tools and debugger
(111217) #fitalk rootkit tools and debugger
ย 
NDC 2017 ํ•˜์žฌ์Šน NEXON ZERO (๋„ฅ์Šจ ์ œ๋กœ) ์ ๊ฒ€์—†์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฝ”๋“œ ์ˆ˜์ • ๋ฐ ๊ฒŒ์ž„ ์ •๋ณด ์ˆ˜์ง‘ํ•˜๊ธฐ
NDC 2017 ํ•˜์žฌ์Šน NEXON ZERO (๋„ฅ์Šจ ์ œ๋กœ) ์ ๊ฒ€์—†์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฝ”๋“œ ์ˆ˜์ • ๋ฐ ๊ฒŒ์ž„ ์ •๋ณด ์ˆ˜์ง‘ํ•˜๊ธฐNDC 2017 ํ•˜์žฌ์Šน NEXON ZERO (๋„ฅ์Šจ ์ œ๋กœ) ์ ๊ฒ€์—†์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฝ”๋“œ ์ˆ˜์ • ๋ฐ ๊ฒŒ์ž„ ์ •๋ณด ์ˆ˜์ง‘ํ•˜๊ธฐ
NDC 2017 ํ•˜์žฌ์Šน NEXON ZERO (๋„ฅ์Šจ ์ œ๋กœ) ์ ๊ฒ€์—†์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฝ”๋“œ ์ˆ˜์ • ๋ฐ ๊ฒŒ์ž„ ์ •๋ณด ์ˆ˜์ง‘ํ•˜๊ธฐ
ย 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd
ย 
ARTIK 710 IoT class 02
ARTIK 710 IoT class 02ARTIK 710 IoT class 02
ARTIK 710 IoT class 02
ย 
cross compile
cross compilecross compile
cross compile
ย 
Mongodb tip42 50
Mongodb tip42 50Mongodb tip42 50
Mongodb tip42 50
ย 
ใ€Žแ„‹แ…ตแ„‘แ…ฆแ†จแ„แ…ตแ„‡แ…ณ แ„ƒแ…ตแ„‡แ…ฅแ„€แ…ตแ†ผใ€ - ๋””๋ฒ„๊น… ์ง€์˜ฅ์—์„œ ํƒˆ์ถœํ•˜๋Š” 66๊ฐ€์ง€ ์ „๋žต๊ณผ ๊ธฐ๋ฒ•
ใ€Žแ„‹แ…ตแ„‘แ…ฆแ†จแ„แ…ตแ„‡แ…ณ แ„ƒแ…ตแ„‡แ…ฅแ„€แ…ตแ†ผใ€ - ๋””๋ฒ„๊น… ์ง€์˜ฅ์—์„œ ํƒˆ์ถœํ•˜๋Š” 66๊ฐ€์ง€ ์ „๋žต๊ณผ ๊ธฐ๋ฒ•ใ€Žแ„‹แ…ตแ„‘แ…ฆแ†จแ„แ…ตแ„‡แ…ณ แ„ƒแ…ตแ„‡แ…ฅแ„€แ…ตแ†ผใ€ - ๋””๋ฒ„๊น… ์ง€์˜ฅ์—์„œ ํƒˆ์ถœํ•˜๋Š” 66๊ฐ€์ง€ ์ „๋žต๊ณผ ๊ธฐ๋ฒ•
ใ€Žแ„‹แ…ตแ„‘แ…ฆแ†จแ„แ…ตแ„‡แ…ณ แ„ƒแ…ตแ„‡แ…ฅแ„€แ…ตแ†ผใ€ - ๋””๋ฒ„๊น… ์ง€์˜ฅ์—์„œ ํƒˆ์ถœํ•˜๋Š” 66๊ฐ€์ง€ ์ „๋žต๊ณผ ๊ธฐ๋ฒ•
ย 
TOAST Meetup2015 - ๊ตฌ๋ฆ„ Cloud IDE (๋ฅ˜์„ฑํƒœ)
TOAST Meetup2015 - ๊ตฌ๋ฆ„ Cloud IDE (๋ฅ˜์„ฑํƒœ)TOAST Meetup2015 - ๊ตฌ๋ฆ„ Cloud IDE (๋ฅ˜์„ฑํƒœ)
TOAST Meetup2015 - ๊ตฌ๋ฆ„ Cloud IDE (๋ฅ˜์„ฑํƒœ)
ย 

Windows Debugging Technique #3

  • 2. AgendaAgenda ๏ฌ Visual Studio .NET DebuggingVisual Studio .NET Debugging ๏ฌ Symbol ServerSymbol Server ์„ค์ •์„ค์ • ๏ฌ WinDBGWinDBG ์‚ฌ์šฉํ•˜๊ธฐ์‚ฌ์šฉํ•˜๊ธฐ ๏ฌ Debugging War StoryDebugging War Story ๏ฌ DebuggerDebugger ์˜ ์ž‘๋™ ์›๋ฆฌ์˜ ์ž‘๋™ ์›๋ฆฌ ๏ฌ Debugging Tips & TricksDebugging Tips & Tricks
  • 3. ๋ˆ„๊ตฌ๋ฅผ ์œ„ํ•œ ์›น ์บ์ŠคํŠธ์ธ๊ฐ€๋ˆ„๊ตฌ๋ฅผ ์œ„ํ•œ ์›น ์บ์ŠคํŠธ์ธ๊ฐ€ ??๏ฌ VS .NETVS .NET ๋””๋ฒ„๊น…์ด ๊ถ๊ธˆํ•œ ๊ฐœ๋ฐœ์ž๋””๋ฒ„๊น…์ด ๊ถ๊ธˆํ•œ ๊ฐœ๋ฐœ์ž ๏ฌ ์‹ฌ๋ณผ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ž์‹ฌ๋ณผ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ž ๏ฌ ์‹ฌ๋ณผ ์„œ๋ฒ„ ์„ค์ •์— ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ๋Š”์‹ฌ๋ณผ ์„œ๋ฒ„ ์„ค์ •์— ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ๋Š” ๊ฐœ๋ฐœ์ž๊ฐœ๋ฐœ์ž ๏ฌ ์‹ฌ๋ณผ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋„์›€์„ ๋ฐ›์ง€ ๋ชปํ•˜๊ณ  ์žˆ์‹ฌ๋ณผ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋„์›€์„ ๋ฐ›์ง€ ๋ชปํ•˜๊ณ  ์žˆ ๋Š” ๊ฐœ๋ฐœ์ž๋Š” ๊ฐœ๋ฐœ์ž ๏ฌ WinDBGWinDBG ๋ฅผ ์‹คํ–‰ํ•ด๋„ ๋ญ๊ฐ€ ๋ญ”์ง€ ๋ชจ๋ฅด๊ฒ ๋ฅผ ์‹คํ–‰ํ•ด๋„ ๋ญ๊ฐ€ ๋ญ”์ง€ ๋ชจ๋ฅด๊ฒ  ๋‹ค๋Š” ๊ฐœ๋ฐœ์ž๋‹ค๋Š” ๊ฐœ๋ฐœ์ž
  • 4. VS.NET DebuggingVS.NET Debugging ๏ฌ Managed?Managed? ๏ƒ˜ ๋ฉ”๋ชจ๋ฆฌ ์ถฉ๋Œ์ด๋‚˜ ๋ˆ„์ˆ˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๋“ค์ด ์ž๋ฉ”๋ชจ๋ฆฌ ์ถฉ๋Œ์ด๋‚˜ ๋ˆ„์ˆ˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๋“ค์ด ์ž ๋™ ํ•ด๊ฒฐ๋™ ํ•ด๊ฒฐ (Garbage Collector)(Garbage Collector) ๏ฌ ๊ธฐ๋ณธ์ ์ธ ์ž‘๋™ ๋ฐฉ์‹์€๊ธฐ๋ณธ์ ์ธ ์ž‘๋™ ๋ฐฉ์‹์€ VS 6.0VS 6.0 ์˜ ๋””๋ฒ„๊ฑฐ์˜ ๋””๋ฒ„๊ฑฐ ์™€ ๋™์ผ์™€ ๋™์ผ ๏ฌ ์Šคํฌ๋ฆฝํŠธ์Šคํฌ๋ฆฝํŠธ , Microsoft Active Server, Microsoft Active Server Pages(ASP), Microsoft ASP.NET, .NET,Pages(ASP), Microsoft ASP.NET, .NET, XMLXML ์›น ์„œ๋น„์Šค์›น ์„œ๋น„์Šค ,, ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ , SQL, SQL ๋””๋ฒ„๊น…์„ ํ•˜๋‚˜์˜๋””๋ฒ„๊น…์„ ํ•˜๋‚˜์˜ UIUI ์—์„œ ๋””๋ฒ„๊น… ๊ฐ€๋Šฅ์—์„œ ๋””๋ฒ„๊น… ๊ฐ€๋Šฅ !!
  • 5. ์ค‘๋‹จ์  ์‚ฌ์šฉ ํŒ์ค‘๋‹จ์  ์‚ฌ์šฉ ํŒ ๏ฌ ๊ณ ๊ธ‰ ์ค‘๋‹จ์ ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ํ•œ ๋‹จ๊ณ„์”ฉ๊ณ ๊ธ‰ ์ค‘๋‹จ์ ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ํ•œ ๋‹จ๊ณ„์”ฉ ์ฝ”๋“œ ์‹คํ–‰ ๋ช…๋ น์œผ๋กœ ๋””๋ฒ„๊น…์„ ์‹œ์ž‘ํ•˜๋Š”์ฝ”๋“œ ์‹คํ–‰ ๋ช…๋ น์œผ๋กœ ๋””๋ฒ„๊น…์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ๊ฒƒ์ด ์ข‹์Œ ๏ฌ ์ค‘๋‹จ์  ์ฐฝ์„ ๋„์›Œ ๋†“๊ณ  ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ฒƒ์ด์ค‘๋‹จ์  ์ฐฝ์„ ๋„์›Œ ๋†“๊ณ  ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ์ข‹์Œ ๏ฌ ํ˜ธ์ถœ ์Šคํƒ์—์„œ ์ค‘๋‹จ์  ์„ค์ • ๊ฐ€๋Šฅํ˜ธ์ถœ ์Šคํƒ์—์„œ ์ค‘๋‹จ์  ์„ค์ • ๊ฐ€๋Šฅ ๏ฌ ์ผํšŒ์„ฑ ์ค‘๋‹จ์ ์ผํšŒ์„ฑ ์ค‘๋‹จ์  : <: < ์ปค์„œ๊นŒ์ง€ ์‹คํ–‰์ปค์„œ๊นŒ์ง€ ์‹คํ–‰ >> ๏ฌ ํ•˜์œ„ ํ‘œํ˜„์‹์— ์ค‘๋‹จ์  ์„ค์ • ๊ฐ€๋Šฅํ•˜์œ„ ํ‘œํ˜„์‹์— ์ค‘๋‹จ์  ์„ค์ • ๊ฐ€๋Šฅ ๏ƒ˜ for ( i = 0 , m = 0 ; i < 10 ; i++ , m-- )for ( i = 0 , m = 0 ; i < 10 ; i++ , m-- )
  • 6. ์ค‘๋‹จ์  ์‚ฌ์šฉ ํŒ์ค‘๋‹จ์  ์‚ฌ์šฉ ํŒ ๏ฌ ์ƒˆ ์ค‘๋‹จ์  ์ฐฝ์—์„œ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ ์ง์ ‘์ƒˆ ์ค‘๋‹จ์  ์ฐฝ์—์„œ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ ์ง์ ‘ ์ž…๋ ฅ์ž…๋ ฅ ๏ƒ˜ MyThreadClass.ThreadFunc ( C# )MyThreadClass.ThreadFunc ( C# ) ๏ƒ˜ ์˜ค๋ฒ„๋กœ๋“œ๋œ ๋ฉ”์„œ๋“œ๋Š” ์ค‘๋‹จ์  ํ™œ์„ฑํ™” ์„ ํƒ์˜ค๋ฒ„๋กœ๋“œ๋œ ๋ฉ”์„œ๋“œ๋Š” ์ค‘๋‹จ์  ํ™œ์„ฑํ™” ์„ ํƒ ๊ฐ€๋Šฅ๊ฐ€๋Šฅ !! ๏ฌ ์ฐพ๊ธฐ ์ฝค๋ณด ์ƒ์ž์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ์ž…๋ ฅํ•œ์ฐพ๊ธฐ ์ฝค๋ณด ์ƒ์ž์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ์ž…๋ ฅํ•œ ํ›„ํ›„ , <F9>, <F9> ๋ฅผ ๋ˆŒ๋Ÿฌ ์ค‘๋‹จ์  ์„ค์ • ๊ฐ€๋Šฅ๋ฅผ ๋ˆŒ๋Ÿฌ ์ค‘๋‹จ์  ์„ค์ • ๊ฐ€๋Šฅ ๏ฌ ํ•œ ์ค„์— ํ•˜๋‚˜ ์ด์ƒ์˜ ์ค‘๋‹จ์  ์„ค์ • ๊ฐ€๋Šฅํ•œ ์ค„์— ํ•˜๋‚˜ ์ด์ƒ์˜ ์ค‘๋‹จ์  ์„ค์ • ๊ฐ€๋Šฅ
  • 8. ์กฐ์‚ฌ์‹ ์ฐฝ์กฐ์‚ฌ์‹ ์ฐฝ ๏ฌ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ๋ณธ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ๋ณธ ! +! + ๋ชจ๋ชจ ๋“  ํ‘œํ˜„์‹์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋“  ํ‘œํ˜„์‹์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ ์Œ์Œ ๏ฌ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ๊ฐ€๋Šฅ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ๊ฐ€๋Šฅ !! ๏ƒ˜ ์—ฌ๋Ÿฌ ๊ตฌ์กฐ์ฒด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ ๊ฒ€์—ฌ๋Ÿฌ ๊ตฌ์กฐ์ฒด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ ๊ฒ€ ์ฆ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ์ฆ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ ๊ฐ€๋Šฅ๊ฐ€๋Šฅ
  • 9. ํŠน์„ฑ์„ ์ด์šฉํ•œ ๋””๋ฒ„๊น…ํŠน์„ฑ์„ ์ด์šฉํ•œ ๋””๋ฒ„๊น… ๏ฌ DebuggerStepThroughAttributeDebuggerStepThroughAttribute ๏ƒ˜ ๋ฌด์กฐ๊ฑด ํ”„๋กœ์‹œ์ € ๋‹จ์œ„ ์‹คํ–‰ ๋ช…๋ น ์ ์šฉ๋ฌด์กฐ๊ฑด ํ”„๋กœ์‹œ์ € ๋‹จ์œ„ ์‹คํ–‰ ๋ช…๋ น ์ ์šฉ ๏ƒ˜ getget ์ด๋‚˜์ด๋‚˜ setset ์•ก์„ธ์„œ์ฒ˜๋Ÿผ ํ•œ ์ค„์งœ๋ฆฌ ์ฝ”๋“œ๋ฅผ์•ก์„ธ์„œ์ฒ˜๋Ÿผ ํ•œ ์ค„์งœ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉ ๏ฌ DebuggerHiddenAttributeDebuggerHiddenAttribute ๏ƒ˜ ์ค‘๋‹จ์  ์„ค์ • ๋ถˆ๊ฐ€๋Šฅ์ค‘๋‹จ์  ์„ค์ • ๋ถˆ๊ฐ€๋Šฅ ๏ƒ˜ ๋ฉ”์„œ๋“œ๋ฅผ ์™„์ „ํžˆ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋‹ค๋ฉ”์„œ๋“œ๋ฅผ ์™„์ „ํžˆ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋‹ค .. ๏ƒ˜ Anti-DebuggingAnti-Debugging ๊ธฐ์ˆ ์€ ์•„๋‹ˆ๋‹ค๊ธฐ์ˆ ์€ ์•„๋‹ˆ๋‹ค .. ๏‚ง ์™œ์™œ ?? ์ด ํŠน์„ฑ์€์ด ํŠน์„ฑ์€ VS.NETVS.NET ๋””๋ฒ„๊ฑฐ์™€๋””๋ฒ„๊ฑฐ์™€ DBGCLR.EXEDBGCLR.EXE ์—์„œ ์‚ฌ์šฉํ•˜์ง€๋งŒ์—์„œ ์‚ฌ์šฉํ•˜์ง€๋งŒ CORDBG.EXECORDBG.EXE ์—์„œ๋Š” ์‚ฌ์šฉํ•˜์ง€์—์„œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ์•Š์Œ
  • 10. ํ˜ผํ•ฉ ๋ชจ๋“œ ๋””๋ฒ„๊น…ํ˜ผํ•ฉ ๋ชจ๋“œ ๋””๋ฒ„๊น… ๏ฌ VS.NETVS.NET ๋””๋ฒ„๊ฑฐ๋Š”๋””๋ฒ„๊ฑฐ๋Š” NativeNative ์ฝ”๋“œ์™€์ฝ”๋“œ์™€ ManagedManaged ์ฝ”๋“œ๋ฅผ ๋™์‹œ์— ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ์Œ์ฝ”๋“œ๋ฅผ ๋™์‹œ์— ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ์Œ ๏ฌ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์ž ๋”ฐ๋กœ ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์ž ๋”ฐ๋กœ ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ ๏ฌ ์žฅ์ ์žฅ์  ๏ƒ˜ ํ•˜๋‚˜์˜ํ•˜๋‚˜์˜ UIUI ์—์„œ ๋ชจ๋“  ์ž‘์—…์„ ์ง„ํ–‰์—์„œ ๋ชจ๋“  ์ž‘์—…์„ ์ง„ํ–‰ ๏ฌ ๋‹จ์ ๋‹จ์  ๏ƒ˜ ๋งค์šฐ ๋Š๋ฆด ์ˆ˜ ์žˆ๋‹ค๋งค์šฐ ๋Š๋ฆด ์ˆ˜ ์žˆ๋‹ค .. ๏ƒ˜ ๋ฐ์ดํ„ฐ ์ค‘๋‹จ์  ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋ฐ์ดํ„ฐ ์ค‘๋‹จ์  ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ๏ƒ˜ ๋””๋ฒ„๊ฑฐ๊ฐ€๋””๋ฒ„๊ฑฐ๊ฐ€ NativeNative ์ฝ”๋“œ ์ชฝ์— ์œ„์น˜ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค์ฝ”๋“œ ์ชฝ์— ์œ„์น˜ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค ๋ฉด๋ฉด ,, ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๋ฏธ๋‹ˆ ๋คํ”„ ์ƒ์„ฑ ๋ถˆ๊ฐ€ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๋ฏธ๋‹ˆ ๋คํ”„ ์ƒ์„ฑ ๋ถˆ๊ฐ€ ๏ฌ ํŒํŒ ๏ƒ˜ ์˜ต์…˜์—์„œ โ€˜๋ณ€์ˆ˜ ์ฐฝ์—์„œ ์†์„ฑ ํ™•์ธ ํ—ˆ์šฉโ€™์„์˜ต์…˜์—์„œ โ€˜๋ณ€์ˆ˜ ์ฐฝ์—์„œ ์†์„ฑ ํ™•์ธ ํ—ˆ์šฉโ€™์„
  • 11. ์‹ฌ๋ณผ์‹ฌ๋ณผ (Symbol)(Symbol) ๏ฌ .dll.dll ์ด๋‚˜์ด๋‚˜ .exe.exe ์ด ์ž‘์„ฑ๋  ๋•Œ ์ƒ์„ฑ๋จ์ด ์ž‘์„ฑ๋  ๋•Œ ์ƒ์„ฑ๋จ ๏ฌ ํ™•์žฅ์ž๊ฐ€ํ™•์žฅ์ž๊ฐ€ .dbg.dbg ํ˜น์€ํ˜น์€ .pdb.pdb ๏ฌ ํ•จ์ˆ˜ ์ด๋ฆ„๊ณผ ๋ณ€์ˆ˜ ์ด๋ฆ„๊ณผ ๊ฐ™์€ ์‹ฌ๋ณผ ์ •ํ•จ์ˆ˜ ์ด๋ฆ„๊ณผ ๋ณ€์ˆ˜ ์ด๋ฆ„๊ณผ ๊ฐ™์€ ์‹ฌ๋ณผ ์ • ๋ณด ํฌํ•จ๋ณด ํฌํ•จ ๏ฌ WindowsWindows ๋””๋ฒ„๊ฑฐ์™€๋””๋ฒ„๊ฑฐ์™€ Microsoft VisualMicrosoft Visual Studio .NETStudio .NET ๋””๋ฒ„๊ฑฐ์™€ ๊ฐ™์€ ๋””๋ฒ„๊ฑฐ๊ฐ€๋””๋ฒ„๊ฑฐ์™€ ๊ฐ™์€ ๋””๋ฒ„๊ฑฐ๊ฐ€ ํ˜ธ์ถœ ์Šคํƒ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ˜ธ์ถœ ์Šคํƒ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ
  • 12. SymchkSymchk ํˆดํˆด ๏ฌ Debugging Tools for WindowsDebugging Tools for Windows ์— ํฌํ•จ์— ํฌํ•จ ๋˜์–ด ์žˆ์Œ๋˜์–ด ์žˆ์Œ ((http://www.microsoft.com/http://www.microsoft.com/ ddkddk/debugging//debugging/)) ๏ฌ ๋ช…๋ น์ค„์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅ๋ช…๋ น์ค„์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅ (( ๊ฒฝ๋กœ ์„ค์ • ํ•„์š”๊ฒฝ๋กœ ์„ค์ • ํ•„์š” )) ๏ฌ ์˜ˆ์˜ˆ ๏ƒ˜ symchk /r c:windowssystem32 /ssymchk /r c:windowssystem32 /s srv*c:ossymbols*http://msdl.microsoft.cosrv*c:ossymbols*http://msdl.microsoft.co m/download/symbolsm/download/symbols
  • 13. OSOS ์‹ฌ๋ณผ ์„œ๋ฒ„์‹ฌ๋ณผ ์„œ๋ฒ„ ๏ฌ VS 7.1VS 7.1 ๋ถ€ํ„ฐ ์ง€์›๋ถ€ํ„ฐ ์ง€์› ๏ฌ 7.07.0 ์—์„œ๋„ ๊ฐ€๋Šฅ์—์„œ๋„ ๊ฐ€๋Šฅ ๏ƒ˜ symsrv.dllsymsrv.dll ๋‹ค์šด๋กœ๋“œ๋‹ค์šด๋กœ๋“œ ๏ƒ˜ symsrv.dllsymsrv.dll ์„์„ devenv.exedevenv.exe ํด๋”์— ๋ณต์‚ฌํด๋”์— ๋ณต์‚ฌ ๏ƒ˜ โ€œโ€œsrv*โ€ -> โ€œsymsrv*symsrv.dll*โ€srv*โ€ -> โ€œsymsrv*symsrv.dll*โ€ ๏ฌ ์‹ฌ๋ณผ ์ €์žฅ์†Œ๋กœ๋ถ€ํ„ฐ ์ž๋™์œผ๋กœ์‹ฌ๋ณผ ์ €์žฅ์†Œ๋กœ๋ถ€ํ„ฐ ์ž๋™์œผ๋กœ PDBPDB ํŒŒ์ผ ๊ฒ€์‚ฌํŒŒ์ผ ๊ฒ€์‚ฌ ๏ฌ ์ž๋™์œผ๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ ๊ฒ€์‚ฌ์ž๋™์œผ๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ ๊ฒ€์‚ฌ ๏ฌ ์‹ฌ๋ณผ ๊ฒฝ๋กœ ๋ฌธ๋ฒ•์€ ๋‹ค์†Œ ๋‚œํ•ด์‹ฌ๋ณผ ๊ฒฝ๋กœ ๋ฌธ๋ฒ•์€ ๋‹ค์†Œ ๋‚œํ•ด ๏ฌ ์‹ฌ๋ณผ ์„œ๋ฒ„ ์„ค์ • ํ›„์‹ฌ๋ณผ ์„œ๋ฒ„ ์„ค์ • ํ›„ ,, ์‹ฌ๋ณผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ธฐ ๋•Œ์‹ฌ๋ณผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ธฐ ๋•Œ ๋ฌธ์—๋ฌธ์— ,, ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘์ด ๋‹ค์†Œ ์ง€์—ฐ๋จํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘์ด ๋‹ค์†Œ ์ง€์—ฐ๋จ ๏ƒ˜ symchksymchk /r/r c:windowssystem32 /sc:windowssystem32 /s SRV*c:ossymbols*http://msdl.microsoft.com/dowSRV*c:ossymbols*http://msdl.microsoft.com/dow nload/symbolsnload/symbols
  • 14. OSOS ์‹ฌ๋ณผ ์„œ๋ฒ„ ๊ฒฝ๋กœ ์ง€์ • ๋ฐฉ์‹ฌ๋ณผ ์„œ๋ฒ„ ๊ฒฝ๋กœ ์ง€์ • ๋ฐฉ ๋ฒ•๋ฒ•๏ฌ srv*[srv*[ ๋กœ์ปฌ์บ์‹œ๋กœ์ปฌ์บ์‹œ *]*] ์›๊ฒฉ์ €์žฅ์†Œ์œ„์น˜์›๊ฒฉ์ €์žฅ์†Œ์œ„์น˜ ๏ฌ Project/Properties/Symbol PathProject/Properties/Symbol Path ์— ์ž…๋ ฅ์— ์ž…๋ ฅ ํ•œ๋‹คํ•œ๋‹ค .. ๏ฌ minidumpminidump ์‚ฌ์šฉ์‹œ์—๋Š”์‚ฌ์šฉ์‹œ์—๋Š” MODPATH=MODPATH= ์ธ์ธ ์ž๋กœ ๋„ฃ๋Š”๋‹ค์ž๋กœ ๋„ฃ๋Š”๋‹ค .. ๏ฌ ๋กœ์ปฌ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๋ฒˆ ๋””๋ฒ„๊น…์‹œ๋กœ์ปฌ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๋ฒˆ ๋””๋ฒ„๊น…์‹œ ์— ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค์— ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค .. ๏ฌ ์›๊ฒฉ ๊ฒฝ๋กœ๋Š” ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ ๋ฐ ์ธํ„ฐ๋„ท์›๊ฒฉ ๊ฒฝ๋กœ๋Š” ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ ๋ฐ ์ธํ„ฐ๋„ท ์ฃผ์†Œ๋กœ ์ง€์ •ํ•œ๋‹ค์ฃผ์†Œ๋กœ ์ง€์ •ํ•œ๋‹ค ..
  • 15. OSOS ์‹ฌ๋ณผ ์„œ๋ฒ„ ๊ฒฝ๋กœ ์ง€์ • ์ˆœ์‹ฌ๋ณผ ์„œ๋ฒ„ ๊ฒฝ๋กœ ์ง€์ • ์ˆœ ์„œ์„œ๏ฌ ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•  ์ปดํ“จํ„ฐ ์„ค์ •์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•  ์ปดํ“จํ„ฐ ์„ค์ • ๏ƒ˜ ์˜ˆ์˜ˆ )) SYMBOLSSYMBOLS ๏ฌ OSSYMBOLSOSSYMBOLS ์ด๋ฆ„์œผ๋กœ ๊ณต์œ  ํด๋” ์ƒ์„ฑ์ด๋ฆ„์œผ๋กœ ๊ณต์œ  ํด๋” ์ƒ์„ฑ ๏ฌ Debugging Tools for WindowsDebugging Tools for Windows ์„ค์น˜ ํ›„์„ค์น˜ ํ›„ ,, PATHPATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ๋””๋ ‰ํ„ฐ๋ฆฌ ์ถ”๊ฐ€ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ๋””๋ ‰ํ„ฐ๋ฆฌ ์ถ”๊ฐ€ ๏ฌ ํ”„๋ฝ์‹œ ์„œ๋ฒ„ ํ™˜๊ฒฝ์ด๋ผ๋ฉดํ”„๋ฝ์‹œ ์„œ๋ฒ„ ํ™˜๊ฒฝ์ด๋ผ๋ฉด _NT_SYMBOL_PROXY_NT_SYMBOL_PROXY ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • ๏ฌ _NT_SYMBOL_PATH_NT_SYMBOL_PATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
  • 16. ์ œํ’ˆ ์‹ฌ๋ณผ ์„œ๋ฒ„ ์„ค์ •์ œํ’ˆ ์‹ฌ๋ณผ ์„œ๋ฒ„ ์„ค์ • ๏ฌ ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•  ์ปดํ“จํ„ฐ ์„ค์ •์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•  ์ปดํ“จํ„ฐ ์„ค์ • ๏ƒ˜ ์˜ˆ์˜ˆ )) SYMBOLSSYMBOLS ๏ฌ PRODUCTSYMBOLSPRODUCTSYMBOLS ์ด๋ฆ„์œผ๋กœ ๊ณต์œ  ํด์ด๋ฆ„์œผ๋กœ ๊ณต์œ  ํด ๋” ์ƒ์„ฑ๋” ์ƒ์„ฑ ๏ฌ symstore add /r /f d:build*.* /ssymstore add /r /f d:build*.* /s SYMBOLSproductsymbols /t โ€œMyAppโ€SYMBOLSproductsymbols /t โ€œMyAppโ€ /v โ€œBuild 632โ€ /c โ€œ2004/09/14 Daily/v โ€œBuild 632โ€ /c โ€œ2004/09/14 Daily Buildโ€Buildโ€ ๏ฌ ์‚ญ์ œ ์‹œ์—๋Š” ํŠธ๋žœ์žญ์…˜์‚ญ์ œ ์‹œ์—๋Š” ํŠธ๋žœ์žญ์…˜ IDID ์‚ฌ์šฉ์‚ฌ์šฉ ๏ƒ˜ symstore del /I 00000009 /ssymstore del /I 00000009 /s symbolsproductsymbolssymbolsproductsymbols
  • 17. SymbolSymbol ์„œ๋ฒ„ ์„ค์ •์„œ๋ฒ„ ์„ค์ • NotepadNotepad ๋””๋ฒ„๊น…๋””๋ฒ„๊น… OSSymbolTestOSSymbolTest ProductSymbolTestProductSymbolTest DemoDemo
  • 18. ์ฐธ๊ณ ์ž๋ฃŒ์ฐธ๊ณ ์ž๋ฃŒ ๏ฌ HOW TO: Use a Symbol Server with theHOW TO: Use a Symbol Server with the Visual Studio .NET DebuggerVisual Studio .NET Debugger ๏ƒ˜ http://http://support.microsoft.comsupport.microsoft.com/?id=319037/?id=319037 ๏ฌ Bugslalyer : Symbols and Crash DumpsBugslalyer : Symbols and Crash Dumps ๏ƒ˜ http://msdn.microsoft.com/msdnmag/issues/0http://msdn.microsoft.com/msdnmag/issues/0 ๏ฌ WinDBGWinDBG ๏ƒ˜ SymbolsSymbols ์„น์…˜์„น์…˜
  • 19. WinDBGWinDBG ์‚ฌ์šฉ์‚ฌ์šฉ ๏ฌ WinDBGWinDBG ๋ฌธ์„œ ํ•„๋…๋ฌธ์„œ ํ•„๋… ๏ฌ WinDBGWinDBG ๊ธฐ๋Šฅ๊ธฐ๋Šฅ ๏ƒ˜ WinDBGWinDBG ์„ค์ • ๋ฐ ์‚ฌ์šฉ์„ค์ • ๋ฐ ์‚ฌ์šฉ ๏‚ง WinDBGWinDBG ๋Š” ์‹ฌ๋ณผ์˜ ๋กœ๋“œ๋˜๋Š” ๊ฒฝ๋กœ์„ค์ •์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ฐฉ๋Š” ์‹ฌ๋ณผ์˜ ๋กœ๋“œ๋˜๋Š” ๊ฒฝ๋กœ์„ค์ •์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ฐฉ ๋ฒ•์ œ๊ณต๋ฒ•์ œ๊ณต ๏‚ง ๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค ๋””๋ฒ„๊น…๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค ๋””๋ฒ„๊น… ๏‚ง BreakPointBreakPoint ์™€์™€ exceptionexception ์ œ์–ด์ œ์–ด ๏‚ง WinDBG commandsWinDBG commands ๏ƒ˜ ๋คํ”„ํŒŒ์ผ ๋””๋ฒ„๊น…๋คํ”„ํŒŒ์ผ ๋””๋ฒ„๊น… ๏‚ง VS.NET :VS.NET : ๊ฐœ๋ฐœํ•œ ์ปดํ“จํ„ฐ์—์„œ ์ƒ์„ฑ๋œ ๋คํ”„ํŒŒ์ผ๋งŒ ์ž‘๋™๊ฐœ๋ฐœํ•œ ์ปดํ“จํ„ฐ์—์„œ ์ƒ์„ฑ๋œ ๋คํ”„ํŒŒ์ผ๋งŒ ์ž‘๋™ ๏‚ง WinDBG :WinDBG : ๊ณ ๊ฐ์œผ๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ๋คํ”„ํŒŒ์ผ๋„ ๊ฐ€๋Šฅ๊ณ ๊ฐ์œผ๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ๋คํ”„ํŒŒ์ผ๋„ ๊ฐ€๋Šฅ ๏ƒ˜ SOSSOS ๏‚ง ManagedManaged ์™€์™€ nativenative ๊ฐ€ ํ˜ผํ•ฉ๋œ๊ฐ€ ํ˜ผํ•ฉ๋œ applicationapplication ์˜ ์œ ์ผํ•œ ๋””์˜ ์œ ์ผํ•œ ๋”” ๋ฒ„๊น… ๋ฐฉ๋ฒ•๋ฒ„๊น… ๋ฐฉ๋ฒ•
  • 20. WinDBGWinDBG ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€ ?? ๏ฌ ํƒ„์ƒ๋ฐฐ๊ฒฝํƒ„์ƒ๋ฐฐ๊ฒฝ : OS: OS ์˜์˜ debuggingdebugging ์ž๋™ํ™”๋ฅผ ์œ„ํ•จ์ž๋™ํ™”๋ฅผ ์œ„ํ•จ ๏ฌ VS.NETVS.NET ๋””๋ฒ„๊ฑฐ๋””๋ฒ„๊ฑฐ , WinDBG, WinDBG ๏ƒ˜ VS.NETVS.NET ๋””๋ฒ„๊ฑฐ๋Š” ์‘์šฉ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๋””๋ฒ„๊ฑฐ๋Š” ์‘์šฉ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž ๏ƒ˜ WinDBGWinDBG ๋Š” ์šด์˜์ฒด๊ณ„๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•จ๋Š” ์šด์˜์ฒด๊ณ„๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•จ ๏‚ง Device driverDevice driver ๋ฐ๋ฐ user mode native appuser mode native app ์—๋„ ๋ง‰๊ฐ•ํ•œ ๊ธฐ์—๋„ ๋ง‰๊ฐ•ํ•œ ๊ธฐ ๋Šฅ ์‚ฌ์šฉ๊ฐ€๋Šฅ๋Šฅ ์‚ฌ์šฉ๊ฐ€๋Šฅ ๏‚ง ๋‹ค์–‘ํ•œ๋‹ค์–‘ํ•œ processprocess ์ •๋ณด์ •๋ณด ->-> ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ์š”์ธ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ์š”์ธ ?? ๏‚ง Memory breakpointMemory breakpoint ๏‚ง Mini-dumpMini-dump ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ํ–ฅ์ƒ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ œ๊ณต๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ํ–ฅ์ƒ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ œ๊ณต ๏‚ง ์™„์ „ํ•œ ์šด์˜์ฒด์ œ์˜์™„์ „ํ•œ ์šด์˜์ฒด์ œ์˜ heap, processheap, process ์˜์˜ handlehandle ์ •๋ณด๋ฅผ ๋ณผ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Œ์ˆ˜ ์žˆ์Œ ๏‚ง Install dirInstall dir ์˜์˜ dubugger.chmdubugger.chm ์˜ ๋„์›€๋ง ํŒŒ์ผ์˜ ๋„์›€๋ง ํŒŒ์ผ ๏‚ง UIUI ๋Š” ๋‹จ์ˆœํžˆ๋Š” ๋‹จ์ˆœํžˆ DBGENG.DLLDBGENG.DLL ์„ ๊ฐ์‹ธ๋Š” ์ •๋„์ด๋ฉฐ์„ ๊ฐ์‹ธ๋Š” ์ •๋„์ด๋ฉฐ NTSD(ms symbolic debugger)NTSD(ms symbolic debugger) ์™€ ๋น„์Šทํ•˜๋ฏ€๋กœ์™€ ๋น„์Šทํ•˜๋ฏ€๋กœ winDBGwinDBG ๋ฅผ๋ฅผ ์ตํžˆ๋ฉด์ตํžˆ๋ฉด NTSDNTSD ๋„ ์‰ฝ๊ฒŒ ์ตํž ์ˆ˜ ์žˆ์Œ๋„ ์‰ฝ๊ฒŒ ์ตํž ์ˆ˜ ์žˆ์Œ
  • 21. WinDBGWinDBG ์„ค์น˜์„ค์น˜ ๏ฌ Download pageDownload page ๏ƒ˜ http://www.microsoft.com/whdc/devtools/debhttp://www.microsoft.com/whdc/devtools/deb ๏ฌ Overview pageOverview page ๏ƒ˜ http://www.microsoft.com/http://www.microsoft.com/ whdc/devtools/debugging/default.mspxwhdc/devtools/debugging/default.mspx
  • 22. WinDBGWinDBG ์„ค์ •์„ค์ • ๏ฌ VS.NET symbol serverVS.NET symbol server ๏ƒ˜ VS.NET symbolVS.NET symbol ์„œ๋ฒ„ ์„ค์ •์„œ๋ฒ„ ์„ค์ • -> WinDBG-> WinDBG ๋Š” ์ž๋™์œผ๋Š” ์ž๋™์œผ ๋กœ๋กœ _NT_SYMBOL_PATH_NT_SYMBOL_PATH ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๊ธฐ๋ณธ ์‹ฌ๋ณผ๊ฒฝํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๊ธฐ๋ณธ ์‹ฌ๋ณผ๊ฒฝ ๋กœ๋กœ ์‚ฌ์šฉ๋กœ๋กœ ์‚ฌ์šฉ ๏ƒ˜ ๊ณตํ†ต ์†Œ์ŠคํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ์ž‘์—… ํ•„์š”๊ณตํ†ต ์†Œ์ŠคํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ์ž‘์—… ํ•„์š” ๏‚ง _NT_SOURCE_PATH_NT_SOURCE_PATH ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋“ฑ๋กํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋“ฑ๋ก ๏‚ง WinDBGWinDBG ๋ฅผ ์—ด๊ณ ๋ฅผ ์—ด๊ณ  source search pathsource search path ์— ํ•„์š”์ •๋ณด ์ž…๋ ฅ์— ํ•„์š”์ •๋ณด ์ž…๋ ฅ ๏ƒ˜ WinDBGWinDBG ๊ฐ€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ์‹คํ–‰ํŒŒ์ผ๊ฐ€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ์‹คํ–‰ํŒŒ์ผ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ ์„ค์ •์ด๋ฏธ์ง€ ๊ฒฝ๋กœ ์„ค์ • ๏‚ง File-Image File PathFile-Image File Path ๋ฅผ ์ด์šฉํ•ด ์„ค์ •๋ฅผ ์ด์šฉํ•ด ์„ค์ • :: ๊ฐœ๋ฐœ์ž๊ฐœ๋ฐœ์ž ,, ๊ณ ๊ฐ์˜๊ณ ๊ฐ์˜ dumpdump ๏ฌ CommandCommand ์ฐฝ์— ๊ธฐ๋ณธ ์›Œํฌ์ŠคํŽ˜์ด์Šค์— ์ƒ‰์ƒ์ •์ฐฝ์— ๊ธฐ๋ณธ ์›Œํฌ์ŠคํŽ˜์ด์Šค์— ์ƒ‰์ƒ์ • ๋ณด ์ž…๋ ฅ๋ณด ์ž…๋ ฅ ๏ƒ˜ ์—„์ฒญ๋‚œ ์ •๋ณด์ค‘์—์—„์ฒญ๋‚œ ์ •๋ณด์ค‘์— TRACE, OutputDebugStringTRACE, OutputDebugString ๋“ฑ๋“ฑ ์˜ ์ •๋ณด๋งŒ์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์˜ ์ •๋ณด๋งŒ์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—… -> Debuggee-> Debuggee
  • 23. WinDBG commandsWinDBG commands ๏ฌ WinDBG commandsWinDBG commands ์ข…๋ฅ˜์ข…๋ฅ˜ // ํŠน์ง•ํŠน์ง• ๏ƒ˜ ์ผ๋ฐ˜๋ช…๋ น์ผ๋ฐ˜๋ช…๋ น ๏‚ง ๋””๋ฒ„๊ธฐ ์ œ์–ด๋””๋ฒ„๊ธฐ ์ œ์–ด :: ์ถ”์ •์ถ”์ • ,, ๋‹จ๊ณ„์‹คํ–‰๋‹จ๊ณ„์‹คํ–‰ ,, ๋ฉ”๋ชจ๋ฆฌ ํ™•์ธ๋“ฑ๋ฉ”๋ชจ๋ฆฌ ํ™•์ธ๋“ฑ ๋“ฑ๋“ฑ ๏ƒ˜ ๋ฉ”ํƒ€๋ช…๋ น๋ฉ”ํƒ€๋ช…๋ น (.(. ๋ช…๋ น๋ช…๋ น )) ๏‚ง ๋””๋ฒ„๊ฑฐ์™€ ๋””๋ฒ„๊น… ๋ฐฉ๋ฒ• ์ œ์–ด๋””๋ฒ„๊ฑฐ์™€ ๋””๋ฒ„๊น… ๋ฐฉ๋ฒ• ์ œ์–ด :: ๋กœ๊ทธํŒŒ์ผ์ƒ์„ฑ๋กœ๊ทธํŒŒ์ผ์ƒ์„ฑ ,, ํ”„๋กœ์„ธ์Šค ์—ฐ๊ฒฐํ”„๋กœ์„ธ์Šค ์—ฐ๊ฒฐ ,, ๋คํ”„ํŒŒ์ผ ์ž‘์„ฑ ๋“ฑ๋“ฑ๋คํ”„ํŒŒ์ผ ์ž‘์„ฑ ๋“ฑ๋“ฑ ๏ƒ˜ ํ™•์žฅ๋ช…๋ นํ™•์žฅ๋ช…๋ น ๏‚ง ๋””๋ฒ„๊ธฐ๋ฅผ ์ œ์–ดํ•˜๊ณ  ํ˜„์žฌ ์ƒํƒœ๋ถ„์„๋””๋ฒ„๊ธฐ๋ฅผ ์ œ์–ดํ•˜๊ณ  ํ˜„์žฌ ์ƒํƒœ๋ถ„์„ :: ๋คํ”„์ฒ˜๋ฆฌ๋คํ”„์ฒ˜๋ฆฌ ,, ์ž„๊ณ„์„ธ์…˜ ๋ถ„์„์ž„๊ณ„์„ธ์…˜ ๋ถ„์„ ,, ์ถฉ๋Œ๋ถ„์„ ๋“ฑ๋“ฑ์ถฉ๋Œ๋ถ„์„ ๋“ฑ๋“ฑ ๏ƒ˜ ์ผ๋ฐ˜์ผ๋ฐ˜ ,, ๋ฉ”ํƒ€ ๋ช…๋ น์€ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ณ„๋ฉ”ํƒ€ ๋ช…๋ น์€ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ณ„ X,X, ํ™•์žฅํ™•์žฅ ๋ช…๋ น ๊ตฌ๋ถ„๋ช…๋ น ๊ตฌ๋ถ„
  • 24. ์‹ฌ๋ณผ ๋กœ๋“œ์‹ฌ๋ณผ ๋กœ๋“œ ๏ฌ WinDGBWinDGB ์‹ฌ๋ณผ์ฒ˜๋ฆฌ ์šฐ์ˆ˜ํ•จ์‹ฌ๋ณผ์ฒ˜๋ฆฌ ์šฐ์ˆ˜ํ•จ ๏ƒ˜ VS.NETVS.NET ๋ณด๋‹ค ์‹ฌ๋ณผ์ฒ˜๋ฆฌ ๋›ฐ์–ด๋‚˜๋ฉฐ๋ณด๋‹ค ์‹ฌ๋ณผ์ฒ˜๋ฆฌ ๋›ฐ์–ด๋‚˜๋ฉฐ VS.NETVS.NET ์€ ๋กœ๋“œ๋œ ์‹ฌ๋ณผ์„ ํ™•์ธํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ•„์ž์€ ๋กœ๋“œ๋œ ์‹ฌ๋ณผ์„ ํ™•์ธํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ•„์ž ๋Š”๋Š” VS.NETVS.NET ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์—์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— WinDBGWinDBG ๋ฅผ๋ฅผ ์ด์šฉํ•œ๋‹ค๊ณ ํ•จ์ด์šฉํ•œ๋‹ค๊ณ ํ•จ (winDBG(winDBG ์˜์˜ lmlm ์œผ๋กœ ํ™•์ธ์œผ๋กœ ํ™•์ธ ๊ฐ€๋Šฅ๊ฐ€๋Šฅ )) ๏‚ง Lm v m : v-Lm v m : v- ์ž์„ธํ•œ ์ •๋ณด์ž์„ธํ•œ ์ •๋ณด , m-module, m-module ๏ƒ˜ AnytimeAnytime ๏ƒ˜ Lazy symbol loading(save memory)Lazy symbol loading(save memory) ๏‚ง Ex) kernel debuggingEx) kernel debugging ์‹œ์‹œ NTDLL.DLLNTDLL.DLL ๋งŒ ๋กœ๋”ฉ๋งŒ ๋กœ๋”ฉ ๏ƒ˜ LD(load symbol) :LD(load symbol) : ๊ฐ•์ œ ๋กœ๋”ฉ๊ฐ•์ œ ๋กœ๋”ฉ ๏‚ง ์‹คํ–‰ํŒŒ์ผ์„์‹คํ–‰ํŒŒ์ผ์„ loadload ํ•  ๊ฒฝ์šฐํ•  ๊ฒฝ์šฐ buildbuild ๋ฅผ๋ฅผ /checksum/checksum ์œผ๋กœ ํ•˜์—ฌ์•ผ ํ•จ์œผ๋กœ ํ•˜์—ฌ์•ผ ํ•จ
  • 25. Process & ThreadProcess & Thread ๏ฌ Multi-process debuggingMulti-process debugging ๏ƒ˜ VS.NET, WinDBGVS.NET, WinDBG ๋ชจ๋‘ ๊ฐ€๋Šฅ๋ชจ๋‘ ๊ฐ€๋Šฅ ๏ƒ˜ WinDBGWinDBG ๊ฐ€๊ฐ€ process controlprocess control ์ด ๋” ์šฐ์ˆ˜ํ•จ์ด ๋” ์šฐ์ˆ˜ํ•จ ๏ฌ CommandsCommands ๏ƒ˜ .childdbg option.childdbg option ๋ณ€๊ฒฝ๋ณ€๊ฒฝ ๏ƒ˜ | : process status| : process status ๏‚ง . :. : ํ™œ์„ฑํ™”๋œํ™œ์„ฑํ™”๋œ processprocess ๏‚ง # : WinDBG# : WinDBG ์—์„œ ์‹คํ–‰์„ ์ค‘๋‹จํ•˜๊ธฐ์œ„ํ•ด ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ์—์„œ ์‹คํ–‰์„ ์ค‘๋‹จํ•˜๊ธฐ์œ„ํ•ด ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ processprocess ๏‚ง ~ : thread status~ : thread status ๏ƒ˜ .create c:winntsystem32sol.exe.create c:winntsystem32sol.exe ๏ƒ˜ .attach : tlist->.attach : tlist-> ์‹คํ–‰ ์ค‘์‹คํ–‰ ์ค‘ process attachprocess attach ๏ฌ Child process debugging exampleChild process debugging example
  • 26. ์‹คํ–‰์‹คํ–‰ ,, ๋‹จ๊ณ„ ์‹คํ–‰๋‹จ๊ณ„ ์‹คํ–‰ ,, ์ถ”์ ์ถ”์  ๏ฌ WinDBGWinDBG ์˜์˜ G(go), T(trace), P(step)G(go), T(trace), P(step) ๏ƒ˜ F5F5 ๋กœ ์‹คํ–‰์€ ํ•˜๊ฑฐ๋‚˜๋กœ ์‹คํ–‰์€ ํ•˜๊ฑฐ๋‚˜ shift + F11shift + F11 ๋“ฑ์˜ ๋‹จ์ถ•ํ‚ค๋Š”๋“ฑ์˜ ๋‹จ์ถ•ํ‚ค๋Š” g,g, tt ๋“ฑ์˜ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ ๋ฟ์ž„๋“ฑ์˜ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ ๋ฟ์ž„ ๏ฌ ๋ฐ์ดํ„ฐ ์ถ”์ ๋ฐ์ดํ„ฐ ์ถ”์  ,, ์กฐ์‚ฌ์กฐ์‚ฌ (p443)(p443) ๏ƒ˜ DV :DV : ๋ณ€์ˆ˜์˜ ๊ฐ’๋ณ€์ˆ˜์˜ ๊ฐ’ , DT :, DT : ๋ณ€์ˆ˜๋ณ€์ˆ˜ typetype ๏ƒ˜ ์„ฑ๋Šฅ๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒฝ์šฐ ์˜ˆ๋ฅผ ๋“ค์–ด์„ฑ๋Šฅ๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒฝ์šฐ ์˜ˆ๋ฅผ ๋“ค์–ด STLSTL ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ™์€ ๊ฒฝ์šฐ debugdebug ๊ฐ€ ์–ด๋ ค์›€๊ฐ€ ์–ด๋ ค์›€ -> wt(trace and-> wt(trace and watch data)watch data) ๋ช…๋ น์–ด์— ์‹œ๊ฐ„์„ ํˆฌ์žํ•ด ์—ฐ๊ตฌํ•ด์•ผ ํ•จ๋ช…๋ น์–ด์— ์‹œ๊ฐ„์„ ํˆฌ์žํ•ด ์—ฐ๊ตฌํ•ด์•ผ ํ•จ ,, ์ฆ‰์ฆ‰ wtwt ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด์„œ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด์„œ kernel modekernel mode ๋ณ€ํ™˜์ด ์–ผ๋ณ€ํ™˜์ด ์–ผ ๋งˆ๋‚˜ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋งˆ๋‚˜ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์—ฌ๋ถ€ (( ์„ฑ๋Šฅ์˜ ํ•ต์‹ฌ์„ฑ๋Šฅ์˜ ํ•ต์‹ฌ )) ๋ฅผ ์ธก์ •ํ•˜์—ฌ๋ฅผ ์ธก์ •ํ•˜์—ฌ kmkm ๋ณ€ํ™˜์„ ํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ•๊ตฌ๋ณ€ํ™˜์„ ํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ•๊ตฌ ->-> ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ฑ๋Šฅ ํ–ฅ์ƒ ๏ƒ˜ ๋กœ๊ทธ๋ฅผ ์ด์šฉํ•œ๋กœ๊ทธ๋ฅผ ์ด์šฉํ•œ dump : .logopen(filename) ,dump : .logopen(filename) , .logappend, .logclose.logappend, .logclose ๋“ฑ์˜๋“ฑ์˜ metameta ๋ช…๋ น์„ ์ด์šฉ๋ช…๋ น์„ ์ด์šฉ
  • 27. ์‹คํ–‰์‹คํ–‰ ,, ๋‹จ๊ณ„ ์‹คํ–‰๋‹จ๊ณ„ ์‹คํ–‰ ,, ์ถ”์ ์ถ”์  ๏ฌ BreakpointBreakpoint ๏ƒ˜ ์ผ๋ฐ˜์ ์ธ์ผ๋ฐ˜์ ์ธ breakpointbreakpoint ๏‚ง BP : memory addressBP : memory address ๋ฅผ ์ด์šฉํ•จ๋ฅผ ์ด์šฉํ•จ ๏‚ง BU :BU : ์‹ฌ๋ณผ์„ ์ด์šฉํ•จ์‹ฌ๋ณผ์„ ์ด์šฉํ•จ ๏‚ง BL : breakpoint listBL : breakpoint list ๏‚ง BE, BD : breakpoint enable/disableBE, BD : breakpoint enable/disable ๏‚ง JJ ํ‘œํ˜„์‹ํ‘œํ˜„์‹ ?? ์ฐธ ๋ช…๋ น์ฐธ ๋ช…๋ น ;; ๊ฑฐ์ง“ ๋ช…๋ น๊ฑฐ์ง“ ๋ช…๋ น ๏ƒ˜ Memory accessMemory access ๏‚ง BA : BPBA : BP ์ธ์ธ memory addressmemory address ๋ฅผ ์ด์šฉํ•ด๋ฅผ ์ด์šฉํ•ด debuggingdebugging ์„ ํ•˜์„ ํ•˜ ๊ณ ๊ณ  DVDV ๋ฅผ ์ด์šฉํ•ด ๋ณ€์ˆ˜ ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•ด์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅ๋ฅผ ์ด์šฉํ•ด ๋ณ€์ˆ˜ ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•ด์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅ ๏ฌ ์˜ˆ์™ธ์™€ ์ด๋ฒคํŠธ์˜ˆ์™ธ์™€ ์ด๋ฒคํŠธ ๏ƒ˜ Access violationAccess violation ๋„ ํฌํ•จ๋จ๋„ ํฌํ•จ๋จ ๏ƒ˜ CommandCommand ๋„ ์ง€์›ํ•˜์ง€๋งŒ๋„ ์ง€์›ํ•˜์ง€๋งŒ debug-event filtersdebug-event filters menumenu ์ด์šฉ ๊ถŒ์žฅ์ด์šฉ ๊ถŒ์žฅ ๏ƒ˜ P451P451 ์˜ˆ์™ธ ๋ธŒ๋ ˆ์ดํฌ ์ƒํƒœ ์ฐธ์กฐ์˜ˆ์™ธ ๋ธŒ๋ ˆ์ดํฌ ์ƒํƒœ ์ฐธ์กฐ
  • 28. WinDBGWinDBG ์ œ์–ดํ•˜๊ธฐ์ œ์–ดํ•˜๊ธฐ ๏ฌ ์ถ”๊ฐ€์ ์ธ ๋ฉ”ํƒ€ ๋ช…๋ น๋“ค์ถ”๊ฐ€์ ์ธ ๋ฉ”ํƒ€ ๋ช…๋ น๋“ค ๏ƒ˜ .cls : clear screen.cls : clear screen ๏ƒ˜ .enable_unicode : unicode.enable_unicode : unicode ๏ƒ˜ .locale.locale ๏ƒ˜ .formats.formats ๏ƒ˜ .shell.shell ๏ƒ˜ .occommand : outputdebugstring.occommand : outputdebugstring ํ•จ์ˆ˜ ํ˜ธํ•จ์ˆ˜ ํ˜ธ ์ถœ์‹œ ์ ‘๋‘์‚ฌ ๋ช…์‹œ์ถœ์‹œ ์ ‘๋‘์‚ฌ ๋ช…์‹œ
  • 29. ํ™•์žฅ ๊ธฐ๋Šฅํ™•์žฅ ๊ธฐ๋Šฅ ๏ฌ ํ™•์žฅ๊ธฐ๋Šฅ ๋กœ๋“œํ™•์žฅ๊ธฐ๋Šฅ ๋กœ๋“œ ,, ์ œ์–ด์ œ์–ด ๏ƒ˜ .chain.chain ์œผ๋กœ ๋กœ๋“œ๋œ ํ™•์žฅ๊ธฐ๋Šฅ ๊ฒ€ํ† ์œผ๋กœ ๋กœ๋“œ๋œ ํ™•์žฅ๊ธฐ๋Šฅ ๊ฒ€ํ†  ๏‚ง SOSSOS ๋ฅผ๋ฅผ loadload ํ•˜๋ฉด ์ด ๋ถ€๋ถ„์—ํ•˜๋ฉด ์ด ๋ถ€๋ถ„์— SOS.dllSOS.dll ์ด ์ถ”๊ฐ€๋จ์„ ์•Œ ์ˆ˜์ด ์ถ”๊ฐ€๋จ์„ ์•Œ ์ˆ˜ ์žˆ์Œ์žˆ์Œ ๏‚ง .load sos : .dll.load sos : .dll ์€ ์ƒ๋žตํ•ด์•ผ ํ•จ์€ ์ƒ๋žตํ•ด์•ผ ํ•จ ๏ƒ˜ .load, .unload.load, .unload ๋กœ ํ™•์žฅ๋กœ ํ™•์žฅ dll load & unloaddll load & unload ๏ฌ ์ค‘์š”ํ•œ ํ™•์žฅ ๋ช…๋ น๋“ค์ค‘์š”ํ•œ ํ™•์žฅ ๋ช…๋ น๋“ค ๏ƒ˜ !analyze โ€“v :!analyze โ€“v : ํ˜„์žฌ ์˜ˆ์™ธ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๋ถ„์„์ •๋ณดํ˜„์žฌ ์˜ˆ์™ธ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๋ถ„์„์ •๋ณด ๏ƒ˜ !critsec!critsec ์ฃผ์†Œ์ฃผ์†Œ :: ์ž„๊ณ„์„น์…˜์ž„๊ณ„์„น์…˜ ๏ƒ˜ !locks โ€“v :!locks โ€“v : ์ž ๊ฒจ์ง„ ์ž„๊ณ„์„น์…˜ ํ™•์ธ์ž ๊ฒจ์ง„ ์ž„๊ณ„์„น์…˜ ํ™•์ธ ๏ƒ˜ !token : thread!token : thread ์— ์ ์šฉ๋œ ๋ณด์•ˆ ์ •๋ณด์— ์ ์šฉ๋œ ๋ณด์•ˆ ์ •๋ณด ๏ƒ˜ !handle :!handle : ํ•ธ๋“ค์„ ํฌํ•จํ•˜๋Š” ๊ฐ์ฒดํƒ€์ž… ๋ฐ ์š”์•ฝ์ •๋ณดํ•ธ๋“ค์„ ํฌํ•จํ•˜๋Š” ๊ฐ์ฒดํƒ€์ž… ๋ฐ ์š”์•ฝ์ •๋ณด ๏‚ง ๋ฉ”๋ชจ๋ฆฌ๋ฉ”๋ชจ๋ฆฌ leak, deadlock debugleak, deadlock debug ์ค‘์š”ํ•œ์ค‘์š”ํ•œ debuggingdebugging
  • 30. ๋คํ”„ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ๋คํ”„ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ ๏ฌ ๋””๋ฒ„๊น… ๋„์ค‘๋””๋ฒ„๊น… ๋„์ค‘ .DUMP.DUMP ๋ช…๋ น์œผ๋กœ ํŒŒ์ผ ์ƒ์„ฑ๋ช…๋ น์œผ๋กœ ํŒŒ์ผ ์ƒ์„ฑ ๏ƒ˜ Ex) .dump /a/u c:tempaa.dmpEx) .dump /a/u c:tempaa.dmp ๋กœ ํ•˜๋ฉด ์‹ค์ œ ํŒŒ์ผ๋กœ ํ•˜๋ฉด ์‹ค์ œ ํŒŒ์ผ ์€์€ aa_2004-10-15_18-30-13-108_05E8.dmpaa_2004-10-15_18-30-13-108_05E8.dmp ๋กœ ์ƒ๋กœ ์ƒ ์„ฑ์„ฑ ๏ฌ ๋คํ”„ํŒŒ์ผ๋คํ”„ํŒŒ์ผ optionoption ๏ƒ˜ /u :/u : ๋‚ ์งœ๋‚ ์งœ ,, ์‹œ๊ฐ„์‹œ๊ฐ„ , PID, PID ๋ฅผ ํŒŒ์ผ์ด๋ฆ„์œผ๋กœ ์ถ”๊ฐ€ํ•จ๋ฅผ ํŒŒ์ผ์ด๋ฆ„์œผ๋กœ ์ถ”๊ฐ€ํ•จ ๏ƒ˜ /c :/c : ์ž์„ธํ•œ ์ •๋ณด์ž์„ธํ•œ ์ •๋ณด ๏ƒ˜ /a : load/a : load ๋œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ •๋ณด ๏ƒ˜ /f :/f : ํ˜„์žฌํ˜„์žฌ thread stackthread stack ๋ถ€ํ„ฐ๋ถ€ํ„ฐ loadload ๋œ ์‹ค์ œ๋œ ์‹ค์ œ binarybinary ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๋ชจ๋“  ์ •๋ณด ํฌํ•จ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๋ชจ๋“  ์ •๋ณด ํฌํ•จ ๏ƒ˜ /m :/m : ์ผ๋ฐ˜์ ์ธ์ผ๋ฐ˜์ ์ธ mini dump (vs.netmini dump (vs.net ๊ณผ ๋™์ผ๊ณผ ๋™์ผ )) ๏ƒ˜ /b : dmp/b : dmp ํŒŒ์ผ์„ ์••์ถ•ํ•˜์—ฌํŒŒ์ผ์„ ์••์ถ•ํ•˜์—ฌ .cab.cab ํŒŒ์ผ ์ƒ์„ฑํŒŒ์ผ ์ƒ์„ฑ
  • 31. ๋คํ”„ํŒŒ์ผ ์—ด๊ธฐ๋คํ”„ํŒŒ์ผ ์—ด๊ธฐ ๏ฌ ๋ฐฉ๋ฒ•๋ฐฉ๋ฒ• ๏ƒ˜ WinDBGWinDBG ์˜ ๋ฉ”๋‰ด์˜ ๋ฉ”๋‰ด (open crash dump)(open crash dump) ๏ƒ˜ ๋คํ”„ํŒŒ์ผ์„ ์—ด๊ณ  ์‹ฌ๋ณผ๋คํ”„ํŒŒ์ผ์„ ์—ด๊ณ  ์‹ฌ๋ณผ ,, ์†Œ์Šค์†Œ์Šค ,, ๋ฐ”์ด๋„ˆ๋ฆฌ ๊ฒฝ๋ฐ”์ด๋„ˆ๋ฆฌ ๊ฒฝ ๋กœ ์„ค์ •๋กœ ์„ค์ • ๏ฌ ๋‹จ๊ณ„๋‹จ๊ณ„ ๏ƒ˜ LM /vLM /v ๋ฅผ ์ด์šฉํ•ด ๋กœ๋“œ๋œ ์‹ฌ๋ณผ ํ™•์ธ๋ฅผ ์ด์šฉํ•ด ๋กœ๋“œ๋œ ์‹ฌ๋ณผ ํ™•์ธ :: ํ•„์š”ํ•„์š” ์‹œ ์‹ฌ๋ณผ ๊ฒฝ๋กœ์„ค์ •์‹œ ์‹ฌ๋ณผ ๊ฒฝ๋กœ์„ค์ • ๏ƒ˜ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ ์„ค์ •์ด๋ฏธ์ง€ ๊ฒฝ๋กœ ์„ค์ • ๏‚ง Windows hotfixWindows hotfix ์˜ ๊ฒฝ์šฐ์˜ ๊ฒฝ์šฐ OSSYMS.JSOSSYMS.JS ๋ฅผ ์‹คํ–‰ํ•˜๋ฅผ ์‹คํ–‰ํ•˜ ์—ฌ ์‹ฌ๋ณผ ์ €์žฅ์†Œ ๋‹ค์‹œ ๋กœ๋“œํ•ด์•„ํ•จ์—ฌ ์‹ฌ๋ณผ ์ €์žฅ์†Œ ๋‹ค์‹œ ๋กœ๋“œํ•ด์•„ํ•จ .. ๏ฌ ๋คํ”„ ๋””๋ฒ„๊น…์€๋คํ”„ ๋””๋ฒ„๊น…์€ WinDBGWinDBG ์‚ฌ์šฉ๋ฒ•๊ณผ ๋™์ผ์‚ฌ์šฉ๋ฒ•๊ณผ ๋™์ผ
  • 32. SOS(Son of Strike)SOS(Son of Strike) ๏ฌ Dump debuggingDump debugging ๏ƒ˜ Native application debugging :Native application debugging : ๊ธฐ๋Šฅ์ด ๋งŽ๊ธฐ๋Šฅ์ด ๋งŽ ์€์€ ๏ƒ˜ Managed application :Managed application : ์ œ์•ฝ์‚ฌํ•ญ์ด ๋งŽ์Œ์ œ์•ฝ์‚ฌํ•ญ์ด ๋งŽ์Œ ๏ฌ Native appNative app ์™€์™€ managed appmanaged app ๋ฅผ ๋™์‹œ์—๋ฅผ ๋™์‹œ์— ๊ฐ€์ง„๊ฐ€์ง„ app dump debuggingapp dump debugging ์„ ์œ„ํ•ด์„ ์œ„ํ•ด SOSSOS ๋ฅผ ์ง€์›ํ•จ๋ฅผ ์ง€์›ํ•จ ๏ฌ ์œ„์น˜์œ„์น˜ : <.net install dir>sdkv1.1Tool: <.net install dir>sdkv1.1Tool developers guidesamplessosdevelopers guidesamplessos ๏ฌ ์ƒ์„ธํ•œ ๋‚ด์šฉ์€์ƒ์„ธํ•œ ๋‚ด์šฉ์€ sos.htmsos.htm ์ฐธ์กฐ์ฐธ์กฐ
  • 33. SOS.dll loadSOS.dll load ๏ฌ SOSSOS ๋Š”๋Š” .NET Framework.NET Framework ์˜ ์ผ๋ถ€์˜ ์ผ๋ถ€ ๏ฌ Vsvars32.batVsvars32.bat ์‹คํ–‰์‹คํ–‰ ๏ƒ˜ .net.net ๊ณผ ๊ด€๋ จ๋œ๊ณผ ๊ด€๋ จ๋œ dirdir ๊ฒฝ๋กœ์— ํฌํ•จ๋˜๋„๋ก ํ™˜๊ฒฝ์„ค์ •๊ฒฝ๋กœ์— ํฌํ•จ๋˜๋„๋ก ํ™˜๊ฒฝ์„ค์ • ๏ƒ˜ .load sos.load sos ์‹คํ–‰์‹คํ–‰ ๏ฌ ExampleExample ๏ƒ˜ ์ฑ…์˜์ฑ…์˜ sourcesource ์˜์˜ exceptapp.exeexceptapp.exe ๏ƒ˜ !thread!thread ๋ฅผ ์ด์šฉํ•ด๋ฅผ ์ด์šฉํ•ด appDomainappDomain ์˜ ์ •๋ณด๋ฅผ ์•Œ์ˆ˜์žˆ์Œ์˜ ์ •๋ณด๋ฅผ ์•Œ์ˆ˜์žˆ์Œ ๏ƒ˜ !clrstack .all!clrstack .all ์„ ์ด์šฉํ•ด์„ ์ด์šฉํ•ด stackstack ํ™•์ธํ™•์ธ ๏ƒ˜ !dumpstack : .net!dumpstack : .net ๊ณผ๊ณผ nativenative ํ˜ธ์ถœ์ด ๋งŽ์€ ํ”„๋กœ๊ทธํ˜ธ์ถœ์ด ๋งŽ์€ ํ”„๋กœ๊ทธ ๋žจ์„ ๋‹ค๋ฃจ๋Š”๋žจ์„ ๋‹ค๋ฃจ๋Š” appapp ์˜ ํ˜ธ์ถœ ์Šคํƒํ™•์ธ์˜ ํ˜ธ์ถœ ์Šคํƒํ™•์ธ ๏ƒ˜ !dumpclass : class!dumpclass : class ์˜ ๋ชจ๋“ ์˜ ๋ชจ๋“  data fielddata field ํ™•์ธํ™•์ธ ๏ƒ˜ ~~~~
  • 34. ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ ๏ฌ ๋™๋ฃŒ์™€ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•œ ๋””๋ฒ„๊น… ๊ณผ์ • ๊ธฐ์ˆ ๋™๋ฃŒ์™€ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•œ ๋””๋ฒ„๊น… ๊ณผ์ • ๊ธฐ์ˆ  ๋ฐฉ๋ฒ•๋ฐฉ๋ฒ• ๏ฌ ์‚ฌ๋ก€ ์‹ค์Šต์œผ๋กœ ์ ๊ทน ํ™œ์šฉ์‚ฌ๋ก€ ์‹ค์Šต์œผ๋กœ ์ ๊ทน ํ™œ์šฉ ๏ฌ ํ›Œ๋ฅญํ•œ ๋””๋ฒ„๊น… ํŒ์œผ๋กœ ์ž๋ฃŒ ๊ณต์œ ํ›Œ๋ฅญํ•œ ๋””๋ฒ„๊น… ํŒ์œผ๋กœ ์ž๋ฃŒ ๊ณต์œ  ๏ฌ John RobbinsJohn Robbins ๊ฐ€ ์ฒ˜์Œ ๋„์ž…๊ฐ€ ์ฒ˜์Œ ๋„์ž…
  • 35. ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ #1#1 ๏ฌ ์‚ฌ๊ฑด ๋ฐœ๋‹จ์‚ฌ๊ฑด ๋ฐœ๋‹จ ๏ƒ˜ ํŒŒ์ผ ์ƒ์„ฑ์ด ๋˜์ง€ ์•Š๋Š”๋‹คํŒŒ์ผ ์ƒ์„ฑ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค !! ๏ฌ ์ „๊ฐœ์ „๊ฐœ ๏ƒ˜ fopenfopen ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์กฐ์‚ฌ์‹ ์ฐฝ์—์„œ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์กฐ์‚ฌ์‹ ์ฐฝ์—์„œ @err,hr@err,hr ์„ ์ž…๋ ฅํ•˜์—ฌ์„ ์ž…๋ ฅํ•˜์—ฌ Last ErrorLast Error ๊ฐ’ ํ™•์ธ๊ฐ’ ํ™•์ธ ๏‚ง โ€œโ€œ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹คํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค .โ€.โ€ ๏‚ง ๋ถ„๋ช…ํžˆ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ๋ถ„๋ช…ํžˆ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ !! ๏ƒ˜ ํŒŒ์ผ์„ ์—ฌ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•ํŒŒ์ผ์„ ์—ฌ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ๏‚ง MFCMFC ์˜์˜ SDI/MDISDI/MDI ์—์„œ ์ง€์›ํ•˜๋Š”์—์„œ ์ง€์›ํ•˜๋Š” [[ ์ตœ๊ทผ์— ์‚ฌ์šฉํ•œ ํŒŒ์ตœ๊ทผ์— ์‚ฌ์šฉํ•œ ํŒŒ ์ผ์ผ ]] ๋ฉ”๋‰ด ์ด์šฉ๋ฉ”๋‰ด ์ด์šฉ ๏‚ง ์˜ค๋ฅ˜ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ์˜ค๋ฅ˜ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ !! ๏‚ง [[ ํŒŒ์ผํŒŒ์ผ ]-[]-[ ์—ด๊ธฐ์—ด๊ธฐ ]] ๋ฉ”๋‰ด ์ด์šฉ๋ฉ”๋‰ด ์ด์šฉ ๏‚ง ์˜ค๋ฅ˜ ๋ฐœ์ƒ์˜ค๋ฅ˜ ๋ฐœ์ƒ !!
  • 36. ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ #1#1 ๏ฌ ์ „๊ฐœ์ „๊ฐœ ๏ƒ˜ ์ƒ๋Œ€ ๊ฒฝ๋กœ์˜ ์ฃผ์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธ๋˜์–ด ์žˆ์ƒ๋Œ€ ๊ฒฝ๋กœ์˜ ์ฃผ์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธ๋˜์–ด ์žˆ ์Œ์Œ ๏‚ง #define FILE_SAVE_PATH โ€œData/result.datโ€#define FILE_SAVE_PATH โ€œData/result.datโ€ ๏ƒ˜ ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ๋ฐ”๊พธ๋‹ˆ ์„ฑ๊ณต์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ๋ฐ”๊พธ๋‹ˆ ์„ฑ๊ณต !! ๏ฌ ๋ถ„์„๋ถ„์„ ๏ƒ˜ [[ ์ตœ๊ทผ์— ์‚ฌ์šฉํ•œ ํŒŒ์ผ์ตœ๊ทผ์— ์‚ฌ์šฉํ•œ ํŒŒ์ผ ]] ๋ฉ”๋‰ด๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ด๋ฉ”๋‰ด๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ด ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ๏ƒ˜ [[ ํŒŒ์ผํŒŒ์ผ ]-[]-[ ์—ด๊ธฐ์—ด๊ธฐ ]] ์‚ฌ์šฉ์‹œ์—๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์‚ฌ์šฉ์‹œ์—๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ๊ฒฝ๋กœ๊ฐ€ ํŒŒ์ผ์„ ์—ด์—ˆ๋˜ ๊ฒฝ๋กœ๋กœ ๋ฐ”๋€Œ์–ด ๋ฒ„๋ฆผ๊ฒฝ๋กœ๊ฐ€ ํŒŒ์ผ์„ ์—ด์—ˆ๋˜ ๊ฒฝ๋กœ๋กœ ๋ฐ”๋€Œ์–ด ๋ฒ„๋ฆผ ๏ฌ ํ•ด๊ฒฐํ•ด๊ฒฐ ๏ƒ˜ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์‹œ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ์ €์žฅํ•˜์—ฌํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์‹œ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ์ €์žฅํ•˜์—ฌ ,, ์ƒ์ƒ ๋Œ€ ๊ฒฝ๋กœ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ €์žฅ๋œ ๊ฒฝ๋กœ๋ฅผ ์ด์šฉ๋Œ€ ๊ฒฝ๋กœ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ €์žฅ๋œ ๊ฒฝ๋กœ๋ฅผ ์ด์šฉ
  • 37. ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ #1#1 ๏ฌ ๊ตํ›ˆ๊ตํ›ˆ ๏ƒ˜ ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ด์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ์–ด๋–ค ์™ธ๋ถ€์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ด์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ์–ด๋–ค ์™ธ๋ถ€ ์ ์ธ ์š”์ธ์— ์˜ํ•ด์„œ ํ˜„์žฌ ๊ฒฝ๋กœ๊ฐ€ ๋ฐ”๋€” ์ˆ˜ ์žˆ์ ์ธ ์š”์ธ์— ์˜ํ•ด์„œ ํ˜„์žฌ ๊ฒฝ๋กœ๊ฐ€ ๋ฐ”๋€” ์ˆ˜ ์žˆ ์Œ์„ ์ฃผ์˜ํ•ด์•ผ ํ•จ์Œ์„ ์ฃผ์˜ํ•ด์•ผ ํ•จ ๏ƒ˜ ๋””๋ฒ„๊น…์„ ํ•˜๊ธฐ ์ „์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋””๋ฒ„๊น…์„ ํ•˜๊ธฐ ์ „์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋ฅผ ๋ฏธ๋ฆฌ ์ •ํ•ด๋†“๊ณ  ๋””๋ฒ„๊น…์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๋„๋ฅผ ๋ฏธ๋ฆฌ ์ •ํ•ด๋†“๊ณ  ๋””๋ฒ„๊น…์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๋„ ์›€์ด ๋จ์›€์ด ๋จ
  • 38. ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ #2#2 ๏ฌ ์‚ฌ๊ฑด ๋ฐœ๋‹จ์‚ฌ๊ฑด ๋ฐœ๋‹จ ๏ƒ˜ ํฌ์ธํ„ฐ์˜ ๊ฐ’์ดํฌ์ธํ„ฐ์˜ ๊ฐ’์ด NULLNULL ์ด ๋˜๋Š” ๊ธฐ์ดํ•œ ํ˜„์ƒ์ด ๋˜๋Š” ๊ธฐ์ดํ•œ ํ˜„์ƒ ๏ฌ ์ „๊ฐœ์ „๊ฐœ MyStruct * pHead = (MyStruct *) malloc ( sizeof ( MyStruct ) );MyStruct * pHead = (MyStruct *) malloc ( sizeof ( MyStruct ) ); int mystruct[10];int mystruct[10]; for ( int i = 0 ; i <= 10 ; i++ )for ( int i = 0 ; i <= 10 ; i++ ) {{ mystruct[i] = 0;mystruct[i] = 0; }} ๏ƒ˜ pHeadpHead ๊ฐ’์ด๊ฐ’์ด NULLNULL ๋กœ ์„ค์ •๋กœ ์„ค์ • ๏ƒ˜ ๊ฐ’์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ค‘๋‹จ์  ์„ค์ •๊ฐ’์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ค‘๋‹จ์  ์„ค์ •
  • 39. ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ #2#2 ๏ฌ ์ „๊ฐœ์ „๊ฐœ (( ๊ณ„์†๊ณ„์† ))
  • 40. ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ๋””๋ฒ„๊น… ์ „์Ÿ ์ด์•ผ๊ธฐ #2#2 ๏ฌ ์ „๊ฐœ์ „๊ฐœ (( ๊ณ„์†๊ณ„์† )) ๏ƒ˜ ๋ฐ์ดํ„ฐ ์ค‘๋‹จ์ ์„ ํ†ตํ•ด์„œ ๋ณ€์ˆ˜์˜ ๊ฐ’๋“ค์„ ํ™•๋ฐ์ดํ„ฐ ์ค‘๋‹จ์ ์„ ํ†ตํ•ด์„œ ๋ณ€์ˆ˜์˜ ๊ฐ’๋“ค์„ ํ™• ์ธ์ธ ๏ฌ ๊ตํ›ˆ๊ตํ›ˆ ๏ƒ˜ ํฌ์ธํ„ฐ ๊ฐœ๋…์„ ์ •ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜๋„๋ก ํ•˜์žํฌ์ธํ„ฐ ๊ฐœ๋…์„ ์ •ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜๋„๋ก ํ•˜์ž .. ๏ƒ˜ ๋””๋ฒ„๊ฑฐ์˜ ๊ธฐ๋Šฅ์„ ์ถฉ๋ถ„ํžˆ ํ™œ์šฉํ•˜๋„๋ก ํ•˜์ž๋””๋ฒ„๊ฑฐ์˜ ๊ธฐ๋Šฅ์„ ์ถฉ๋ถ„ํžˆ ํ™œ์šฉํ•˜๋„๋ก ํ•˜์ž ..
  • 41. ๋””๋ฒ„๊ฑฐ ์ž‘๋™ ์›๋ฆฌ๋””๋ฒ„๊ฑฐ ์ž‘๋™ ์›๋ฆฌ ๏ฌ Win32Win32 ๋””๋ฒ„๊ฑฐ๋Š”๋””๋ฒ„๊ฑฐ๋Š” WindowsWindows ์˜ ๊ธฐ๋Šฅ์„์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•œ๋‹ค์‚ฌ์šฉํ•œ๋‹ค .. ๏ฌ ์š”๊ตฌ ์‚ฌํ•ญ์š”๊ตฌ ์‚ฌํ•ญ ๏ƒ˜ CreateProcessCreateProcess ์˜์˜ dwCreationFlagsdwCreationFlags ๋งค๊ฐœ๋งค๊ฐœ ๋ณ€์ˆ˜์—๋ณ€์ˆ˜์— DEBUG_ONLY_THIS_PROCESSDEBUG_ONLY_THIS_PROCESS ์„ค์ •์„ค์ • ๏ƒ˜ ๋””๋ฒ„๊ธฐ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๋‚˜์„œ๋””๋ฒ„๊ธฐ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๋‚˜์„œ WaitForDebugEvent APIWaitForDebugEvent API ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฃจํ”„๋กœ ์ง„์ž…๋ฃจํ”„๋กœ ์ง„์ž… ๏ƒ˜ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‚œ ํ›„์—๋Š”์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‚œ ํ›„์—๋Š” ContinueDebugEventContinueDebugEvent ํ•จ์ˆ˜ ํ˜ธ์ถœํ•จ์ˆ˜ ํ˜ธ์ถœ ๏ƒ˜
  • 42. ๋””๋ฒ„๊ฑฐ์˜ ๊ธฐ๋ณธ ๊ณจ๊ฒฉ ์ฝ”๋“œ๋””๋ฒ„๊ฑฐ์˜ ๊ธฐ๋ณธ ๊ณจ๊ฒฉ ์ฝ”๋“œ void main ( void )void main ( void ) {{ CreateProcess ( โ€ฆ , DEBUG_ONLY_THIS_PROCESS, โ€ฆ );CreateProcess ( โ€ฆ , DEBUG_ONLY_THIS_PROCESS, โ€ฆ ); while ( 1 == WaitForDebugEvent ( โ€ฆ ) )while ( 1 == WaitForDebugEvent ( โ€ฆ ) ) {{ if ( EXIT_PROCESS )if ( EXIT_PROCESS ) {{ break ;break ; }} ContinueDebugEvent ( โ€ฆ );ContinueDebugEvent ( โ€ฆ ); }} }}
  • 43. ๋””๋ฒ„๊น… ์ด๋ฒคํŠธ๋””๋ฒ„๊น… ์ด๋ฒคํŠธ ๏ฌ DEBUG_EVENTDEBUG_EVENT ๊ตฌ์กฐ์ฒด๊ตฌ์กฐ์ฒด (( ๋‚ด๋ถ€์ ์œผ๋กœ๋‚ด๋ถ€์ ์œผ๋กœ unionunion ๊ตฌ์กฐ๊ตฌ์กฐ )) ์— ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ด์— ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ด ๏ฌ CREATE_PROCESS_DEBUG_EVENTCREATE_PROCESS_DEBUG_EVENT ๏ƒ˜ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋””๋ฒ„๊น…๋˜๋Š” ํ”„๋กœ์„ธ์Šค์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋””๋ฒ„๊น…๋˜๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์ƒ์„ฑ๋  ๋•Œ๋‚˜ ๋””๋ฒ„๊ฑฐ๊ฐ€ ์ด๋ฏธ ํ™œ์„ฑํ™”๋‚ด์—์„œ ์ƒ์„ฑ๋  ๋•Œ๋‚˜ ๋””๋ฒ„๊ฑฐ๊ฐ€ ์ด๋ฏธ ํ™œ์„ฑํ™” ๋˜์–ด ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋””๋ฒ„๊น…ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐœ๋˜์–ด ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋””๋ฒ„๊น…ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐœ ์ƒ์ƒ ๏ฌ CREATE_THREAD_DEBUG_EVENTCREATE_THREAD_DEBUG_EVENT ๏ƒ˜ ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ ๋ฐœ์ƒ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ ๋ฐœ์ƒ ๏ฌ EXCEPTION_DEBUG_EVENTEXCEPTION_DEBUG_EVENT ๏ƒ˜ ๋””๋ฒ„๊ธฐ์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ๋ฐœ์ƒ๋””๋ฒ„๊ธฐ์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ๋ฐœ์ƒ
  • 44. ๋””๋ฒ„๊น… ์ด๋ฒคํŠธ๋””๋ฒ„๊น… ์ด๋ฒคํŠธ ๏ฌ EXIT_PROCESS_DEBUG_EVENTEXIT_PROCESS_DEBUG_EVENT ๏ƒ˜ ๋งˆ์ง€๋ง‰ ์Šค๋ ˆ๋“œ๊ฐ€ ๋””๋ฒ„๊ฑฐ๋ฅผ ๋‚˜๊ฐˆ ๋•Œ๋‚˜๋งˆ์ง€๋ง‰ ์Šค๋ ˆ๋“œ๊ฐ€ ๋””๋ฒ„๊ฑฐ๋ฅผ ๋‚˜๊ฐˆ ๋•Œ๋‚˜ ExitProcessExitProcess ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๏ฌ EXIT_THREAD_DEBUG_EVENTEXIT_THREAD_DEBUG_EVENT ๏ƒ˜ ๋””๋ฒ„๊ธฐ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒํ•  ๋•Œ ๋ฐœ์ƒ๋””๋ฒ„๊ธฐ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒํ•  ๋•Œ ๋ฐœ์ƒ ๏ƒ˜ ๋””๋ฒ„๊ฑฐ๊ฐ€ ์ด ํ•ธ๋“ค์„ ๋‹ซ์•„์„œ๋Š” ์•ˆ๋จ๋””๋ฒ„๊ฑฐ๊ฐ€ ์ด ํ•ธ๋“ค์„ ๋‹ซ์•„์„œ๋Š” ์•ˆ๋จ ๏ฌ LOAD_DLL_DEBUG_EVENTLOAD_DLL_DEBUG_EVENT ๏ƒ˜ ๋””๋ฒ„๊ธฐ๊ฐ€๋””๋ฒ„๊ธฐ๊ฐ€ DLLDLL ์„ ๋กœ๋“œํ•  ๋•Œ ๋ฐœ์ƒ์„ ๋กœ๋“œํ•  ๋•Œ ๋ฐœ์ƒ ๏ฌ OUTPUT_DEBUG_STRING_EVENTOUTPUT_DEBUG_STRING_EVENT ๏ƒ˜ ๋””๋ฒ„๊ธฐ๊ฐ€๋””๋ฒ„๊ธฐ๊ฐ€ OutputDebugStringOutputDebugString ํ•จ์ˆ˜ ํ˜ธ์ถœํ•  ๋•Œ ๋ฐœํ•จ์ˆ˜ ํ˜ธ์ถœํ•  ๋•Œ ๋ฐœ ์ƒ์ƒ ๏ฌ UNLOAD_DLL_DEBUG_EVENTUNLOAD_DLL_DEBUG_EVENT ๏ƒ˜ ๋””๋ฒ„๊ธฐ๊ฐ€๋””๋ฒ„๊ธฐ๊ฐ€ FreeLibraryFreeLibrary ๋กœ๋กœ DLLDLL ์„ ์–ธ๋กœ๋“œํ•  ๋•Œ ๋ฐœ์„ ์–ธ๋กœ๋“œํ•  ๋•Œ ๋ฐœ
  • 45. ๋””๋ฒ„๊ฑฐ ์ž‘์„ฑ ์‹œ ์ฃผ์˜ ์‚ฌํ•ญ๋””๋ฒ„๊ฑฐ ์ž‘์„ฑ ์‹œ ์ฃผ์˜ ์‚ฌํ•ญ ๏ฌ WriteProcessMemoryWriteProcessMemory ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋””๋ฒ„๊ธฐ์˜ ์ฝ”๋“œ๋ฅผ ๊ณ ์น˜๋Š” ๊ฒฝ์šฐ๋””๋ฒ„๊ธฐ์˜ ์ฝ”๋“œ๋ฅผ ๊ณ ์น˜๋Š” ๊ฒฝ์šฐ ,, FlushInstructionCacheFlushInstructionCache ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜ ์—ฌ ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ์–ด์•ผ ํ•จ์—ฌ ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ์–ด์•ผ ํ•จ ๏ฌ ์ค‘๋‹จ์ ์ด ํ™œ์„ฑํ™”๋˜๋ฉด์ค‘๋‹จ์ ์ด ํ™œ์„ฑํ™”๋˜๋ฉด ContinueDebugEventContinueDebugEvent ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์•ผํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹คํ•œ๋‹ค ..
  • 47. Tips & TricksTips & Tricks
  • 48. ๋ฉ”๋ชจ๋ฆฌ ๊ฐ’์˜ ์˜๋ฏธ๋ฉ”๋ชจ๋ฆฌ ๊ฐ’์˜ ์˜๋ฏธ ๏ฌ 0xAB, 0xABAB, 0xABABAB0xAB, 0xABAB, 0xABABAB ๏ƒ˜ LocalAlloc()LocalAlloc() ์— ์˜ํ•ด์„œ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ํ•ด์„œ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๏ฌ 0xBAADF00D0xBAADF00D ๏ƒ˜ LocalAlloc ( LMEM_FIXED, โ€ฆ )LocalAlloc ( LMEM_FIXED, โ€ฆ ) ์— ์˜ํ•ด์„œ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ํ•ด์„œ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๏ฌ 0xFEEE0xFEEE ๏ƒ˜ HeapAlloc()HeapAlloc() ๋˜๋Š”๋˜๋Š” LocalAlloc()LocalAlloc() ์— ์˜ํ•ด์„œ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ํ•ด์„œ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๏ฌ 0xCC0xCC ๏ƒ˜ /GZ/GZ ์˜ต์…˜์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์˜ต์…˜์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ,, ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜์— ์ž๋™์œผ๋กœ ํ• ๋‹น์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜์— ์ž๋™์œผ๋กœ ํ• ๋‹น ๋˜๋Š” ๊ฐ’๋˜๋Š” ๊ฐ’ (( ์Šคํƒ์Šคํƒ )) ๏ฌ 0xCD0xCD ๏ƒ˜ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๊ฒ€์‚ฌํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๊ฒ€์‚ฌํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค .. ์ผ๋ฐ˜์ ์œผ๋กœ์ผ๋ฐ˜์ ์œผ๋กœ DEBUG_NEWDEBUG_NEW ๊ฐ€ ์ •์˜๋˜์–ด์žˆ์„ ๋•Œ๊ฐ€ ์ •์˜๋˜์–ด์žˆ์„ ๋•Œ . malloc(). malloc() ๋‚˜๋‚˜ newnew ๋กœ ํ• ๋‹น๋˜๋Š”๋กœ ํ• ๋‹น๋˜๋Š” ๊ฐ’๊ฐ’ ๏ฌ 0xDD0xDD ๏ƒ˜ free()free() ๋‚˜๋‚˜ deletedelete ๋กœ ํ•ด์ œ๋œ ๊ฐ’๋กœ ํ•ด์ œ๋œ ๊ฐ’ .. ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฐ’์ด ํ•ด์ œ๋˜์—ˆ๋Š”์ง€ ํ™•์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฐ’์ด ํ•ด์ œ๋˜์—ˆ๋Š”์ง€ ํ™• ์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅ์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅ ๏ฌ 0xFD0xFD ๏ƒ˜ DEBUG_NEWDEBUG_NEW ๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์„ ๋•Œ๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์„ ๋•Œ ,, ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•˜๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•˜ ์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์•ž๋’ค์— ์ถ”๊ฐ€ํ•จ์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์•ž๋’ค์— ์ถ”๊ฐ€ํ•จ
  • 49. ๋””๋ฒ„๊ฑฐ ์ž๋™ ์‹คํ–‰๋””๋ฒ„๊ฑฐ ์ž๋™ ์‹คํ–‰ ๏ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋””๋ฒ„๊ฑฐ๊ฐ€์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋””๋ฒ„๊ฑฐ๊ฐ€ ์ž๋™์„ ์‹คํ–‰์ž๋™์„ ์‹คํ–‰ ๏ƒ˜ WindowsWindows ์„œ๋น„์Šค์™€์„œ๋น„์Šค์™€ COMCOM ์•„์›ƒ์•„์›ƒ -- ์˜ค๋ธŒ์˜ค๋ธŒ -- ํ”„ํ”„ ๋กœ์„ธ์Šค์—์„œ ์œ ์šฉ๋กœ์„ธ์Šค์—์„œ ์œ ์šฉ ๏ฌ HKEY_LOCAL_MACHINESOFTWAREMHKEY_LOCAL_MACHINESOFTWAREM icrosoftWindowsNTCurrentVersionImicrosoftWindowsNTCurrentVersionIm age File Execution Optionsage File Execution Options ํ‚ค์—์„œ ์‘์šฉํ‚ค์—์„œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ํŒŒ์ผ ์ด๋ฆ„๊ณผ ๋™์ผ ์ด๋ฆ„์˜ ํ‚คํ”„๋กœ๊ทธ๋žจ์˜ ํŒŒ์ผ ์ด๋ฆ„๊ณผ ๋™์ผ ์ด๋ฆ„์˜ ํ‚ค ๋ฅผ ์ƒ์„ฑ๋ฅผ ์ƒ์„ฑ ๏ƒ˜ DebuggerDebugger ๋ฌธ์ž์—ด ๊ฐ’๋ฌธ์ž์—ด ๊ฐ’ :: ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š”์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋””๋ฒ„๊ฑฐ์˜ ์ „์ฒด ๊ฒฝ๋กœ์™€ ํŒŒ์ผ ์ด๋ฆ„ ์ž…๋ ฅ๋””๋ฒ„๊ฑฐ์˜ ์ „์ฒด ๊ฒฝ๋กœ์™€ ํŒŒ์ผ ์ด๋ฆ„ ์ž…๋ ฅ
  • 50. ๋ฐฐ์—ด์˜ ํŠน์ • ๋ฒ”์œ„๋งŒ ํ™•์ธ๋ฐฐ์—ด์˜ ํŠน์ • ๋ฒ”์œ„๋งŒ ํ™•์ธ ๏ฌ ํฌ๊ธฐ๊ฐ€ํฌ๊ธฐ๊ฐ€ 50005000 ์ธ ๋ฐฐ์—ด์—์„œ์ธ ๋ฐฐ์—ด์—์„œ , 2000, 2000 ๋ฒˆ์งธ ๋ถ€๋ฒˆ์งธ ๋ถ€ ํ„ฐํ„ฐ 1010 ๊ฐœ ์š”์†Œ๋งŒ ํ™•์ธํ•˜๊ณ  ์‹ถ์„๋•Œ๊ฐœ ์š”์†Œ๋งŒ ํ™•์ธํ•˜๊ณ  ์‹ถ์„๋•Œ ๏ƒ˜ Char pFoo[5000];Char pFoo[5000]; ๏ƒ˜ WatchWatch ์ฐฝ์—์„œ์ฐฝ์—์„œ (pFoo + 2000) , 10(pFoo + 2000) , 10
  • 51. DirectXDirectX ๋ฐ์ดํ„ฐ ํ‘œ์‹œ๋ฐ์ดํ„ฐ ํ‘œ์‹œ ๏ฌ Autoexp.datAutoexp.dat ์— ์ถ”๊ฐ€์— ์ถ”๊ฐ€ D3DXQUATERNION =x=<x> y=<y> z=<z> w=<w>D3DXQUATERNION =x=<x> y=<y> z=<z> w=<w> _D3DMATRIX =_11=<_11> _22=<_22> _33=<_33> _44=<_44>_D3DMATRIX =_11=<_11> _22=<_22> _33=<_33> _44=<_44> D3DXVECTOR4 =x=<x> y=<y> z=<z> w=<w>D3DXVECTOR4 =x=<x> y=<y> z=<z> w=<w> _D3DVECTOR =x=<x> y=<y> z=<z>_D3DVECTOR =x=<x> y=<y> z=<z> D3DXVECTOR2 =x=<x> y=<y>D3DXVECTOR2 =x=<x> y=<y> _D3DCOLORVALUE =r=<r> g=<g> b=<b> a=<a>_D3DCOLORVALUE =r=<r> g=<g> b=<b> a=<a> _D3DPRESENT_PARAMETERS_ =hwnd=<hDeviceWindow>_D3DPRESENT_PARAMETERS_ =hwnd=<hDeviceWindow> Fmt=<BackBufferFormat> ZBuff=<EnableAutoDepthStencil>Fmt=<BackBufferFormat> ZBuff=<EnableAutoDepthStencil> _D3DDISPLAYMODE =w=<Width> h=<Height>_D3DDISPLAYMODE =w=<Width> h=<Height> Hz=<RefreshRate> Fmt=<Format>Hz=<RefreshRate> Fmt=<Format> _D3DVIEWPORT8 =x=<x> y=<y> width=<Width>_D3DVIEWPORT8 =x=<x> y=<y> width=<Width> height=<Height>height=<Height> (Visual C++ 6.0(Visual C++ 6.0 ์—์„œ๋„ ๊ฐ€๋Šฅ์—์„œ๋„ ๊ฐ€๋Šฅ ))
  • 52. ์Šค๋ ˆ๋“œ ์ด๋ฆ„ ์„ค์ •์Šค๋ ˆ๋“œ ์ด๋ฆ„ ์„ค์ • typedef struct tagTHREADNAME_INFOtypedef struct tagTHREADNAME_INFO {{ DWORDDWORD dwType;dwType; // must be 0x1000// must be 0x1000 LPCSTRLPCSTR szName;szName; // pointer to name (in user addr space)// pointer to name (in user addr space) DWORDDWORD dwThreadID;dwThreadID; // thread ID (-1=caller thread)// thread ID (-1=caller thread) DWORDDWORD dwFlags;dwFlags; // reserved for future use, must be zero// reserved for future use, must be zero } THREADNAME_INFO;} THREADNAME_INFO; void SetThreadName( DWORD dwThread, LPCSTR szThreadName, DWORD dwFlags )void SetThreadName( DWORD dwThread, LPCSTR szThreadName, DWORD dwFlags ) {{ THREADNAME_INFO info;THREADNAME_INFO info; info.dwType = 0x1000;info.dwType = 0x1000; info.szName = szThreadName;info.szName = szThreadName; info.dwThreadID = dwThread;info.dwThreadID = dwThread; info.dwFlags = dwFlags;info.dwFlags = dwFlags; __try__try {{ RaiseException( 0x406D1388, 0, sizeof(info)/sizeof(DWORD), (DWORD*)&info );RaiseException( 0x406D1388, 0, sizeof(info)/sizeof(DWORD), (DWORD*)&info ); }} __except(EXCEPTION_CONTINUE_EXECUTION)__except(EXCEPTION_CONTINUE_EXECUTION) {{ }}
  • 53. ์ฝ˜์†”์ฝ˜์†” TRACETRACE ๏ฌ ์ œํ’ˆ ๋””๋ฒ„๊น… ์‹œ์—๋„ ํ™œ์šฉ ๊ฐ€๋Šฅ์ œํ’ˆ ๋””๋ฒ„๊น… ์‹œ์—๋„ ํ™œ์šฉ ๊ฐ€๋Šฅ ๏ฌ AllocConsoleAllocConsole ์™€์™€ FreeConsole APIFreeConsole API ํ™œ์šฉํ™œ์šฉ ๏ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์‹คํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์‹ค ํ–‰ ์˜ต์…˜ ์ด์šฉํ–‰ ์˜ต์…˜ ์ด์šฉ
  • 54. SP2SP2 ์—์„œ์˜ ์›๊ฒฉ ๋””๋ฒ„๊น…์—์„œ์˜ ์›๊ฒฉ ๋””๋ฒ„๊น… ๏ฌ DCOMDCOM ์„ค์ •์„ค์ • (Visual Studio Computer)(Visual Studio Computer) ๏ƒ˜ DCOMCNFGDCOMCNFG ์‹คํ–‰์‹คํ–‰ ๏‚ง Component ServicesComponent Services ๏ƒ ๏ƒ  ์ปดํ“จํ„ฐ์ปดํ“จํ„ฐ ๏ƒ ๏ƒ  ๋‚ด ์ปดํ“จํ„ฐ ํด๋ฆญํ›„์— ๋‚ด ์ปดํ“จ๋‚ด ์ปดํ“จํ„ฐ ํด๋ฆญํ›„์— ๋‚ด ์ปดํ“จ ํ„ฐ ๊ตฌ์„ฑ ๋ฒ„ํŠผ ํด๋ฆญํ„ฐ ๊ตฌ์„ฑ ๋ฒ„ํŠผ ํด๋ฆญ ๏‚ง ๊ธฐ๋ณธ๊ธฐ๋ณธ COMCOM ๋ณด์•ˆ ํƒญ์—์„œ ์•ก์„ธ์Šค ๊ถŒํ•œ์—๋ณด์•ˆ ํƒญ์—์„œ ์•ก์„ธ์Šค ๊ถŒํ•œ์— ANONYMOUS LOGONANONYMOUS LOGON ์ถ”๊ฐ€ ํ›„์ถ”๊ฐ€ ํ›„ ,, ์›๊ฒฉ ์ ‘์† ๊ถŒํ•œ ํ—ˆ์šฉ์›๊ฒฉ ์ ‘์† ๊ถŒํ•œ ํ—ˆ์šฉ ๏ฌ WindowsWindows ๋ฐฉํ™”๋ฒฝ ์„ค์ •๋ฐฉํ™”๋ฒฝ ์„ค์ • (VS(VS ์™€ ์›๊ฒฉ ๋ชจ๋‘์™€ ์›๊ฒฉ ๋ชจ๋‘ )) ๏ƒ˜ DebuggerFirewallConfiguration.exeDebuggerFirewallConfiguration.exe ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ๏ฌ ASP, ASP.NET, ATLASP, ASP.NET, ATL ์„œ๋ฒ„ ๋””๋ฒ„๊น…์„œ๋ฒ„ ๋””๋ฒ„๊น… ๏ƒ˜ Enable Web Server Debugging :Enable Web Server Debugging : KB 833977KB 833977 ๏ฌ ์Šคํฌ๋ฆฝํŠธ ๋””๋ฒ„๊น…์Šคํฌ๋ฆฝํŠธ ๋””๋ฒ„๊น… ๏ƒ˜ Enable Script Debugging :Enable Script Debugging : KB 833977KB 833977 ๏ฌ ์›๊ฒฉ์›๊ฒฉ T-SQLT-SQL ๋””๋ฒ„๊น…๋””๋ฒ„๊น… ๏ƒ˜ ํ˜„์žฌ๋กœ์„œ๋Š” ๋ถˆ๊ฐ€๋Šฅํ˜„์žฌ๋กœ์„œ๋Š” ๋ถˆ๊ฐ€๋Šฅ , SP, SP ์ œ๊ณต ํ›„ ์ง€์› ๊ฐ€๋Šฅ์ œ๊ณต ํ›„ ์ง€์› ๊ฐ€๋Šฅ ๏ฌ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ž๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ž ๏ƒ˜ Run the debugger as a normal user :Run the debugger as a normal user : KB 833977KB 833977
  • 55. ํ”„๋กœ์„ธ์Šค ๋‹ค๋ฃจ๊ธฐํ”„๋กœ์„ธ์Šค ๋‹ค๋ฃจ๊ธฐ ๏ฌ Process KillProcess Kill ๏ƒ˜ ์ž‘์—… ๊ด€๋ฆฌ์ž์ž‘์—… ๊ด€๋ฆฌ์ž , Process Explorer,, Process Explorer, Taskkill(Windows XP+)Taskkill(Windows XP+) ๏ฌ ์šฐ์„  ์ˆœ์œ„ ๋‹ค๋ฃจ๊ธฐ์šฐ์„  ์ˆœ์œ„ ๋‹ค๋ฃจ๊ธฐ ๏ƒ˜ ntsd taskmgrntsd taskmgr ๋กœ๋กœ SeDebugPrivilegeSeDebugPrivilege ํš๋“ํš๋“ ๏‚ง ntsd โ€“hd โ€“c โ€œqdโ€ taskmgrntsd โ€“hd โ€“c โ€œqdโ€ taskmgr ๏‚ง -hd :-hd : ์ผ๋ฐ˜ ํž™ ์‚ฌ์šฉ์ผ๋ฐ˜ ํž™ ์‚ฌ์šฉ ๏‚ง -c :-c : ์ฒซ๋ฒˆ์งธ ๋ช…๋ น ์‹คํ–‰์ฒซ๋ฒˆ์งธ ๋ช…๋ น ์‹คํ–‰
  • 56. ์‹คํ–‰ ์ˆœ์„œ ํ™•์ธ์‹คํ–‰ ์ˆœ์„œ ํ™•์ธ ๏ฌ ManagedManaged ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์ˆœ์„œ ํ™•์ธ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์ˆœ์„œ ํ™•์ธ ๏ƒ˜ ํ”„๋กœ๊ทธ๋žจ์˜ ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹คํ”„๋กœ๊ทธ๋žจ์˜ ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹ค .. ๏ƒ˜ ํ”„๋กœํŒŒ์ผ๋งํ”„๋กœํŒŒ์ผ๋ง (Profiling)(Profiling) ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ ๏ƒ˜ CORDBG.EXECORDBG.EXE ์˜์˜ wtwt ๋ช…๋ น๋ช…๋ น (cordbg) wt(cordbg) wt 1 App::Main1 App::Main 3 App::Foo3 App::Foo 3 App::Bar3 App::Bar 5 App::Baz5 App::Baz 3 App::Bar3 App::Bar 3 App::Foo3 App::Foo 3 App::Main3 App::Main 21 instructions total21 instructions total
  • 57. ๋””๋ฒ„๊ทธ๋””๋ฒ„๊ทธ FA-KBFA-KB ๏ฌ Debugger slow to startupDebugger slow to startup ๏ƒ˜ 312115, XDK pre-Feb 2003, IIS Admin312115, XDK pre-Feb 2003, IIS Admin ๏ฌ Crash on Attach to ProcessCrash on Attach to Process ๏ƒ˜ 324879324879 ๏ฌ Trouble reading 6.0 pdbsTrouble reading 6.0 pdbs ๏ƒ˜ 318135318135 ๏ฌ Stepping in C# not accurateStepping in C# not accurate ๏ƒ˜ 316834 (fix in .NET SP1 C# compiler)316834 (fix in .NET SP1 C# compiler) ๏ฌ Cannot debug with KD attachedCannot debug with KD attached ๏ƒ˜ 306037306037 ๏ฌ Managed app fails to startManaged app fails to start ๏ƒ˜ 326098326098
  • 58. ExceptionException ์˜ ๋‘๊ฐ€์ง€ ํƒ€์ž…์˜ ๋‘๊ฐ€์ง€ ํƒ€์ž… ๏ฌ First Chance ExceptionFirst Chance Exception ๏ƒ˜ ๋””๋ฒ„๊ธฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋””๋ฒ„๊ฑฐ๊ฐ€๋””๋ฒ„๊ธฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋””๋ฒ„๊ฑฐ๊ฐ€ ๊ฐ€๋กœ์ฑ˜์„ ๋•Œ์˜๊ฐ€๋กœ์ฑ˜์„ ๋•Œ์˜ ExceptionException ๏ƒ˜ ๋””๋ฒ„๊ฑฐ๋Š” ์ด๋””๋ฒ„๊ฑฐ๋Š” ์ด ExceptionException ์„ ๋””๋ฒ„๊ธฐ๊ฐ€ ์ฒ˜๋ฆฌ์„ ๋””๋ฒ„๊ธฐ๊ฐ€ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„˜๊น€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„˜๊น€ ๏ฌ Second chance ExceptionSecond chance Exception ๏ƒ˜ ๋””๋ฒ„๊ฑฐ๊ฐ€ ์ „๋‹ฌํ•œ๋””๋ฒ„๊ฑฐ๊ฐ€ ์ „๋‹ฌํ•œ ExceptionException ์„ ๋””๋ฒ„๊ธฐ๊ฐ€์„ ๋””๋ฒ„๊ธฐ๊ฐ€ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋””๋ฒ„๊ฑฐ๋กœ ๋‹ค์‹œ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋””๋ฒ„๊ฑฐ๋กœ ๋‹ค์‹œ ExceptionException ์ด ๋‚ ์•„์˜ด์ด ๋‚ ์•„์˜ด ๏ƒ˜ ๋””๋ฒ„๊ธฐ๊ฐ€๋””๋ฒ„๊ธฐ๊ฐ€ ExceptionException ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ–ˆ๊ธฐ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ !!
  • 59. ยฉ 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Notas do Editor

  1. &amp;lt;number&amp;gt;
  2. &amp;lt;number&amp;gt;
  3. &amp;lt;number&amp;gt;