RUST笔记 FireDBG| Rust 代码调试器

news2024/9/29 9:26:35

安装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

在这里插入图片描述

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

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

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

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

相关文章

java——逻辑控制

这里学过c语言这一节还是很简单的,只是我们这里利用的是java的语法知识。这里我们重点是熟练运用java 的语法,结合前面学的知识。 这一章更多的是利用java语法知识来编程。 🚩if 语句 if(布尔表达式){ // 语句 }if(布尔表达式){ // 语句1…

Unity动画桢事件

1,使用原因 在新项目内部审核的时候,说什么动画节奏不匹配,所以决定用动画桢事件来处理技能释放。当释放技能的时候,先播放技能动画,然后再动画桢所在的时间戳执行技能的逻辑。 2,具体实现 1,…

gin中使用限流中间件

限流又称为流量控制(流控),通常是指限制到达系统的并发请求数,本文列举了常见的限流策略,并以gin框架为例演示了如何为项目添加限流组件。 限流 限流又称为流量控制(流控),通常是指…

【前端基础--4】

定位属性 position 可以将元素定位到你想要放到位置,使用方位值来进行移动(top,left,right,bottom)。 1.相对定位 position: relative; top: 20px; left: 20px; 以自身为定点进行移动,不会脱离文档流。 不会影响元素本身的性质;块级…

Kali如何启动SSH服务并实现无公网ip环境远程连接

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过[cpolar 内网穿透](cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站)软件实现ssh 远程连接kali! …

谷歌公布一个可以让 AI 进行自我判断输出内容正确性的模型训练框架 ASPIRE

谷歌开发了一款名为 ASPIRE 的训练框架,旨在增强人工智能(AI)模型的选择性预测能力。这款框架为模型引入了 “可信度” 机制,即模型会输出一系列答案,并为每个答案赋予一个正确概率评分。通过这种方式,ASPI…

鲜花商城,Java项目、前端vue

系统架构 后台: SpringBoot Mybatis-plus Mybatis Hutool工具包 lombok插件 前台:Vue Vue Router ELementUI Axios 系统简介 功能:首页推荐(默认根据用户买过的商品进行推荐,如果没买过则根据商品销量推荐&…

Sybase PowerDesigner15安装配置

1,软件介绍 ​ Power Designer 是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,他几乎包括了数据库模型设计的全过程。利用Power Designer可以制作数据流程图、概念数据模型、物理数据模型,还可以为数据仓库制作结构模型,也能对团队设计模型进行控…

RocketMQ源码阅读-十-事务消息

RocketMQ源码阅读-十-事务消息 交互流程事务消息发送Producer发送事务消息Broker处理结束事务请求Broker 生成 ConsumeQueue 事务消息回查Broker发起回查Producer 接收回查 总结 交互流程 事务消息交互流程图如下:事务消息发送步骤如下: 生产者将半事务…

redis-持久化-1

Redis 提供了2个不同形式的持久化方式。 RDB(Redis DataBase) AOF(Append Of File) 一、Redis持久化之RDB 1.什么是RDB 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照&#xff0c…

爬虫是什么 怎么预防

爬虫是一种自动化程序,用于从网页或网站中提取数据。它们通过模拟人类用户的行为,发送HTTP请求并解析响应,以获取所需的信息。 爬虫可以用于各种合法用途,如搜索引擎索引、数据采集和监测等。然而,有些爬虫可能是恶意的…

HarmonyOS4.0系统性深入开发26方舟开发框架(ArkUI)概述

方舟开发框架(ArkUI)概述 方舟开发框架(简称ArkUI)为HarmonyOS应用的UI开发提供了完整的基础设施,包括简洁的UI语法、丰富的UI功能(组件、布局、动画以及交互事件),以及实时界面预览…

低代码是软件开发的未来吗?

一、前言 低代码开发是近年来在网络开发领域备受关注的一个趋势。低代码开发是指使用最少的编程代码来开发应用程序或业务逻辑,这使得即使是没有IT或编程经验的初学者也能快速创建所需的功能。 虽然低代码开发还没有威胁到传统开发者的角色,但不可否认的…

【嵌入式学习】C++QT-Day2-C++基础

笔记 见我的博客:https://lingjun.life/wiki/EmbeddedNote/19Cpp 作业 自己封装一个矩形类(Rect),拥有私有属性:宽度(width)、高度(height), 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度…

Nginx日志检测分析工具 - WGCLOUD

WGCLOUD可以对Nginx的日志文件进行全面分析,包括IP、sql注入攻击、搜索引擎蜘蛛爬取记录、HTTP响应状态码、访问量最高的IP统计、扫描攻击统计等 效果如下图

前端学习:HTTP协议、请求响应、分层解耦

HTTP协议 HTTP-概述 HTTP:Hyper Text Transfer Protocol(超文本传输协议),规定了浏览器与服务器之间数据传输的规则。如果想知道http协议的数据传输格式有哪些,可以打开浏览器,点击 F12 打开开发者工具,点击Network 来…

国民技术N32G430C8开发笔记一-新建IAR工程

一、创建IAR工程 1、新建工程,保存到project文件夹。 2、添加SDK到工程。 根据原厂SDK的文件结构在IAR新建相应分组,把各个文件夹的文件加载进去,其中startup文件选择IAR平台的startup_n32g430_EWARM.s。 3、添加头文件路径&#xff0…

springboot124中药实验管理系统设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的中药实验管理系统设计与实现 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章…

Java 枚举和注解

一、枚举类 把具体的对象一个一个例举出来的类就称为枚举类 枚举对应英文(enumeration, 简写 enum)枚举是一组常量的集合。可以这里理解:枚举属于一种特殊的类,里面只包含一组有限的特定的对象。 1.实现方式1——自定义类实现枚举 public class Enume…

HarmonyOS 讨论一下 TextInput的inputFilter正则表达式解决方案

我们 TextInput组件中有这样一个属性 inputFilter 按官方文档的描述 它有两个行参 第一个是字符串类型的 就是 正则表达式 你要怎么去匹配内容 然后 第二个是一个函数 它可以接到一个行参 如果错误时 第二个参数的方法才会执行 行参字符串类型输出被过滤的无效内容 我们可以这…