ruanimal / ruanimal.github.io

我的的博客
https://blog.ponder.work
3 stars 0 forks source link

使用gdb调试Python程序 | 逸思杂陈 #78

Open ruanimal opened 3 years ago

ruanimal commented 3 years ago

http://blog.ponder.work/2020/12/29/debug-python-with-gdb/

由于Python解释器是由C语言编写,我们可以使用GDB来调试Python进程,对于程序卡死等异常情况调试比较有帮助。

JasonLou99 commented 2 years ago

请问py程序不需要实现打个断点中断吗?不然他的进程直接结束了,还如何调试

ruanimal commented 2 years ago

@JasonLou99 请问py程序不需要实现打个断点中断吗?不然他的进程直接结束了,还如何调试

不需要在python程序打断点,其实就是用gdb把python解释器当成一个普通的c程序来调试。 一般用于调试正在运行的程序。或者coredump。

JasonLou99 commented 2 years ago

@ruanima

@JasonLou99 请问py程序不需要实现打个断点中断吗?不然他的进程直接结束了,还如何调试

不需要在python程序打断点,其实就是用gdb把python解释器当成一个普通的c程序来调试。 一般用于调试正在运行的程序。或者coredump。 那请问GDB对py文件有提供预先打断点的操作吗,或者逐行按命令执行也可以,类似python -m pdb xx.py这种?

ruanimal commented 2 years ago

可以使用gdb 先加载 python 解释器,打好断点,再执行 gdb 的 run 命令。就可以调试现有脚本文件了。

https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/gdb.html#gdb

image

Sun2018421 commented 2 years ago

我使用gdb发现没办法载入py-list等命令,我在.gdbinit里面也加入了add-auto-load-safe-path /usr/share/gdb/auto-load/usr/bin/

ruanimal commented 2 years ago

@Sun2018421 我使用gdb发现没办法载入py-list等命令,我在.gdbinit里面也加入了add-auto-load-safe-path /usr/share/gdb/auto-load/usr/bin/

因为你没有安装 python3.8-dbg,不然是没有/usr/share/gdb/auto-load/usr/bin/python3.8-gdb.py 文件的,如果是系统python这个脚本会自动加载。

自己安装的python的话,在.gdbinit中加入source /usr/share/gdb/auto-load/usr/bin/python3.8-gdb.py

Sun2018421 commented 2 years ago

@ruanima

@Sun2018421 我使用gdb发现没办法载入py-list等命令,我在.gdbinit里面也加入了add-auto-load-safe-path /usr/share/gdb/auto-load/usr/bin/

因为你没有安装 python3.8-dbg,不然是没有/usr/share/gdb/auto-load/usr/bin/python3.8-gdb.py 文件的,如果是系统python这个脚本会自动加载。

自己安装的python的话,在.gdbinit中加入source /usr/share/gdb/auto-load/usr/bin/python3.8-gdb.py

我是在conda环境使用的python,在~/.gdbinit中加入您说得这个后可以找到py-list了,谢谢您

Jesse3692 commented 2 years ago

我这里是不行的

(gdb) py-list
Unable to open fib.py: [Errno 2] No such file or directory: b'fib.py'
Jesse3692 commented 2 years ago

环境配置

ruanimal commented 2 years ago

看起来是工作路径不对,在fib.py文件所在路径启动gdb

---原始邮件--- 发件人: "Jesse @.> 发送时间: 2021年12月12日(周日) 晚上9:56 收件人: @.>; 抄送: @.**@.>; 主题: Re: [ruanima/ruanima.github.io] 使用gdb调试Python程序 | 逸思杂陈 (#78)

我这里是不行的 (gdb) py-list Unable to open fib.py: [Errno 2] No such file or directory: b'fib.py'

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.