2016-12-15 4 views
4

CentOS 6.5マシンでPython 3.5をダウンロードしてコンパイルしました。問題なく動作します。問題は、私はgdbを使用して、私のpythonプログラムの実行中にCPUの過度な使用に関連する微妙なバグをデバッグする必要があることです。公式Pythonドキュメントからgdbのpy-btを有効にできません

についてgdb extension、彼らが行う唯一の事は~/.gdbinit

add-auto-load-safe-path /path/to/dir/with/python-gdb.py

を追加することであると言います。バージョン7.2とPythonのサポートが有効になっている私は

gdb --args /path/to/python3.5/binary 
(gdb) py-bt 

でそれをテストしたが、私は

Undefined command: "py-bt" 

gdbを取得します。

答えて

0

GDBの自動負荷GDB CLI(またはPythonやスキーム)スクリプト:あなたのPYTHONPATH/PATH_TO_PYTHON_SRC/Tools/gdbを追加して、gdbで、

python import libpython 

ソースをやっても持っていますscripts-directory検索パスのディレクトリロードされる実行可能ファイルまたは共有オブジェクトごとに、gdbはobjfile-gdb.gdb(またはobjfile-gdb.pyまたはobjfile-gdb.scm)という名前のスクリプトを探します。

pythonのgdb拡張機能を自動ロードする方法の1つは、ダウンロードしたpython-gdb.pyファイルをscripts-directoryパスのいずれかのディレクトリに置くことです。たとえば、Ubuntuの上python2.7-dbgパッケージには、これらのファイルをインストールします。

-rwxr-xr-x /usr/lib/debug/usr/bin/python2.7-gdb.py 
lrwxrwxrwx /usr/lib/debug/usr/lib/libpython2.7.so.1.0-gdb.py -> ../bin/python2.7-gdb.py 

は、ここで私は/usr/bin/python実行ファイルのデバッグを開始したときにpython2.7-gdb.pyスクリプトが自動ロードされている方法を示してgdbのセッションです:

(gdb) show auto-load scripts-directory 
List of directories from which to load auto-loaded scripts is $debugdir:$datadir/auto-load. 
(gdb) set debug auto-load 
(gdb) file /usr/bin/python 
Reading symbols from /usr/bin/python...Reading symbols from /usr/lib/debug//usr/bin/python2.7...done. 
auto-load: Attempted file "/usr/lib/debug/usr/bin/python2.7-gdb.gdb" does not exist. 
auto-load: Expanded $-variables to "/usr/lib/debug:/usr/share/gdb/auto-load". 
auto-load: Searching 'set auto-load scripts-directory' path "$debugdir:$datadir/auto-load". 
auto-load: Attempted file "/usr/share/gdb/auto-load/usr/lib/debug/usr/bin/python2.7-gdb.gdb" does not exist. 
auto-load: Attempted file "/usr/lib/debug/usr/bin/python2.7-gdb.py" exists. 
auto-load: Loading python script "/usr/lib/debug/usr/bin/python2.7-gdb.py" by extension for objfile "/usr/lib/debug/usr/bin/python2.7". 
関連する問題