๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿง‘‍๐Ÿ’ผ SAP/๊ธฐํƒ€

[SAP] ๋””๋ฒ„๊น…์ด๋ž€? ๋””๋ฒ„๊น… ํ•˜๋Š” ๋ฒ• , ๋””๋ฒ„๊น… ๊ธฐ๋Šฅํ‚ค

by Jay Din 2024. 1. 3.
728x90
๋ฐ˜์‘ํ˜•

๋””๋ฒ„๊น… (debugging) ์ด๋ž€?

๋””๋ฒ„๊น…์˜ ๋ฒ„๊ทธ(bug)๋Š” ๋ฒŒ๋ ˆ๋ฅผ ๋œปํ•˜๋ฉฐ, ๋””๋ฒ„๊ทธ(debug)๋Š” 'ํ•ด์ถฉ์„ ์žก๋‹ค.'๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ์˜ ์˜ค๋ฅ˜๋ฅผ ๋ฒŒ๋ ˆ์— ๋น„์œ ํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ์ฐพ์•„ ์ˆ˜์ •ํ•˜๋Š” ์ผ์ด๋ผ๋Š” ์˜๋ฏธ๋กœ ์“ฐ์ž…๋‹ˆ๋‹ค.

์ฃผ๋กœ ๋””๋ฒ„๊ทธ๊ฐ€ ์˜ค๋ฅ˜ ์ˆ˜์ • ํ”„๋กœ๊ทธ๋žจ๊ณผ ๊ทธ ์ž‘์—…์„ ํ†ต์นญํ•˜๋Š” ๋ฐ˜๋ฉด ์ž‘์—…์— ์ค‘์ ์„ ๋‘” ์–ดํœ˜๋Š” ๋””๋ฒ„๊น…(debugging)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ์ˆ˜์ • ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์˜๋ฏธํ•  ๋•Œ๋Š” ๋””๋ฒ„๊ฑฐ(debugger)๋ผ๋Š” ๋ง์„ ์”๋‹ˆ๋‹ค.

ABAP Debugger๋Š” ABAP Workbench์— ํ†ตํ•ฉ๋œ TOOL์ž…๋‹ˆ๋‹ค.

 

ABAP์€ COBOL์—์„œ ํŒŒ์ƒ๋œ ์–ธ์–ด์ด๋ฉฐ, ์ ˆ์ฐจ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋””๋ฒ„๊น…์ด ๋” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค(๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐ Web Dynpro for ABAP์—์„œ๋„ ABAP Debugger๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค). ๋˜ํ•œ, ๋Œ€๋ถ€๋ถ„์˜ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋Š” ๋””๋ฒ„๊น…์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋…๋ฆฝ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์—ฌ์•ผ ํ•˜์ง€๋งŒ ABAP์€ ํ†ตํ•ฉ๋œ ํ™˜๊ฒฝ์œผ๋กœ ABAP ์—๋””ํ„ฐ์™€ ๋””๋ฒ„๊น… ํ™”๋ฉด์„ ์ž์œ ๋กญ๊ฒŒ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋””๋ฒ„๊น… ํ•˜๋Š” ๋ฒ•

์‹คํ–‰ํ™”๋ฉด์—์„œ `/h` ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์—”ํ„ฐ๋ฅผ ์น˜๋ฉด, ์•„๋ž˜์— "๋””๋ฒ„๊น…์„ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค." ๋ผ๋Š” ์•ˆ๋‚ด ๋ฉ”์„ธ์ง€๊ฐ€ ๋œน๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํด๋ฆญํ•˜๋ฉด ๊ทธ ์‹œ์ ๋ถ€ํ„ฐ ๋””๋ฒ„๊น… ๋ชจ๋“œ๊ฐ€ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

์‹คํ–‰ํ™”๋ฉด ex) sd๋ชจ๋“ˆ์˜ ๋ฒ•์ธ๊ฐ„ ๊ฑฐ๋ž˜ ๊ด€๋ฆฌํ™”๋ฉด

 

๋ฉ”๋‰ด์˜ ๋””๋ฒ„๊น…์—์„œ `Switch to New ABAP Debugger`๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

 

728x90

 

ํ•ด๋‹น ํ™”๋ฉด์—์„œ ๋””๋ฒ„๊น…์„ ํ†ตํ•ด ๋ฒ„๊ทธ๋ฅผ ์žก์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

๋””๋ฒ„๊น…์—์„œ์˜ ๊ธฐ๋Šฅํ‚ค ์—ญํ• 

ํ‚ค์›Œ๋“œ ๋‚ด์—ญ
F5 ํ•œ ๋‹จ๊ณ„์”ฉ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ด๋™ํ•œ๋‹ค.
F6 ํ•œ ๋‹จ๊ณ„์”ฉ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ด๋™ํ•˜๋‚˜, Subroutine์„ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด ์‹คํ–‰ ํ›„ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰, PERFORM ๊ตฌ๋ฌธ์—์„œ F6 ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜๋ฉด FORM ๊ตฌ๋ฌธ์˜ ๋””๋ฒ„๊น…์„ ๊ฑด๋„ˆ ๋›ฐ๊ณ , ๋‹ค์Œ ๋ผ์ธ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
F6 ๋Œ€์‹ ์— F5 ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, FORM ๊ตฌ๋ฌธ ์•ˆ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
F7 ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ Subroutine(FORM ๊ตฌ๋ฌธ)์„ ๋น ์ ธ๋‚˜์˜ค๊ณ  ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
F8 ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ ์ค‘๋‹จ์ (๋˜๋Š” ๊ด€์ฐฐ์ )์„ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

 

๋””๋ฒ„๊น… ํ™”๋ฉด์˜ ๋ฒ„ํŠผ ๊ธฐ๋Šฅ

๋””๋ฒ„๊น…์€ ํ•„๋“œ, ํ…Œ์ด๋ธ”, ์ค‘๋‹จ์ , ๊ด€์ฐฐ์  ๋“ฑ์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ํŽธ๋ฆฌํ•œ GUI ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ด์ค๋‹ˆ๋‹ค.

ํ‚ค์›Œ๋“œ ๋‚ด์—ญ
ํ•„๋“œ ์Šคํฌ๋กค ๋ฒ„ํŠผ์„ ์ด์šฉํ•˜์—ฌ ์ด 8๊ฐœ์˜ ํ•„๋“œ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
(Fields) 4๊ฐœ์˜ ์ค‘์š”ํ•œ ์‹œ์Šคํ…œ ํ•„๋“œ๋Š” ํ•ญ์ƒ ์กฐํšŒ๋ฉ๋‹ˆ๋‹ค.
- SY-SUBRC: ๋ช…๋ น์–ด ์„ฑ๊ณต ์—ฌ๋ถ€, 0์€ ์„ฑ๊ณต ์ด์™ธ๋Š” ์‹คํŒจ
- SY-TABIX: ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์˜ ํ˜„์žฌ ๋ผ์ธ ๋ฒˆํ˜ธ
- SY-DBCNT: SELECT ๊ตฌ๋ฌธ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ฝ์–ด์˜จ ๋ผ์ธ ์ˆ˜
- SY-DYNNR: ํ˜„์žฌ ์Šคํฌ๋ฆฐ ๋ฒˆํ˜ธ
ํ…Œ์ด๋ธ”
(Tables)
์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ณด์—ฌ์ค€๋‹ค.
๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ ๋ฐ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์ค‘๋‹จ์ 
(Breakpoints)
30๊ฐœ์˜ ์ค‘๋‹จ์ ์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์กฐํšŒ๋œ ์ค‘๋‹จ์ ์„ ๋”๋ธ”ํด๋ฆญํ•˜์—ฌ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ด€์ฐฐ์ 
(Watchpoints)
ํ•„๋“œ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋Š” ์‹œ์ ์—์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์ •์ง€๋˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๊ด€์ฐฐ์ ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ˜ธ์ถœ
(Calls)
ํ˜„์žฌ ์ด๋ฒคํŠธ์˜ ์ค‘๋‹จ์  ์ˆœ์„œ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
์ด๋ฒคํŠธ๋Š” START-OF-SELECTION๊ณผ ๊ฐ™์€ ๊ตฌ๋ฌธ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
๋งˆ์ง€๋ง‰์œผ๋กœ ํ˜ธ์ถœ๋œ ์ค‘๋‹จ์ ์ด ์ƒ๋‹จ์— ๋ณด์ž…๋‹ˆ๋‹ค.
๊ฐœ์š”
(Overview)
ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์กฐ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
EVENT, SUBROUTINE, MODULE์„ ๋ณด์—ฌ์ฃผ๋ฉฐ, ๋”๋ธ”ํด๋ฆญ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ๊ตฌ๋ฌธ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
์„ธํŒ…
(Settings)
ํ˜„์žฌ ๋””๋ฒ„๊น… ๋ชจ๋“œ๋ฅผ ์„ธํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

728x90
๋ฐ˜์‘ํ˜•