Apache arrow顶级项目调试

Apache arrow顶级项目调试

arrow官方从7.x版本开始提供了一个gdb工具,叫做gdb_arrow.py,可以在仓库里面下载下来。

调试原理可以阅读之前写的文章:

玩转C++调试之Python的GDB库增强

使用办法非常简单,直接:

source /code/arrow/cpp/gdb_arrow.py

如果在gdb里面source没报错,那么恭喜你加载成功。

在随后的print arrow的内部结构时,便可以直接以可读的形式展示出来了。

当然,还可能非常不幸,会报错,各种语法错误,下面来简单说一下解决办法。

例如:

File "/code/arrow/cpp/gdb_arrow.py", line 60f'from GDB\'s response:\n"""{s}"""')^
SyntaxError: invalid syntax

gdb_arrow.py脚本只支持python3以上版本,如果是python2自然就出错了,例如:上面的语法错误。

在gdb里面可以检查一下自己的python脚本:

(gdb) py
>import sys
>print(sys.version)
>end
3.8.15 (default, Mar  9 2023, 21:22:48) 
[GCC 10.2.1 20210130 (Red Hat 10.2.1-11)]

可以看到输出了python3,那么到这里可以验证python版本没问题,一般来说就是可以source成功的,我这边一开始这样查看出来的版本是python2,自然就source挂了,最后通过源码安装gdb方式,安装了一个比较新的版本就没问题了。

下面来看看使用脚本与不使用脚本调试的显示情况吧。

  • 默认调试

(gdb) p *schema
$2 = (std::__shared_ptr_access<arrow::Schema, (__gnu_cxx::_Lock_policy)2, false, false>::element_type &) @0x5a2dd0: {<arrow::detail::Fingerprintable> = {_vptr.Fingerprintable = 0x7ffff786fe70 <vtable for arrow::Schema+16>, fingerprint_ = {_M_b = {_M_p = 0x0}}, metadata_fingerprint_ = {_M_b = {_M_p = 0x0}}}, <arrow::util::EqualityComparable<arrow::Schema>> = {<No data fields>}, <arrow::util::ToStringOstreamable<arrow::Schema>> = {<No data fields>}, impl_ = {_M_t = {<std::__uniq_ptr_impl<arrow::Schema::Impl, std::default_delete<arrow::Schema::Impl> >> = {_M_t = {<std::_Tuple_impl<0, arrow::Schema::Impl*, std::default_delete<arrow::Schema::Impl> >> = {<std::_Tuple_impl<1, std::default_delete<arrow::Schema::Impl> >> = {<std::_Head_base<1, std::default_delete<arrow::Schema::Impl>, true>> = {<std::default_delete<arrow::Schema::Impl>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Head_base<0, arrow::Schema::Impl*, false>> = {_M_head_impl = 0x5a2790}, <No data fields>}, <No data fields>}}, <No data fields>}}}
  • 脚本调试

(gdb) p *schema
$3 = (std::__shared_ptr_access<arrow::Schema, (__gnu_cxx::_Lock_policy)2, false, false>::element_type &) @0x5a2dd0: arrow::Schema with 3 fields = {["fd0"] = arrow::int32(), ["fd1"] = arrow::uint8(), ["fd2"] = arrow::int16()}

再试试batch

(gdb) p *b1
$4 = (std::__shared_ptr_access<arrow::RecordBatch, (__gnu_cxx::_Lock_policy)2, false, false>::element_type &) @0x5a2a90: arrow::RecordBatch with 3 columns, 10 rows = {["fd0"] = arrow::ArrayData of type arrow::int32(), length 10, offset 0, null count 0 = {440260352, 1427803791, 1601077171, -300415297, 1521318915, -1491074194, -1019370501, -876914235, 791665453, -229504221}, ["fd1"] = arrow::ArrayData of type arrow::uint8(), length 10, offset 0, null count 0 = {0, 215, 61, 26, 143, 142, 26, 85, 179, 127}, ["fd2"] = arrow::ArrayData of type arrow::int16(), length 10, offset 0, null count 0 = {-10496, 6717, -29041, 21786, 32691, 24430, 1727, -4584, 31747, 23213}}

可以看到的是非常的直观!

以后调试arrow又更加方便了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/66811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes技术--k8s核心技术集群的安全机制RBAC

1.引入 我们在访问k8s的集群的时候,需要经过一下几个步骤: -a:认证 -1).传输安全:对外是不暴露端口:8080,只能够在内部访问,对外使用的是6443端口。 -2).客户端认证的常用几种方式: -https证书 基于ca证书 -https token认证 通过token识别用户 -https <

springboot web开发登录拦截器

在SpringBoot中我们可以使用HandlerInterceptorAdapter这个适配器来实现自己的拦截器。这样就可以拦截所有的请求并做相应的处理。 应用场景 日志记录&#xff0c;可以记录请求信息的日志&#xff0c;以便进行信息监控、信息统计等。权限检查&#xff1a;如登陆检测&#xff…

SQL sever中用户管理

目录 一、用户管理常见方法 二、用户管理方法示例 2.1. 创建登录账户&#xff1a; 2.1.1 检查是否创建账户成功&#xff1a; 2.2. 创建数据库用户&#xff1a; 2.2.1检查用户是否创建成功&#xff1a; 2.3. 授予权限&#xff1a; 2.3.1授予 SELECT、INSERT 和 U…

原型模式:复制对象的技巧

欢迎来到设计模式系列的第六篇文章&#xff01;在前面的几篇文章中&#xff0c;我们已经学习了一些常见的设计模式&#xff0c;今天我们将继续探讨另一个重要的设计模式——原型模式。 原型模式简介 原型模式是一种创建型设计模式&#xff0c;它主要用于复制对象。原型模式通…

【教程】PyTorch Timer计时器

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] OpenCV的Timer计时器可以看这篇&#xff1a;Python Timer和TimerFPS计时工具类 Timer作用说明&#xff1a;统计某一段代码的运行耗时。 直接上代码&#xff0c;开箱即用。 import time import torch import os …

springboot设置日志输出级别

一、日志等级 trace&#xff1a;最低等级 debug&#xff1a;调试用&#xff0c;通常用于跟踪程序进展 info: 记录用&#xff0c;通常用于记录程序行为 warn&#xff1a;警告 error&#xff1a;错误 fatal&#xff1a;灾难性错误&#xff0c;最高等级 配置application.yml 实现…

L1-056 猜数字(Python实现) 测试点全过

前言&#xff1a; {\color{Blue}前言&#xff1a;} 前言&#xff1a; 本系列题使用的是&#xff0c;“PTA中的团体程序设计天梯赛——练习集”的题库&#xff0c;难度有L1、L2、L3三个等级&#xff0c;分别对应团体程序设计天梯赛的三个难度。更新取决于题目的难度&#xff0c;…

什么是BEM命名规范(Block-Element-Modifier Notation)?它有什么优势?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ BEM命名规范&#xff08;Block-Element-Modifier Notation&#xff09;⭐ BEM命名结构⭐ 优势⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎…

如何解决分库分表主键问题?

分析&回答 从问题角度出发&#xff1a;我们需要一个全局唯一的 id 来支持&#xff0c;排序问题等。这都是你实际生产环境中必须考虑的问题。可以先看下我们之前的文章分布式系统唯一ID如何生成&#xff1f; 雪花算法和雪花算法的变种是大家常用的 喵呜面试助手&#xff1…

春秋云镜 CVE-2018-1273

春秋云镜 CVE-2018-1273 Spring-data-commons 远程命令执行漏洞 靶标介绍 Spring Data是一个用于简化数据库访问&#xff0c;并支持云服务的开源框架&#xff0c;Spring Data Commons是Spring Data下所有子项目共享的基础框架。Spring Data Commons 在2.0.5及以前版本中&…

【算法】滑动窗口

滑动窗口应用场景 关键词&#xff1a; 满足xxx条件&#xff08;计算结果&#xff0c;出现次数&#xff0c;同时包含&#xff09; 最长/最短 子串/子数组/子序列 例如&#xff1a;长度最小的子数组 滑动窗使用思路&#xff08;寻找最长&#xff09; 核心&#xff1a;左右双指…

git大文件推送报错

报错信息 不多掰扯&#xff0c;直接上报错信息和截图 Delta compression using up to 8 threadsRPC failde; HTTP 413 curl 22 The requested URL returned error: 413 Request Entity Too Large从以上的报错信息不难看出推送仓库的时候&#xff0c;请求体过大&#xff0c;为…

第五讲Java面向对象——类及类的成员

前言 前面几讲,我们讲解了java的基础知识,也写了很多代码,有没有发现,每次编写代码前都会新建一个类,并且开头是public class修饰。可能有些同学不知道什么是类,以及前面我们提到方法。那么本讲,就要开始深入了解他们。 在开始讲解,我们将先了解一下编程的思想,面向对…

八、SpringBoot集成Kafka

目录 一、添加依赖二、SpringBoot 生产者三、SpringBoot 消费者 一、添加依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><depend…

8.Redis-set

Set 常用命令saddsmemberssismemberscardspopsmovesrem集合间操作sinter 交集sinterstoresunion 并集sunionstoresdiff 差集sdiffstore 命令总结 内部编码应用场景使用 set来保存用户的“标签” set(集合)就是把一些有关联的数据放刀一起。 它与list的区别如下&#xff1a; 集合…

zookeeper 集群

zookeeper 集群 1、zookeeper 集群说明 initLimit 是Zookeeper用它来限定集群中的Zookeeper服务器连接到Leader的时限 syncLimit 限制了follower服务器与leader服务器之间请求和应答之间的时限 服务器名称与地址&#xff1a;集群信息&#xff08;服务器编号&#xff0c;服务器…

score_inverse_problems运行环境,pycharm重新安装,jax,jaxlib的GPU版本安装-230831

尝试运行https://github.com/yang-song/score_inverse_problems pycharm2019不支持python3.10&#xff0c;其实后来我用来3.8…… pycharm2022.3.3的安装&#xff0c;涉及激活&#xff08;淘宝5元&#xff09;&#xff0c;搜狗拼音输入&#xff08;shift不能切换输入法&#x…

Blender界面学习03 原点、鼠标所在位置的缩放与旋转

物体的坐标原点可以移动 放大缩小时默认是屏幕中央&#xff0c;修改为鼠标在哪儿就缩放哪儿 默认旋转时围绕屏幕的中心 可以修改为指定对象旋转

【网络教程】群晖轻松设置钉钉机器人使用Webhook发送通知消息,分分钟搞定!

文章目录 准备设置相关链接准备 演示环境:群晖DSM7.2(其他版本操作雷同)需要提前准备好你的钉钉机器人webhook链接,如果你还不会设置/获取,请点击 参考这篇文章 或自行某度设置 打开群晖,进入控制面板 —> 通知设置 —> Webhooks,如下图 然后点击新增,提供商选择…

使用栈检查括号的合法性 C 实现

使用栈检查括号的合法性 思路讲解&#xff1a;首先从数组数组0下标开始&#xff0c;如果是左括号直接无脑压入栈&#xff0c;直到出现右括号开始判断合法与否。遇到右括号分两种情况&#xff0c;第一种是空栈的情况&#xff0c;也就是说我们第一个字符就是右括号&#xff0c;那…