버전 Ubuntu 16.04
으로 실행 중입니다 . ( ) 로 업그레이드했을 때 gdb에서 다음과 같은 Python 오류가 발생하기 시작했습니다.gdb
7.11.1-0ubuntu1~16.5
g++
g++-6.4
Ubuntu 6.4.0-17ubuntu1~16.04
Python Exception <class 'TypeError'> expected string or bytes-like object:
Error while executing Python code.
디버깅하는 동안 클래스나 STL 객체를 인쇄하려고 할 때마다. 만 gdb-8
지원 한다고 판단하여 다음 지침에 따라 g++-6.4
빌드를 시도했습니다.gdb-8.1
http://www.linuxfromscratch.org/blfs/view/cvs/general/gdb.htmlgdb-8.1
가 필요 하지만 Python을 업그레이드하지 않고 python 2.7.15
설치하는 것만으로는 gdb-8.1
(설치된 버전은 2.7.12
) 인쇄 문제가 해결되지 않았습니다.
다음에서 허용되는 답변을 따릅니다.Ubuntu에 최신 Python 2.7.X 또는 3.X를 어떻게 설치합니까?python 2.7.15
, ppa 에서 설치를 시도했습니다 deadsnakes
. 그런데 신기하게도 python 2.7.xx
ppa 페이지에도 나와 있지 않습니다(https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa2.3, 2.4, 2.5, 2.6
), 모두 사용 가능 하더라도 . 그런 다음 다음 지침에 따라 수동으로 빌드해 보았습니다.http://www.linuxfromscratch.org/blfs/view/svn/general/python2.htmlpython 2.7.15
, 그러나 별도의 위치( /usr/local/bin
등)에 설치되어 대체되지 않는 것으로 나타났습니다 python 2.7.12
. 따라서 gdb 인쇄 오류가 여전히 존재합니다.
설치된 것을 완전히 교체할 수 있는 방법이 있나요 python 2.7.12
? 올바른 Python 바이너리 파일을 사용할 수 있더라도 dev 파일의 라이브러리 위치를 새 버전의 라이브러리 위치로 변경해야 하며 gdb-8.1
해당 python-dev 파일에 대해 다시 빌드될 수 있습니다. 그렇지 않으면 다음과 같은 오류가 표시됩니다.
Traceback (most recent call last):
File "/usr/share/gdb/python/gdb/__init__.py", line 144, in auto_load_packages
__import__(modname)
File "/usr/share/gdb/python/gdb/command/pretty_printers.py", line 19, in <module>
import copy
File "/usr/lib/python2.7/copy.py", line 52, in <module>
import weakref
File "/usr/lib/python2.7/weakref.py", line 14, in <module>
from _weakref import (
ImportError: cannot import name _remove_dead_weakref
내가 시작할 때 gdb
. 아무것도 도움이 되지 않으면 및 와 Ubuntu-18.04
함께 제공되는 버전 으로 업그레이드해야 할 수도 있습니다(바람직하지 않음). 단, 실험용 버전은 저장소에서 사용할 수 있습니다.python 2.7.15rc
gdb-7
gdb-8
이와 유사한 질문은 구체적이지 않았으며 문제 해결에 도움이 되지 않았습니다.