python中gdb调试工具的使用
1 安装gdb工具和python扩展
sudo apt-get install gdb python3.7-dbg
注意: 不安装python3.7-dbg只安装gdb也可使用, 只是无法用python 工具查看python的调用栈, 只能查看到C的调用栈。 python3.7-dbg的安装包比较新, 国内镜像源上一般找不到, 需要添加使用ubuntu源, 在source.list中添加deb http://cz.archive.ubuntu.com/ubuntu bionic-updates main universe即可。
参考链接: https://packages.ubuntu.com/bionic-updates/i386/python3.7-dbg/download
2 以gdb模式运行python程序
gdb -ex r --args python3 xxx.py 在出错的地方程序会自动停下来, 进入gdb调试模式。 使用py-bt可以看到当前程序的python调用栈, 定位出错的原因。
可能会出现安装了python3.7-dbg运行py-bt出现命令找不到的情况, 此时可以根据实际路径手动加载相应文件,如下示例所示:
(gdb) py-bt
Undefined command: "py-bt". Try "help".
(gdb) source /usr/share/gdb/auto-load/usr/bin/python3.7-gdb.py
(gdb) py-bt
Unable to locate python frame
(gdb)
1 https://blog.alswl.com/2013/11/python-gdb/
2 https://stackoverflow.com/questions/41160447/cant-enable-py-bt-for-gdb
gdb是我们在Linux环境下代码调试工具,gdb功能十分强大,下面让我们来了解使用gdb调试工具。 目录 gdb的使用 gdb常用参数 gdb的使用 首先需要在程序进行编译时利用 gcc -g命令 生成调试表。 然后进入 gdb out 就可以调试程序了。 使用gdb查看段错误,使用gdb可以直接查看段错误,只需进入gdb后run即可。 gdb常用参数 b-break 设置断点 l-list 查...
下载gdb源码 编译安装gdb调试工具 安装关联文件 解压文件 创建文件夹(在gdb目录下) 配置(切换到/gdb/build目录下)。如果配置错误,直接删除build文件夹,再次创建文件夹,重新配置。 编译(在/gdb/build目录下执行) 安装 (在/gdb/build目录下执行)...
文章目录 1:进入gdb调试 2:gdb常用命令 3:设置断点进行调试 4:其它指令 5:寻找段错误 6:set args 7:条件断点 8:查看变量 9:跟踪变量 1:进入gdb调试 -g :使用该参数编译可以执行文件,得到调试表 2:gdb常用命令 命令 简写 作用 help h 按模块列出命令类 help class 查看某一类型的具体命令 list l 查看代码,可跟行号和函数名,方便设置...
GDB: a debug tool by GUN -O 关掉编译器的优化选项 -g 打开调试选项 必须要有的,把可执行文件中加入源代码信息 -Wall 再不影响程序行为的情况下选项打开所有warning 命令 gdb 可执行程序 quit 查看当前代码 list/l 一次只能看十行 list 20 显示第20行前后10行的信息 list 函数名 设置显示行数 show list/listsize ...
gdb 调试工具使用大全 一、常用命令 命令 命令缩写 命令说明 list l 显示多行源代码 break fun b fun 设置断点 break N b N 在第n行打断点 break file.c:N b file.c:N 在当前源文件file.c的第N行设置断点 break classA::fun b classA::fun 在classA的fun函数处设置断点 break if b if...
技术交流QQ群:1027579432,欢迎你的加入! 1.gdb调试 gcc a.c b.c c.c -o app:无法进行gbd调试 gcc a.c b.c c.c -o app -g:可以进行gdb调试 -g:会保留函数名和变量名 2.启动gdb 启动方法:gdb 可执行程序的名字,例如gbd app 给程序传参:set args xxx xxx,如下例所示: 3.查看代码:list 4.断点...
Linux 第一章 gdb安装使用 文章目录 Linux 前言 一、gdb下载? 二、安装 1.解压 2.配置&安装 前言 Linux开发绕不过问题定位工具,当程序运行出现异常,产生core文件的时候,gdb是个不错的调试工具,不说了直接上手 一、gdb下载? 废话不多说,直接下载,这里提供一个下载连接-gdb下载 ,我这里下载的是gdb-9.2.tar.gz 二、安装 1.解压 tar ...
程序调试的基本思想是“分析现象->假设错误原因->产生新的现象去验证假设”这样一个循环过程,根据现象如何假设错误原因,以及如何设计新的现象去验证假设,需要非常严密的分析和思考。程序中除了一目了然的Bug之外都需要一定的调试手段来分析到底错在哪,到目前为止自己使用过的调试手段只有一种: 根据程序执行时的出错现象假设错误原因,然后在代码中适当的位置插入printf(...
HashSet实现 Set<E>接口,所以HashSet保证元素唯一性的做法与Set的做法一致,下面用HashSet为例子来说明Set集合是如何确保元素的唯一性的。 输出的结果为:[1, 2, 3] 从上面这段代码可以看到,这里往Integer类型的HashSet里面添加了四个值,其中两个值是相同的,而这个相同的值只有一个成功的添加了进去。不难发现,HashSe...
好记性不如赖笔头…… 抽象装饰者模式比之装饰模式多了更大的扩展空间, 装饰模式在IO中大量使用。...