๋๋ ํ์ด์ฌ ์ฑ ๋๋ฒ๊น ์ ์ํด virtualenv์ gdb๋ฅผ ๊ฐ์ง๊ณ ๋๊ณ ์์์ต๋๋ค(๊ฒ์ฌํ๊ณ ์ถ์ ์ผ๋ถ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํจ).
์ฒด๊ณ:
$ virtualenv --version
1.11.4
$ uname -a
Linux virtual-machine 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$ /usr/bin/python2.7-dbg --version
Python 2.7.6
$ gdb --version
GNU gdb (Ubuntu 7.7-0ubuntu3.1) 7.7
๊ฐ์ ํ๊ฒฝ ์ค์ :
$ virtualenv -p /usr/bin/python2.7-dbg debugenv
$ source debugenv/bin/activate
gdb Python ํ์ฅ ๋ช ๋ น ํ ์คํธ(์คํจ):
(debugenv)$ gdb --args python
(gdb) py-bt
Undefined command: "py-bt". Try "help".
StackOverflow์ ์ด ์ฌ๋์ ๋ค์๊ณผ ๊ฐ์ ์๋ฃจ์
์ ๊ฒ์ํ์ต๋๋ค.
http://stackoverflow.com/questions/22931774/how-to-use-gdb-python-debugging-extension-inside-virtualenv
(debugenv)$ ln -s /usr/lib/debug/usr/bin/python2.7-gdb.py /path/to/debugenv/bin/python2.7-dbg-gdb.py
(debugenv)$ gdb --args python
(gdb) py-bt
Python Exception <class 'gdb.error'> No frame is currently selected.:
Error occurred in Python command: No frame is currently selected.
Python ๋๋ฒ๊ทธ ์คํ ํ์ผ์ด ์ฌ์ฉ ์ค์์ ๊ฐ์งํ ๊ฒฝ์ฐ ์ด๊ฒ์ด virtualenv ์์ฒด์์ ๊ตฌํ๋์ด์ผ ํ๋์ง ํ์คํ์ง ์์ง๋ง ์ฒ๋ฆฌํ๊ธฐ๊ฐ ์ฝ๊ฐ ์ฑ๊ฐ์๊ณ /ํผ๋์ค๋ฝ๊ณ virtualenv ํ์ด ์ธ์ํ๋๋ก ํ๊ณ ์ถ์์ต๋๋ค.
๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ง๊ธ๊น์ง ๊ฐ์ฌํฉ๋๋ค. ์ํ์ง ์์ผ๋ฉด ์ถ๊ฐํด์ผํฉ๋๋ค.
libpython์ ๊ฐ์ ธ์ค๊ณ py-bt๋ฅผ ์ฌ์ฉํ ๋ ์ด ์ค๋ฅ๋ฅผ ๋ง๋ฌ์ต๋๋ค. "Python ๋ช ๋ น์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค: __init__()๋ ์ ํํ 3๊ฐ์ ์ธ์(2๊ฐ)๋ฅผ ์ฌ์ฉํฉ๋๋ค."
์ด๊ฒ์ ์ฌ์ ํ โโ๋ฌธ์ ์ ๋๊น?
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ์๋ค :
(gdb) py-list
Undefined command: "py-list"
์ด ๋ฌธ์ ๋ ์ต๊ทผ ํ๋์ด ์์๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก ์ค๋๋ ๊ฒ์ผ๋ก ํ์๋์์ต๋๋ค. ๋ ์ด์ ํ๋์ด ์์ผ๋ฉด ํ์๋ฉ๋๋ค. ๊ณ์ ์ด์ด๋๊ณ ์ถ๋ค๋ฉด ๋๊ธ์ ์ถ๊ฐํ์ธ์. ๊ทํ์ ๊ธฐ์ฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ฐ๋ถํฌ 18.10์ python3.6-dbg์ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฐ๋ถํฌ 18.10์ python3.6-dbg์ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.