当前位置: 首页 > news >正文

Linux下C/C++的gdb工具与Python的pdb工具常见用法之对比

1、gdb和pdb分别是什么?

1.1、gdb

GDB(GNU 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

红帽系Linux:yum install gdb
debian系Linux:apt install gdb

2.2、安装pdb

跟随Python基础环境自带,无需安装

3、gdb与pdb命令执行差异对比

gdbpdb
gdb <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的用法远不局限于本文,具体可根据实际的使用需求查阅相关文档。

相关文章:

Linux下C/C++的gdb工具与Python的pdb工具常见用法之对比

1、gdb和pdb分别是什么&#xff1f; 1.1、gdb GDB&#xff08;GNU Debugger&#xff09;是一个功能强大的命令行调试工具&#xff0c;由GNU项目开发&#xff0c;用于调试C、C等编程语言的程序。它在多个操作系统中都可以使用&#xff0c;包括Linux、MacOS和Windows&#xff0…...

从入门到专业:探索Python中的判断与循环技巧!

文章目录 判断语句布尔类型和比较运算符if语句的基本格式练习案例&#xff1a;成年人判断if else语句if elif else语句判断语句的嵌套案例&#xff1a;猜数字 循环语句while循环的基础语法while循环的基础案例while循环的嵌套应用补充&#xff1a;print输出不换行&\tfor循环…...

mqtt、tcp、http的区别

文章目录 一、MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;1、类型2、用途 二、TCP&#xff08;Transmission Control Protocol&#xff09;1、类型2、用途 三、HTTP&#xff08;Hypertext Transfer Protocol&#xff09;1、类型2、用途 四、主要区别1、类…...

边写代码边学习之RNN

1. 什么是 RNN 循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一种以序列数据为输入来进行建模的深度学习模型&#xff0c;它是 NLP 中最常用的模型。其结构如下图&#xff1a; x是输入&#xff0c;h是隐层单元&#xff0c;o为输出&#xff…...

在linux调试进程PID的方法

当我们谈论调试 PID&#xff08;进程标识符&#xff09;时&#xff0c;我们通常是指诊断和解决与操作系统中的特定进程相关的问题。有许多工具和方法可用于调试 PID&#xff0c;以下是一些常见的方法&#xff1a; 1. 使用ps命令 ps命令是最基本的调试工具&#xff0c;用于查看…...

【并发编程】线程安全的栈容器

std::stack容器的接口包括 empty(), size(), top(), push(), pop()等。 问题 其原接口在多线程的情况下&#xff0c;会持续很多问题。 例如&#xff0c;在std::stack容器的接口中&#xff0c;在多线程下应用时&#xff0c;empty()和size()的结果是不可信的。因为尽管在某线程…...

ES嵌套查询和普通查询的高亮显示区别

在 Elasticsearch 中&#xff0c;高亮显示是一种强大的搜索结果可视化工具&#xff0c;它可以帮助我们快速识别匹配的关键字或短语。在ES中&#xff0c;我们可以使用两种不同的查询方式来实现高亮显示&#xff1a;嵌套查询和普通查询。本文探讨这两种查询方式的高亮显示区别以及…...

Greenplum集群部署

一,安装说明 1.1环境说明 *名称**版本*操作系统CentOS 7.6 64bitgreenplumgreenplum-db-6.10.1-rhel7-x86_64.rpm1.2集群介绍 IPhostname集群节点10.240.3.244gpmastermaster10.240.3.245gpsegment1segment10.240.3.246gpsegment2segment二,安装环境准备 2.1 修改各节点名称…...

电教智能云数据可视化平台开发电能优化日志实录

电教智能云数据可视化平台开发电脑优化日志实录 一、2K和4K弹窗判断二、电能API对接1.电脑爬虫2.电能分组过滤3.数据可视化渲染4.弹窗 三.数组按顺序输出 一、2K和4K弹窗判断 {* 判断2k和4k弹窗 *}{if $dataScene[scene_standard] eq 0}<a class"menuBtn subMenu"…...

JSX语法基础总结

题记&#xff1a;首先我们要了解一下jsx是什么&#xff0c;跟js有什么区别&#xff0c;其实就是js的语法糖&#xff0c;加上了xml的语法&#xff0c;使得产生虚拟dom更加的方便&#xff0c;简单说一下&#xff0c;xml就是存储数据的格式&#xff0c;想了解xml的话&#xff0c;可…...

socker套接字

1.打印错误信息 2.socketaddr_in结构体 结构体&#xff1a; &#xff08;部分库代码&#xff09; (宏中的##) 3.manual TCP: SOCK_STREAM &#xff1a; 提供有序地&#xff0c;可靠的&#xff0c;全双工的&#xff0c;基于连接的流式服务 UDP: 面向数据报...

No111.精选前端面试题,享受每天的挑战和学习

文章目录 map和foreach的区别在组件中如何获取vuex的action对象中的属性怎么去获取封装在vuex的某个接口数据有没有抓包过&#xff1f;你如何跟踪某一个特定的请求&#xff1f;比如一个特定的URL&#xff0c;你如何把有关这部分的url数据提取出来&#xff1f;1. 使用网络抓包工…...

【Apollo学习笔记】—— 相机仿真

文章目录 前言相关代码整理 测试实践文件目录包管理BUILD文件以及cyberfile.xml文件源程序BUILD运行结果其他参考CameraOutput channels启动camera驱动启动camera video compression驱动 前言 本文是对Cyber RT的学习记录,文章可能存在不严谨、不完善、有缺漏的部分&#xff0…...

【数据结构】——线性表的相关习题

目录 题型一&#xff08;线性表的存储结构&#xff09;题型二&#xff08;链表的判空&#xff09;题型三&#xff08;单链表的建立&#xff09;题型四&#xff08;顺序表、单链表的插入删除操作&#xff09;题型五&#xff08;双链表的插入删除操作&#xff09;题型六&#xff…...

SpringBoot集成Elasticsearch8.x(8)|(新版本Java API Client的Painless语言脚本script使用)

SpringBoot集成Elasticsearch8.x&#xff08;8&#xff09;|&#xff08;新版本Java API Client的Painless语言脚本script使用&#xff09; 文章目录 SpringBoot集成Elasticsearch8.x&#xff08;8&#xff09;|&#xff08;新版本Java API Client的Painless语言脚本script使用…...

SpringBoot复习:(19)Condition接口和@Conditional注解

Condition接口代码如下&#xff1a; public interface Condition {boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata);}它是一个函数式接口&#xff0c;只有一个方法matches用来表示条件是否满足。matches方法中的ConditionContext类对象context可以…...

K8s中的Controller

Controller的作用 &#xff08;1&#xff09;确保预期的pod副本数量 &#xff08;2&#xff09;无状态应用部署 &#xff08;3&#xff09;有状态应用部署 &#xff08;4&#xff09;确保所有的node运行同一个pod&#xff0c;一次性任务和定时任务 1.无状态和有状态 无状态&…...

【MFC】03.常用复杂控件的使用-笔记

热键&#xff1a; 对话框-类向导&#xff1a;初始化函数中&#xff0c;热键需要在最开始的时候就注册进去&#xff1a; 注册热键&#xff1a; 在这之前&#xff0c;先去定义一个宏&#xff0c;代表你这个快捷键。 参数&#xff1a;窗口句柄&#xff0c;热键编号&#xff08;热…...

Autosar诊断实战系列14-NRC优先级解析

本文框架 前言1. NRC分类2. NRC优先级判断2.1. NRC优先级判断逻辑介绍2.2 NRC测试注意事项前言 在本系列笔者将结合工作中对诊断实战部分的应用经验进一步介绍常用UDS服务的进一步探讨及开发中注意事项, Dem/Dcm/CanTp/Fim模块配置开发及注意事项,诊断与BswM/NvM关联模块的应…...

《向量数据库指南》——腾讯云向量数据库Tencent Cloud VectorDB产品特性,架构和应用场景

腾讯云向量数据库(Tencent Cloud VectorDB)是一款全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据。该数据库支持多种索引类型和相似度计算方法,单索引支持 10 亿级向量规模,可支持百万级 QPS 及毫秒级查询延迟。腾讯云向量数据库不仅能为大模型提…...

像素剧本圣殿步骤详解:Qwen2.5-14B-Instruct注入系统指令定制编剧人格

像素剧本圣殿步骤详解&#xff1a;Qwen2.5-14B-Instruct注入系统指令定制编剧人格 1. 项目概述 像素剧本圣殿&#xff08;Pixel Script Temple&#xff09;是一款基于Qwen2.5-14B-Instruct大模型深度优化的专业剧本创作工具。这个独特的创作环境将先进AI技术与复古像素美学相…...

如何高效构建雷达系统:Python雷达模拟的完整实战指南

如何高效构建雷达系统&#xff1a;Python雷达模拟的完整实战指南 【免费下载链接】radarsimpy Radar Simulator built with Python and C 项目地址: https://gitcode.com/gh_mirrors/ra/radarsimpy RadarSimPy是一个基于Python和C构建的开源雷达模拟器&#xff0c;为雷达…...

NoSleep防休眠工具:让系统持续运行的轻量级解决方案

NoSleep防休眠工具&#xff1a;让系统持续运行的轻量级解决方案 【免费下载链接】NoSleep Lightweight Windows utility to prevent screen locking 项目地址: https://gitcode.com/gh_mirrors/nos/NoSleep 在现代工作环境中&#xff0c;电脑意外休眠常常成为工作流程的…...

经典美剧《暗黑》1-3季4K中英字幕 网盘发送

对《暗黑》任何“烧脑”“神剧”“开挂”的标签都是极其肤浅的论断。 看懂“暗黑”&#xff0c;已然不只是对众多人物关系线的梳理&#xff0c;对单个人物本身时间线的捋顺&#xff0c;它已经站在了哲学或者说神学的山巅尽量地发出凡人能够接受的光波和光谱。 是爱因斯坦相对论…...

seo网络优化如何提高网站的转化率

SEO网络优化如何提高网站的转化率 在当前的互联网时代&#xff0c;网站的流量和转化率是衡量企业在网络上竞争力的重要指标。而搜索引擎优化&#xff08;SEO&#xff09;网络优化作为提高网站流量和转化率的有效手段&#xff0c;其重要性不言而喻。SEO网络优化究竟能如何有效提…...

ai赋能抓取技能:在快马平台让大模型为openclaw规划无碰撞抓取轨迹

最近在做一个机械臂抓取项目时&#xff0c;遇到了一个头疼的问题&#xff1a;如何在复杂环境中规划无碰撞的抓取轨迹。传统方法需要手动调试大量参数&#xff0c;效率很低。后来尝试用AI辅助开发&#xff0c;发现效果出奇地好&#xff0c;今天就来分享一下这个探索过程。 构建测…...

提升嵌入式开发效率:用快马平台一键生成串口通信等常用模块代码

作为一名嵌入式开发者&#xff0c;我经常需要和串口通信打交道。无论是调试信息输出、设备间通信还是固件升级&#xff0c;UART都是最常用的外设之一。但每次新项目都要重新写一遍串口初始化、中断处理这些重复性代码&#xff0c;实在有点浪费时间。最近发现InsCode(快马)平台能…...

实战应用:利用快马平台模拟鸿蒙pc版与手机的笔记跨设备同步功能

最近在研究鸿蒙系统的跨设备协同功能&#xff0c;特别是PC端和手机端之间的数据同步场景。作为一个开发者&#xff0c;我很好奇这种分布式能力在实际项目中如何落地。于是我用InsCode(快马)平台快速搭建了一个模拟原型&#xff0c;下面分享下实现思路和过程。 项目整体设计 这个…...

yz-bijini-cosplay惊艳效果:多光源环境下Cosplay角色面部光影层次还原

yz-bijini-cosplay惊艳效果&#xff1a;多光源环境下Cosplay角色面部光影层次还原 安全声明&#xff1a;本文仅讨论技术实现方案&#xff0c;所有生成内容均为技术演示用途&#xff0c;不涉及任何真人形象或不当内容。 1. 项目概述&#xff1a;专为Cosplay创作打造的AI图像生成…...

Qwen3.5-9B-AWQ-4bit与Claude对比评测:开源与闭源模型的技术选型

Qwen3.5-9B-AWQ-4bit与Claude对比评测&#xff1a;开源与闭源模型的技术选型 1. 评测背景与目标 在AI大模型领域&#xff0c;开源与闭源模型的选择一直是开发者面临的重要决策。本次评测聚焦于两款在开发者社区中备受关注的模型&#xff1a;开源的Qwen3.5-9B-AWQ-4bit和闭源的…...