Nemo: Nemo๋ฅผ ๋””๋ฒ„๊ทธํ•˜๋Š” ๋ฐฉ๋ฒ•

์— ๋งŒ๋“  2020๋…„ 01์›” 27์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: linuxmint/nemo

Linux Mint 19.3 Tricia ์žˆ์Šต๋‹ˆ๋‹ค.

nemo ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•ฝ๊ฐ„์˜ ๋””๋ฒ„๊น… ๋„์›€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. https://forums.linuxmint.com/viewtopic.php?t=235125๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
https://stackoverflow.com/questions/31282505/how-to-debug-nemo-linux-mint-file-manager

์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ๋””๋ฒ„๊ทธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

'์†Œ์Šค ์ฝ”๋“œ ์ €์žฅ์†Œ'๋ฅผ ์ผญ๋‹ˆ๋‹ค.

git clone https://github.com/linuxmint/nemo
cd nemo

์ด์ œ ์ฝ”๋“œ๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋ฅผ ๊ด€์ฐฐํ•˜๊ธฐ ์œ„ํ•ด printf( "key_1 %s \n", key_1); ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

sudo apt-get build-dep nemo 
dpkg-buildpackage 
cd .. && sudo dpkg -i *.deb

ctrl+alt+backspace Xorg ๋‹ค์‹œ ์‹œ์ž‘

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‚˜๋Š” ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

$ gdb nemo
(gdb) r

๊ทธ๋Ÿฐ ๋‹ค์Œ printf ์ถœ๋ ฅ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

๋” ์šฐ์•„ํ•œ ์†”๋ฃจ์…˜์ด ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. printf , dpkg-buildpackage , ctrl+alt+backspace ์—†์ด ์ฝ”๋“œ๋ฅผ ๋””๋ฒ„๊ทธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š” ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค ๋” ๋นจ๋ฆฌ ๋‹ต์žฅ์„ ๋“œ๋ฆฌ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ์‹์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ๋นŒ๋“œ ํ›„ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•ด dpkg-buildpackage๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•˜๊ณ  ๋Œ€์‹  ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
sudo ninja -C debian/build install
-- ๋‹ค์Œ ๋ฒˆ ์žฌ์ปดํŒŒ์ผ - ํ›จ์”ฌ ๋น ๋ฅด๊ณ  ๋‹ค์‹œ ์„ค์น˜ํ•  ํŒจํ‚ค์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค(์‹œ์Šคํ…œ์€ ์‹ค์ œ๋กœ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ  ๊ธฐ์กด ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๊ณ  ์žˆ์Œ). ๋””๋ฒ„๊ทธ ์ถœ๋ ฅ ๋“ฑ ๊ทธ๋ƒฅ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” (๋‹น์‹ ์ด ๋•Œ dpkg-buildpackage์™€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ '์ง„์งœ'๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ ํ•  ๋•Œ ๋นŒ๋“œ ํด๋”๋ฅผ ์ฒญ์†Œํ•˜๊ธฐ ์œ„ํ•ด sudo๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๋Š” ์ ์„ ์ดํ•ด sudo git clean -fdx -์ด ๋ฐ˜ํ™˜์„์— ์›์‹œ ์ƒํƒœ).

๋‚˜๋Š” ์™„์ „ํ•œ IDE์—์„œ ๊ฐœ๋ฐœ์„ ์‹œ๋„ํ•œ ์ ์ด ์—†์œผ๋ฏ€๋กœ ์ค‘๋‹จ์ ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ์ค‘์ง€ํ•˜๋ ค๋Š” ์œ„์น˜์— G_BREAKPOINT() ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด gdb์—์„œ ํ•„์š”ํ•œ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

nemo๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์„ธ์…˜์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ํ•„์š” ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค . ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
nemo --quit
๋˜๋Š”
killall nemo

๋ฐ”ํƒ• ํ™”๋ฉด ์•„์ด์ฝ˜์„ ๋””๋ฒ„๊ทธํ•˜๋ ค๋ฉด nemo-desktop ๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ ๋Œ€์‹  ์ข…๋ฃŒ/๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์ฒ˜์Œ์—๋Š” ๋‘ ๋ฒˆ ์ข…๋ฃŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ธ์…˜ ๊ด€๋ฆฌ์ž๋Š” ์„ธ์…˜์ด ์ข…๋ฃŒ๋œ ๊ฒฝ์šฐ ์„ธ์…˜์ด ์‹œ์ž‘๋œ ํ›„ ์ •ํ™•ํžˆ ํ•œ ๋ฒˆ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.)

๋‚˜๋Š” ์ฃผ๋กœ print ๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋” ๋ณต์žกํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ gdb๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(๋งŽ์€ ๋ฌธ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค). ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ž‘์—…ํ•˜๋ ค๋Š” ๋Œ€์ƒ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. Valgrind๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฐ ์ข‹์€ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค . https://wiki.gnome.org/Valgrind๋ฅผ ํ™•์ธ

glib/gtk/gobject ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด G_DEBUG=fatal_warnings gdb ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ gdb๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ•ด๋‹น ๊ฒฝ๊ณ ๊ฐ€ ์ค‘๋‹จ๋˜๊ณ  ๊ณ„์† ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - https://developer.gnome.org/glib/stable ์€ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์ด nemo(gtk3๊ณผ ํ•จ๊ป˜)์— ๊ธฐ๋ฐ˜์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. - ์ €๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ 'devhelp' ํ”„๋กœ๊ทธ๋žจ์„ -doc ํŒจํ‚ค์ง€์™€ ํ•จ๊ป˜ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์›น ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์ฐพ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  5 ๋Œ“๊ธ€

@mtwebster ์ €๋Š” nemo-main.c ๊ฐ€ ์ฃผ์š” ์ง„์ž…์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. VSCode์— ์ค‘๋‹จ์ ์„ ๋„ฃ๊ณ  ์ด ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? nemo-main.c ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์–ด๋–ค ๋ช…๋ น์„ ๋‚ด๋ ค์•ผ ํ• ๊นŒ์š”?

์•ˆ๋…•ํ•˜์„ธ์š” ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค ๋” ๋นจ๋ฆฌ ๋‹ต์žฅ์„ ๋“œ๋ฆฌ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ์‹์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ๋นŒ๋“œ ํ›„ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•ด dpkg-buildpackage๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•˜๊ณ  ๋Œ€์‹  ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
sudo ninja -C debian/build install
-- ๋‹ค์Œ ๋ฒˆ ์žฌ์ปดํŒŒ์ผ - ํ›จ์”ฌ ๋น ๋ฅด๊ณ  ๋‹ค์‹œ ์„ค์น˜ํ•  ํŒจํ‚ค์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค(์‹œ์Šคํ…œ์€ ์‹ค์ œ๋กœ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ  ๊ธฐ์กด ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๊ณ  ์žˆ์Œ). ๋””๋ฒ„๊ทธ ์ถœ๋ ฅ ๋“ฑ ๊ทธ๋ƒฅ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” (๋‹น์‹ ์ด ๋•Œ dpkg-buildpackage์™€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ '์ง„์งœ'๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ ํ•  ๋•Œ ๋นŒ๋“œ ํด๋”๋ฅผ ์ฒญ์†Œํ•˜๊ธฐ ์œ„ํ•ด sudo๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๋Š” ์ ์„ ์ดํ•ด sudo git clean -fdx -์ด ๋ฐ˜ํ™˜์„์— ์›์‹œ ์ƒํƒœ).

๋‚˜๋Š” ์™„์ „ํ•œ IDE์—์„œ ๊ฐœ๋ฐœ์„ ์‹œ๋„ํ•œ ์ ์ด ์—†์œผ๋ฏ€๋กœ ์ค‘๋‹จ์ ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ์ค‘์ง€ํ•˜๋ ค๋Š” ์œ„์น˜์— G_BREAKPOINT() ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด gdb์—์„œ ํ•„์š”ํ•œ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

nemo๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์„ธ์…˜์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ํ•„์š” ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค . ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
nemo --quit
๋˜๋Š”
killall nemo

๋ฐ”ํƒ• ํ™”๋ฉด ์•„์ด์ฝ˜์„ ๋””๋ฒ„๊ทธํ•˜๋ ค๋ฉด nemo-desktop ๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ ๋Œ€์‹  ์ข…๋ฃŒ/๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์ฒ˜์Œ์—๋Š” ๋‘ ๋ฒˆ ์ข…๋ฃŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ธ์…˜ ๊ด€๋ฆฌ์ž๋Š” ์„ธ์…˜์ด ์ข…๋ฃŒ๋œ ๊ฒฝ์šฐ ์„ธ์…˜์ด ์‹œ์ž‘๋œ ํ›„ ์ •ํ™•ํžˆ ํ•œ ๋ฒˆ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.)

๋‚˜๋Š” ์ฃผ๋กœ print ๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋” ๋ณต์žกํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ gdb๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(๋งŽ์€ ๋ฌธ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค). ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ž‘์—…ํ•˜๋ ค๋Š” ๋Œ€์ƒ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. Valgrind๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฐ ์ข‹์€ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค . https://wiki.gnome.org/Valgrind๋ฅผ ํ™•์ธ

glib/gtk/gobject ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด G_DEBUG=fatal_warnings gdb ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ gdb๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ•ด๋‹น ๊ฒฝ๊ณ ๊ฐ€ ์ค‘๋‹จ๋˜๊ณ  ๊ณ„์† ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - https://developer.gnome.org/glib/stable ์€ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์ด nemo(gtk3๊ณผ ํ•จ๊ป˜)์— ๊ธฐ๋ฐ˜์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. - ์ €๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ 'devhelp' ํ”„๋กœ๊ทธ๋žจ์„ -doc ํŒจํ‚ค์ง€์™€ ํ•จ๊ป˜ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์›น ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์ฐพ์Šต๋‹ˆ๋‹ค.

@blueray453 ์งˆ๋ฌธ

@mtwebster ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ

@icarter09 ์ธ์ƒ์ด

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰