@bugsplat/elfy

中文文档
2.0.0发布于 2025/11/26MITTypeScriptES Module零依赖近 30 天下载 4130

解析 ELF/ SELF 文件的小型工具 .

中文使用文档
文档目录8 节
  1. 为繁忙的开发者构建了崩溃和错误报告 .
  2. 使用量
  3. 浏览器( 有文件输入)
  4. 浏览器( 有获取)
  5. 节点.js(大文件有文件手持)
  6. 记忆缓冲器
  7. 数据来源
  8. 关于

bugsplat-github-banner-basic-outline

BugSpla

为繁忙的开发者构建了崩溃和错误报告 .


精灵

用于解析 ELF/ SELF 文件的微小工具 。 在Node.js和浏览器中都工作.

使用量

  1. 安装此软件包
npm i @bugsplat/elfy
  1. 创建实例 ElfFile 通过一个 DataSource. 库提供多个内置数据源:

浏览器( 有文件输入)

import { ElfFile, BlobDataSource } from '@bugsplat/elfy';

// From a file input element
const file = document.getElementById('file-input').files[0];
const dataSource = new BlobDataSource(file);
const elfFile = new ElfFile(dataSource);

浏览器( 有获取)

import { ElfFile, BlobDataSource } from '@bugsplat/elfy';

const response = await fetch('https://example.com/file.elf');
const blob = await response.blob();
const dataSource = new BlobDataSource(blob);
const elfFile = new ElfFile(dataSource);

节点.js(大文件有文件手持)

import { open } from 'node:fs/promises';
import { ElfFile, DataSource } from '@bugsplat/elfy';

// Create a custom DataSource for Node.js file handles
class FileHandleDataSource implements DataSource {
  constructor(private fileHandle) {}

  async read(offset: number, length: number): Promise<Uint8Array> {
    const buffer = new Uint8Array(length);
    const { bytesRead } = await this.fileHandle.read(buffer, 0, length, offset);
    return buffer.slice(0, bytesRead);
  }
}

const fileHandle = await open('path/to/elf/file', 'r');
try {
  const dataSource = new FileHandleDataSource(fileHandle);
  const elfFile = new ElfFile(dataSource);
  // ... use elfFile
} finally {
  await fileHandle.close();
}

记忆缓冲器

import { ElfFile, BufferDataSource } from '@bugsplat/elfy';

// From an ArrayBuffer or Uint8Array already in memory
const dataSource = new BufferDataSource(arrayBuffer);
const elfFile = new ElfFile(dataSource);
  1. 使用 readSection。如果该部分不存在,则该方法将投出.
const contents: Uint8Array = await elfFile.readSection('.note.gnu.build-id');
  1. 您也可以使用 tryReadSection。 。 。 .
const { success, section } = await elfFile.tryReadSection('.note.gnu.build-id');

数据来源

图书馆使用 DataSource 从任意来源获取抽象读取字节的界面 :

interface DataSource {
  read(offset: number, length: number): Promise<Uint8Array>;
}

内建实施:

  • BlobDataSource - 对于浏览器 Blob编号 :File 对象。 只读取请求的字节 Blob.slice()。 。 。 .
  • BufferDataSource - 为了记忆 Uint8Array 或者说 ArrayBuffer 数据.

您可以为其它来源创建自定义执行( 如: Node.js) FileHandle, HTTP 范围请求等).

关于

BugSpla 是一个支持游戏引擎的软件崩溃和错误报告服务,例如 不真实的引擎,并支持诸如 游戏Station, (中文(简体) ), Xbox 选项 财务报告和审定财务报表 还有更多. BugSplatz 自动捕捉到堆栈痕迹等关键诊断数据,日志文件等运行时信息. BugSplat还提供自动事件通知,一个方便的仪表板来监测趋势并优先进行工程工作,并与流行开发工具相融合以最大限度地提高生产率并运送更盈利的软件.

版本与发布记录

@bugsplat/elfy 共发布 3 个版本,首次发布于 2024/02/08;过去 12 个月发布了 1 个版本。

版本发布日期距今
2.0.0latest2025/11/2611 个月前
1.0.12024/03/012 年前
1.0.02024/02/082 年前

关于 @bugsplat/elfy 的常见问题

@bugsplat/elfy 是什么?

解析 ELF/ SELF 文件的小型工具 .

如何安装 @bugsplat/elfy?

在项目目录运行 npm install @bugsplat/elfy,或使用 pnpm add / yarn add / bun add。

@bugsplat/elfy 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@bugsplat/elfy 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@bugsplat/elfy 可以商用吗?

@bugsplat/elfy 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@bugsplat/elfy 的下载量有多少?

根据 npm 官方下载统计,@bugsplat/elfy 在 2026/10/09 – 2026/11/07 这 30 天内被下载 4,130 次,日均约 138 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bugsplat/elfy 还在维护吗?

最新版本 2.0.0 发布于 2025/11/26(11 个月前);至今共发布 3 个版本,其中过去 12 个月发布了 1 个;首次发布于 2024/02/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。