如何编译可以在Windows下运行的带有Python支持的ARM Linux GDB

Python024

如何编译可以在Windows下运行的带有Python支持的ARM Linux GDB,第1张

配置一下就行了:

./configure --host=i586-mingw32msvc --target=arm-linux-gnueabihf --with-libexpat-prefix=/home/cdu/gdb-arm/expat-2.1.0-1 --without-libunwind-ia64 --without-libunwind-ia64 --without-lzma --with-python=/home/cdu/gdb-arm/python-2.7.4-mingw32 --without-guile --without-babeltrace --with-sysroot=/opt/sysroot-arm

然后就可以:make

make DESTDIR=... install

1.安装gdb 最好是gdb7.7版本

2.获取python源代码

3.编译python

* ./configure --prefix=/home/admin/python

* make "CFLAGS=-g -fno-inline -fno-strict-aliasing"

* make install

4.复制python源代码中的Tools//gdb/libpython.py到目录 ~/.gdbinit

5.修改.gdbinit中的代码

<<<<if $pc >PyEval_EvalFrameEx &&$pc <PyEval_EvalCodeEx

修改为

>>>>if $pc >PyEval_EvalFrameEx &&$pc <PyEval_EvalCodeEx &&$fp != 0

6.启动gdb ./gdb python

可用命令有 ./gdb python --pid=${pid}

./gdb python --core=${core_file}

7.引入libpython.py

(gdb) python

>import sys

>sys.path.insert(0,'/home/admin/')

>import libpython

>end

(gdb)

8.然后可运行命令py-bt,py-list,pystack,pystackv

注:

1.libpython.py为python debug扩展

2.gdbinit中包含扩展命令,pystack即在这里边定义

3.若运行pystack时出现错误 No symbol "co" in current context.

则表示未执行以下两个步骤:

make "CFLAGS=-g -fno-inline -fno-strict-aliasing"

修改.gdbinit中的代码(修改内容见上边的步骤5)

1)确保gdb版本>=7.0

2)安装python-debuginfo包。

如:python-debuginfo-2.6.6-29.el6_2.2.x86_64.rpm,这个版本号一定要跟你所用的python版本一致(可以rpm -qa|grep python查看你安装的python的详细版本号)。

Centos下找包地址为:http://debuginfo.centos.org/6/x86_64/。

3)就可以运行命令

#gdb python pid

进行调试。

linux下gdb如何调试python程序

(1)假设要debug的进程号为1000,运行如下命令:

$ gdb -p 1000

使用此命令即可使gdb附加到进程。

(2)载入libpython脚本

如果你的gdb是redhat或fedora等厂商修改过的,会有--python选项,使用此选项即可指定gdb启动时载入的Python扩展脚本(此脚本是扩展gdb的,不是我们需要debug的脚本)。

$ gdb --python /path/to/libpython .py -p 1000

如果安装的是GNU的gdb,就需要打开gdb后手动载入libpython.py脚本

(gdb) python

>import sys

>sys.path.insert(0, '/path/to/libpython.py' )

>import libpython

>end

(gdb)

这时就可以使用py-bt命令打印当前线程的Python traceback了。libpython还提供很多命令,例如py-print打印变量,py-locals打印所有本地变量等等,详细可打开libpython.py查看。