RUST笔记 FireDBG| Rust 代码调试器

安装https://firedbg.sea-ql.org/blog/2023-12-12-introducing-firedbg/

在这里插入图片描述

更新VSCODE

在这里插入图片描述

在这里插入图片描述

  • sudo dpkg -i code_1.85.2-1705561292_amd64.deb
    在这里插入图片描述在这里插入图片描述

在这里插入图片描述

安装FireDBG binaries

在这里插入图片描述在这里插入图片描述

(base) pdd@pdd-Dell-G15-5511:~$ curl https://raw.githubusercontent.com/SeaQL/FireDBG.for.Rust/main/install.sh -sSf | sh

error: timeout

  • 手动下载install.sh和x86_64-ubuntu22.04.tar.gz,相关的重要代码如下:

  • 下载函数

# This wraps curl or wget. Try curl first, if not installed,
# use wget instead. 
downloader() {
    if check_cmd curl # 检查是否存在 curl 命令
    then _dld=curl
    elif check_cmd wget # 检查是否存在 wget 命令
    then _dld=wget
    else _dld='curl or wget' # to be used in error message of need_cmd
    fi

    #要使用这个函数下载一个文件,可以这样调用:downloader "https://example.com/file.zip" "downloaded_file.zip"
    # 如果传递的第一个参数是 --check,则检查是否存在 _dld(curl 或 wget)命令
    if [ "$1" = --check ]
    then need_cmd "$_dld"
    # 如果 _dld 是 curl,则使用 curl 下载文件
    elif [ "$_dld" = curl ]
    then curl -sSfL "$1" -o "$2"
    # 如果 _dld 是 wget,则使用 wget 下载文件
    elif [ "$_dld" = wget ]
    then wget "$1" -O "$2"
    # 如果 _dld 不是 curl 也不是 wget,输出错误消息
    else err "Unknown downloader"   # should not reach here
    fi
}
  • 函数在代码中的调用downloader "$_url" "$_file"
  • 需要修改的配置
    local _url="https://github.com/SeaQL/FireDBG.for.Rust/releases/download/$_firedbg_version/$_arch.tar.gz"
    local _dir="$(mktemp -d 2>/dev/null || ensure mktemp -d -t FireDBG)" # $(...):这是 Bash 中的命令替换语法,表示将命令的输出结果嵌入到字符串中
    local _file="$_dir/$_arch.tar.gz"
  • 修改成如下
    local _url="https://github.com/SeaQL/FireDBG.for.Rust/releases/download/$_firedbg_version/$_arch.tar.gz"
    local _dir="/home/pdd/myrust/mytemp"  
    # local _file="$_dir/$_arch.tar.gz"
    # downloader "$_url" "$_file
  • 结构如下:
    在这里插入图片描述

安装成功:

  • FireDBG binaries will be installed in ~/.cargo/bin and a debugger self test will be conducted to verify the installation.
$ bash install.sh 
info: downloading FireDBG from `https://github.com/SeaQL/FireDBG.for.Rust/releases/download/1.75.1/x86_64-ubuntu22.04.tar.gz`
info: installing FireDBG binaries to `/home/pdd/.cargo/bin`
info: performing FireDBG self tests
    Updating crates.io index
  Downloaded firedbg-lib v0.1.2
  Downloaded 1 crate (2.2 KB) in 1.35s
     Tracing `firedbg.toml` config file not found, default settings will be applied
     Tracing debugger_self_test = { trace = "full" }
      Parsed 2 source files; re-cached 2 source files
   Compiling firedbg-lib v0.1.2
   Compiling debugger_self_test v1.75.1 (/home/pdd/.cargo/bin/firedbg-lib/debugger-self-test)
    Finished dev [unoptimized + debuginfo] target(s) in 1.02s
     Running `LD_LIBRARY_PATH="/home/pdd/.cargo/bin/firedbg-lib/lib" "/home/pdd/.cargo/bin/firedbg-debugger" "run" "/home/pdd/.cargo/bin/firedbg-lib/debugger-self-test/target/debug/debugger_self_test" "--workspace-root" "/home/pdd/.cargo/bin/firedbg-lib/debugger-self-test" "--output" "/home/pdd/.cargo/bin/firedbg-lib/debugger-self-test/output.firedbg.ss" "--package-name" "debugger_self_test" "--package" "./full"`
Testing call_chain
Testing for_range
Testing hash_map
Testing return_char
Testing return_enum
Testing return_value
Testing return_object
Testing return_option
Testing return_result
Testing return_struct
Testing return_pointer
Testing return_ref_mut
Testing fn_return
info: completed FireDBG self tests

基础使用

  • git clone https://github.com/SeaQL/FireDBG.Rust.Testbench.git

在这里插入图片描述

FireDBG,启动!

在这里插入图片描述在这里插入图片描述

运行Target

在这里插入图片描述

生成调用树Call Tree

在这里插入图片描述

点击可查看变量值和相关代码

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[极客大挑战 2019]PHP1

知识点: 1.序列化的属性个数大于实际属性个数可以绕过_wakeup() 详见[CTF]PHP反序列化总结_ctf php反序列化-CSDN博客 2.private属性类名和属性名前都会有多一个NULL,phpstorm运行结果可以显示出来,但是复制出去会变成空格,要手动…

【Single Cell Genomics】Part2 Deep representation learning (form theislab)

文章目录 7 Deep representation learning in single cell genomics7.1 scanpy7.2 DCA7.3 scGen: predicting single-cell perturbation effects7.4 Human cell atlas 来自Manolis Kellis教授(MIT计算生物学主任)的课 YouTube:Single Cell Ge…

关于达梦认证DCA DCP,TIDB认证PCTA PCTP考试那点事儿

文章最后有彩蛋,一定要看到最后... 一、正确的道路上遇到正确的你 伴随中国数据库领域的快速技术进步,国内数据库生态蓬勃发展,并不断涌现出极具创新力的产品,推动了数据库应用的遍地开花。截至2024年1月,墨天轮数据社…

SWMM模型INP解析

.INP文件解析 [OPTIONS]:SWMM软件运行前需要设置的参数 [RAINGAGES]雨水节点,核心设置雨水时间序列,可为INP内部数据也可为外部txt数据,TIMESERIES对应【TIMESERIES】模块,TS_1为时间序列名称 [TIMESERIES]&#xff0…

红黑树底层实现

什么是红黑树 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red(红)或Black(黑),它是一种比AVL树在使用上更优秀的树,通过对任何一条从根…

微信小程序开发position等于static、relative、absolute、fixed、stricky时元素显示详细介绍

No Position 不设置position时显示,以红色元素做测试: Static 元素根据界面正常流进行定位。top、right、bottom、left 和 z-index 属性不起作用。这是默认值。 红色元素设置position: static,显示如下: Relative 元素根据界面正常流进行定位。以元素当前位置为基准,根…

g2o--ba代码解析

概要 g2o是常用的图优化理论c库,其自带了很多example讲解如何使用该库文件,本文分析其中ba的示例代码。 所谓的图优化,就是把一个常规的优化问题,以图(Graph)的形式来表述。 在图中,以顶点表…

单片机介绍

本文为博主 日月同辉,与我共生,csdn原创首发。希望看完后能对你有所帮助,不足之处请指正!一起交流学习,共同进步! > 发布人:日月同辉,与我共生_单片机-CSDN博客 > 欢迎你为独创博主日月同…

Spring Boot 模块工程(通过 Maven Archetype)建立

前言 看到我身边的朋友反馈说,IDEA 新建项目时,如果通过 Spring Initializr 来创建 Spring Boot , 已经无法选择 Java 8 版本,通过上小节的教程,不知道该如何创建 Spring Boot 模块工程。如下图所示: 一.IDEA 搭建 …

记录一下uniapp 集成腾讯im特别卡(已解决)

uniapp的项目运行在微信小程序 , 安卓 , ios手机三端 , 之前这个项目集成过im,不过版本太老了,0.x的版本, 现在需要添加客服功能,所以就升级了 由于是二开 , 也为了方便 , 沿用之前的webview嵌套腾讯IM的方案 , 选用uniapp集成ui ,升级之后所有安卓用户反馈点击进去特别卡,几…

【深度学习】CodeFormer训练过程,如何训练人脸修复模型CodeFormer

文章目录 BasicSR介绍环境数据阶段 I - VQGAN阶段 II - CodeFormer (w0)阶段 III - CodeFormer (w1) 代码地址:https://github.com/sczhou/CodeFormer/releases/tag/v0.1.0 论文的一些简略介绍: https://qq742971636.blog.csdn.net/article/details/134…

Mysql索引相关学习笔记:B+ Tree、索引分类、索引优化、索引失效场景及其他常见面试题

前言 索引是Mysql中常用到的一个功能,可以大大加快查询速度,同时面试中也是经常碰到。本文是学习Mysql索引的归纳总结。 索引采用的数据结构——B 树 本部分主要是参考自小林Coding B树的由来 二分查找可以每次缩减一半,从而提高查找效率…

【mongoDB】数据库的创建和删除

目录 1. 查看所有数据库 2.创建数据库 3.查看当前连接的数据库 4.删除数据库 1. 查看所有数据库 show dbs 2.创建数据库 use 数据库名 例如创建一个名为 aaa 的数据库 3.查看当前连接的数据库 db 4.删除数据库 use 数据库名 db.dropDataBase() 比如删除数据库 aaa

1.25号c++

1.引用 引用就是给变量起别名 格式: 数据类型 &引用名 同类型的变量名 (& 引用符号) eg: int a 10; int &b a; //b引用a,或者给a变量取个别名叫b int *p; //指针可以先定义 后指向 p &a; //int &a…

【MySQL】如何通过DDL去创建和修改员工信息表

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-fmKISDBsFq74ab2Z {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

docker(第二部分)

来自尚硅谷杨哥 少一点胡思乱想,心中无女人,编码自然神,忘掉心上人,抬手灭红尘。人间清醒,赚钱第一。好好学习,天天向上。听懂六六六。 7.Dokcer容器数据卷 1,)坑:容器卷记得加入 …

shared_ptr 与 unique_ptr 的转换 笔记

推荐B站文章: 6.shared_ptr与unique_ptr_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV18B4y187uL?p6&vd_sourcea934d7fc6f47698a29dac90a922ba5a3我的往期文章: 独占指针:unique_ptr 与 函数调用-CSDN博客https://blog.csdn.n…

银行数据仓库体系实践(5)--数据转换

数据转换作业主要是指在数据仓库内的结构化数据批量加工,对于非结构化数据以及在线查询接口、数据流的开发主要是遵循代码开发规范以及各中间件的开发规范,如使用java来开发遵守java开发规范,使用Kafka需要遵循Kafka的使用和设计规范。同时做…

对话泛能网程路:能源产业互联网,行至中程

泛能网的能源产业互联网的标杆价值还不仅于此。其在产业互联之外,也更大的特殊性在于其也更在成为整个碳市场的“辅助运营商”,包括电力、碳等一系列被泛能网帮助企业改造和沉淀的要素资产,都在构成着碳交易市场的未来底层。 这恰是产业互联…

有关Quick BI中Case子句中多次使用lod函数返回空值问题分析

一、Quick BI中的lod_ include函数 lod_ include {维度1[,维度2]...:聚合表达式[:过滤条件]} 作用:将表达式中的维度一起作为分组依据进行订算。其中, 1) 维度1[,维度2]... :声明维度,指定聚合表达式要连接到的一个或多个维…