3.0 KiB
Note
本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
lensm
用于查看汇编(assembly)与源码(source)的工具。
使用常规的 Go 命令安装:
go install loov.dev/lensm@main
在 Linux 上,你可能需要添加一些 额外依赖. 你可以分别使用 go install --tags nowayland loov.dev/lensm@main 或 go install --tags nox11 loov.dev/lensm@main 来跳过 Wayland 或 X11 版本的构建。
在本地构建此检出副本:
go build -o lensm .
GitHub Actions 还会为 Apple Silicon
与 Intel 构建可安装的 macOS 磁盘映像。从一次成功的 CI 运行中下载 DMG 构建产物,打开后,将
Lensm.app 拖入 Applications。CI 构建采用 ad-hoc 签名,因此 macOS
首次启动时可能需要通过 Control-click → Open(按住 Control 键点击 → 打开)。
在 macOS 上本地构建 DMG:
./scripts/build-macos-dmg.sh 0.0.0 1 "$(go env GOARCH)"
在 Linux 上,若需跳过某一窗口后端,可使用相同的 Gio 标签:
go build -tags nowayland -o lensm .
go build -tags nox11 -o lensm .
可通过可执行文件路径运行本程序,也可不带参数启动,
然后从顶部栏加载可执行文件。在 macOS 上,使用 Choose... 通过原生 Finder 文件对话框选择可执行文件。UI 内提供函数过滤器。
-watch 可在可执行文件及其信息发生变化时自动重新加载。
lensm -watch lensm
在代码视图中:
- 跟随调用目标,使用
Alt+Left/Right(或Cmd/Ctrl+[与Cmd/Ctrl+])在函数之间导航; - 将鼠标悬停在汇编指令上,若 Lensm 有匹配规则,可查看其引用及简化说明;
- 在 Go 汇编、原生汇编或源码行上拖动以选择一块区域,然后使用
Cmd/Ctrl+C复制。Shift可扩展选区,Escape可清除选区。
通过 stdio 以 MCP 服务器方式运行 lensm:
lensm mcp [-comments ./lensm.lensm-comments.json] ./lensm
MCP 服务器提供列出函数、读取函数的 Go 源码、Go 汇编与原生汇编,以及读取或写入注释等工具。默认情况下,注释保存在名为
<executable>.lensm-comments.json 的 sidecar(附属)文件中。
当 GUI 与独立的 lensm mcp 进程写入同一 sidecar 时,
保存会按注释合并:各进程的新增、编辑与删除都会保留,仅当同一注释存在冲突编辑时,
以最后写入者为准。
注意:本程序需要在本机构建的二进制文件,否则无法加载函数的源码。
为什么?
我在 https://www.storj.io/blog/lensm 撰写了一篇博客,介绍核心功能的设计动机与实现原理。
