pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。
Python多线程的时候调试的简单方法(thread.run)
https://blog.csdn.net/york1996/article/details/89305847
1 | for thread in threads: |
OpenStack断点调试方法总结(重定向stdin,stdout实现远程调试)
https://zhuanlan.zhihu.com/p/63898351
通过这种方式可以实现远程调试,不过我们不用每次都写那么长一段代码,社区已经有实现了,只需要使用rpdb替换pdb即可进行远程调试,原理与之类似,
python 多线程断点调试(管道方法)
https://blog.csdn.net/DeathlessDogface/article/details/84074461
插入断点
1 | import pdb |
创建管道
1 | mkfifo /root/p_in /root/p_out |
gdb调试多进程和多线程命令(设置follow-fork-mode)
https://blog.csdn.net/pbymw8iwm/article/details/7876797
设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可。
follow-fork-mode detach-on-fork 说明
1 | parent on 只调试主进程(GDB默认) |
设置方法:set follow-fork-mode [parent|child] set detach-on-fork [on|off]
查询正在调试的进程:info inferiors
切换调试的进程: inferior
查询线程:info threads
切换调试线程:thread
Linux多进程和多线程的一次gdb调试实例(参考上面的)
https://typecodes.com/cseries/multilprocessthreadgdb.html
follow-fork-mode detach-on-fork 说明
1 | parent on GDB默认的调试模式:只调试主进程 |
查看gdb默认的参数设置:
1 | (gdb) show follow-fork-mode |
线程的查看以及利用gdb调试多线程(详细,截图中标示含义)
https://blog.csdn.net/zhangye3017/article/details/80382496
pstree -p xx
pstack xx
gdb attach 主线程ID
常用命令
1 | 1.查看进程:info inferiors |
执行线程2的函数,指行完毕继续运行到断点处
1 | 1. 继续使某一线程运行:thread apply 1-n(第几个线程) n |
只运行当前线程
1 | 1. 设置:set scheduler-locking on |
所有线程并发执行
1 | 1. 设置:set scheduler-locking off |
GDB多线程多进程调试(操作和命令对应)
https://cloud.tencent.com/developer/article/1142947
thread thread-id实现不同线程之间的切换
info threads查询存在的线程
thread apply [thread-id-list] [all] args在一系列线程上执行命令
线程中设置指定的断点
set print thread-events控制打印线程启动或结束是的信息
set scheduler-locking off|on|step在使用step或是continue进行调试的时候,其他可能也会并行的执行,如何才能够只让被调试的线程执行呢?该命令工具可以达到这个效果。
off:不锁定任何线程,也就是所有的线程都执行,这是默认值。
on:只有当前被调试的线程能够执行。
step:阻止其他线程在当前线程单步调试时,抢占当前线程。只有当next、continue、util以及finish的时候,其他线程才会获得重新运行的机会。
使用thread apply来让一个或是多个线程执行指定的命令。例如让所有的线程打印调用栈信息。
1 | (gdb) thread apply all bt |
参考
pyrasite(4年前的老项目,久不更新)
线程的查看以及利用gdb调试多线程(同上,但多了“安装的pstack有问题,自实现”,但pstack依然乱码):https://www.cnblogs.com/fengtai/p/12181907.html
python实战系列
python实战02异常报错
python实战04常见坑
python实战05文件路径(找不到文件)
python实战06多线程bug处理记录
python实战07调试pdb
python实战08多线程性能分析(装饰器和chromeTrace)
python实战10pytest测试和覆盖率