2018年政务公开与网站建设总结,我局在网站建设方面,温州网站建设备案,南和信息港1、gdb和pdb分别是什么#xff1f;
1.1、gdb
GDB#xff08;GNU Debugger#xff09;是一个功能强大的命令行调试工具#xff0c;由GNU项目开发#xff0c;用于调试C、C等编程语言的程序。它在多个操作系统中都可以使用#xff0c;包括Linux、MacOS和Windows#xff0…1、gdb和pdb分别是什么
1.1、gdb
GDBGNU Debugger是一个功能强大的命令行调试工具由GNU项目开发用于调试C、C等编程语言的程序。它在多个操作系统中都可以使用包括Linux、MacOS和Windows通过MinGW或Cygwin。GDB提供了一系列命令和功能使得开发者能够在程序执行过程中跟踪、检查和修改程序的状态。这可以帮助开发者诊断和解决程序中的问题。
1.2、pdb
Pdb是Python的内置调试工具它是一个交互式的源代码调试器可以用于调试Python程序。它提供了一个命令行界面让开发者能够在程序执行过程中跟踪、检查和修改变量的值以及设置断点、单步执行代码等操作。Pdb的使用非常灵活可以在程序运行时手动介入也可以在程序出现异常时自动进入调试模式。它还支持多线程和远程调试等功能因此在Python开发中得到了广泛的应用。pdb是Python开发中非常有用的调试工具它可以帮助开发者快速定位和解决问题。
2、安装方式
本部分分别列举在绝大多数情况下在红帽系和debian系Linux的安装方式以下方式并不代表所有的Linux都适用如果以下安装方式不适用可以考虑源码编译安装
2.1、安装gdb
红帽系Linuxyum install gdb debian系Linuxapt install gdb
2.2、安装pdb
跟随Python基础环境自带无需安装
3、gdb与pdb命令执行差异对比
gdbpdbgdb C/C编译后生成的运行文件名python3 -m pdb Python脚本文件名
4、gdb与pdb常用命令参数
4.1、gdb
run或r开始调试代码并运行到第一个断点处所以我们在开始调试前需要设置断点
n运行到下一行代码
s若当前代码行为调用一个函数则进入函数中
b func_name/num在某个函数或者某一行打上断点
break info把所有的断点信息打出来
p name把某个变量的值打出来若全局变量和局部变量存在相同的变量则根据当前作用域打印对应变量
set name num在不改变源程序的情况下改变某个变量的值
c在已经run的情况下直接跳转到下一个断点处
set args传参进行相应的调试
info break查看所有的断点4.2、pdb
p param打印变量或者直接使用变量名
n执行下一行,不进入函数体
s进入函数体
r执行到当前函数结束
a在函数中时打印函数的参数和参数的值
c继续执行至下一个断点
q退出调试
l 查看当前位置前后11行代码
ll查看当前函数的所有代码
w打印堆栈信息最新的帧在最底部
enter重复上一条命令
b显示目前所有断点
b linenum在指定行设置断点
b filename:linenum在指定文件的指定行设置断点
cl linenum清楚指定断点
cl清除所有断点5、gdb和pdb工具的使用示例
5.1、gdb使用示例
C示例代码如下
#include iostream
using namespace std;
class testFunction{
public:testFunction(){cout 以下是一个循环测试! endl;for(int i 0;i 10;i){cout 这是第 i 次循环 endl;};};void function1(){cout 这是function函数 endl;};
};
int main(int argc, char * argv[]){cout 以下是上述测试类的实例化 endl;testFunction tF;tF.function1();cout 以下是gdb传参测试结果 endl;for (int i 0; i argc; i){cout 参数值 argv[i] endl;};return 0;
};【注使用g编译C代码或者使用gcc编译C代码时需要在编译命令行中带-g参数以允许通过gdb调试】 5.2、Python使用示例
Python代码如下
import sysclass testFunction(object):def __init__(self):print(这是一个循环测试!)for i in range(0, 10):print(这是第 str(i) 次循环)def function1(self):print(这是function函数)if __name__ __main__:print(以下是上述测试类的实例化)tF testFunction()tF.function1()print(以下是pdb传参测试结果)for i in range(0,len(sys.argv)):print(参数值 sys.argv[i])6、其他事项
本文仅对gdb和pdb的常用参数进行举例gdb和pdb的用法远不局限于本文具体可根据实际的使用需求查阅相关文档。
相关文章: