我已经在CentOS 6.5机器上下载并编译了Python 3.5.它没有问题.问题是我必须用来gdb调试在我的python程序执行期间涉及cpu过度使用的细微错误.
从关于gdb扩展的官方Python文档中,他们说唯一要做的就是添加
add-auto-load-safe-path /path/to/dir/with/python-gdb.py
到~/.gdbinit.我测试了它
gdb --args /path/to/python3.5/binary
(gdb) py-bt
Run Code Online (Sandbox Code Playgroud)
但我明白了
Undefined command: "py-bt"
Run Code Online (Sandbox Code Playgroud)
gdb 是版本7.2并启用了python支持.
Ale*_*der 13
基于博客文章通过使用gdb调试CPython进程
解决问题的另一种方法是源python3.5-gdb.py文件.运行命令info auto-load检查文件是否已加载(如果是),如果不加载 - 手动加载:(
source /usr/share/gdb/auto-load/usr/bin/python3.5-gdb.py
!路径可能不同).
然后py-bt应该工作!
编辑:改变py版本
gdb 通过查看以脚本目录搜索路径中的目录为根的目录树来自动加载 gdb CLI(或 Python 或 Scheme)脚本。对于加载的每个可执行文件或共享对象,gdb 都会查找名为objfile-gdb.gdb(objfile-gdb.py或objfile-gdb.scm) 的脚本。
自动加载 gdb 扩展的一种方法python是将python-gdb.py您下载的文件放置在脚本目录路径中的目录之一下。例如,python2.7-dbgUbuntu 上的软件包会安装以下文件:
-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
Run Code Online (Sandbox Code Playgroud)
这是一个 gdb 会话,显示了python2.7-gdb.py当我开始调试可执行文件时如何自动加载脚本/usr/bin/python:
(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".
Run Code Online (Sandbox Code Playgroud)
找到了!您必须添加/PATH_TO_PYTHON_SRC/Tools/gdb到PYTHONPATH,那么gdb你应该能够执行:
python import libpython
Run Code Online (Sandbox Code Playgroud)
资料来源:https://sumitkgaur.wordpress.com/2014/05/13/python-debugging/
| 归档时间: |
|
| 查看次数: |
8536 次 |
| 最近记录: |