[Go] debug: dlv

๊ธฐ๋ณธ ๋””๋ฒ„๊น… ๋„๊ตฌ์ธ dlv๋ฅผ ์ด์šฉํ•ด์„œ ์ค‘๋‹จ์ ์„ ์ฐ๊ณ  ๋””๋ฒ„๊น…์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ๋‹ค.

๋ณดํ†ต์€ ๊ธฐ๋ณธ์œผ๋กœ ์„ค์น˜๋˜์–ด์žˆ์„ ๊ฒƒ์ด๋‹ค.

์—†์œผ๋ฉด ์ง์ ‘ ์„ค์น˜ํ•œ๋‹ค.

go get github.com/go-delve/delve/cmd/dlv



๋””๋ฒ„๊น… ๋ชจ๋“œ ์ง„์ž…

debug ๋ช…๋ น๊ณผ ํ•จ๊ป˜ ์ง„์ž…์  ์†Œ์ŠคํŒŒ์ผ์„ ์ „๋‹ฌํ•˜๋ฉด ๋””๋ฒ„๊น… ๋ชจ๋“œ์— ๋“ค์–ด๊ฐ„๋‹ค.

๋””๋ฒ„๊น…์šฉ ํŒŒ์ผ๋„ ํ•˜๋‚˜ ์ƒ๊ธด๋‹ค. ์ด๊ฑด ๋ฌด์‹œํ•ด๋„ ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ด์ œ๋ถ€ํ„ฐ gdb๋ฅผ ์“ฐ๋“ฏ์ด ๋ช…๋ น์–ด๋ฅผ ๋‚ ๋ฆฌ๋ฉด์„œ ๋””๋ฒ„๊น…์„ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

help๋ฅผ ๋‚ ๋ฆฌ๋ฉด ๋ช…๋ น์–ด ๋ชฉ๋ก์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๊ณ 

exit๋ฅผ ์น˜๋ฉด ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

list ๋ช…๋ น์— ํŒจํ‚ค์ง€๋ช….ํ•จ์ˆ˜๋ช…์„ ์ „๋‹ฌํ•˜๋ฉด, ๊ทธ ํ•จ์ˆ˜์˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‚œ ์ €๊ธฐ์„œ 8๋ฒˆ์งธ ์ค„ ์ฆˆ์Œ์— ์ค‘๋‹จ์ ์„ ๊ฑธ์–ด๋ณด๋ ค ํ•œ๋‹ค.




์ค‘๋‹จ์ (breakpoint) ๊ฑธ๊ธฐ

๋จผ์ € ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์†Œ์ŠคํŒŒ์ผ๊ณผ, ์ค‘๋‹จ์ ์„ ๊ฑธ ํ–‰์„ ์ „๋‹ฌํ•ด์„œ break ๋ช…๋ น์„ ๋‚ ๋ฆฌ๋ฉด ์ค‘๋‹จ์ ์ด ์ƒ์„ฑ์ด ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ์ด ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

์ค‘๋‹จ์ ์ด ๊ฑธ๋ฆฐ ์ƒํƒœ๋กœ ์‹คํ–‰์„ ์‹œํ‚ค๋ ค๋ฉด, continue ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ ์ค‘๋‹จ์ ์„ ๋งŒ๋‚ ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ ์‹คํ–‰์„ ํ•œ๋‹ค.

locals๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ์ƒํƒœ์˜ ์ง€์—ญ๋ณ€์ˆ˜ ๋ชฉ๋ก์„ ๋ฝ‘์•„๋ณผ ์ˆ˜ ์žˆ๊ณ 

๊ณ„์†ํ•ด์„œ continue๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ถ„์„ํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค

๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ ํ˜•ํƒœ๋Š” ์ด๋ ‡๋‹ค.




Visual Studio Code์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ

VScode์—์„œ dlv๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ„๋žตํžˆ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.
๋ฐฉ๋ฒ•์€ ๋‹ค๋ฅผ๊ฒŒ ๋”ฑํžˆ ์—†๋‹ค.

์ค‘๋‹จ์ ์„ ๊ฑธ๊ณ  ์‹ถ์€ ํ–‰์„ ํด๋ฆญํ•ด์„œ ์‹œ๋ป˜๊ฒ‹๊ฒŒ ์น ํ•˜๊ณ 

๋””๋ฒ„๊ทธ๋ฅผ ๋Œ๋ฆฌ๋ฉด

๋””๋ฒ„๊ทธ ๋ชจ๋“œ์— ์ง„์ž…ํ•œ๋‹ค.

continue ๋ฒ„ํŠผ ๋ˆ„๋ฅผ๋•Œ๋งˆ๋‹ค ์ค‘๋‹จ์ ์„ ๋Œ๋ฉด์„œ ๊ฐ’์ด๋‚˜ ์ƒํƒœ๋“ค์„ ๋‹ค ์ฐ์–ด์ค„ ๊ฒƒ์ด๋‹ค.




Goland์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ

์ด๊ฒƒ๋„ VSCode์™€ ๋ณ„๋กœ ๋‹ค๋ฅผ๊ฑด ์—†๋‹ค.

ํ–‰ ํด๋ฆญํ•ด์„œ ์ค‘๋‹จ์  ์ฐ๊ณ 


๋””๋ฒ„๊ทธ ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.


๊ทธ๋Ÿฌ๋ฉด ๋น„์Šทํ•œ ํ˜•ํƒœ๋กœ ๋Œ๋ ค๋ณผ ์ˆ˜ ์žˆ๋‹ค.



์ฐธ์กฐ
https://github.com/go-delve/delve
https://golang.cafe/blog/golang-debugging-with-delve.html