程序调试工具simple-apm、GolangCI-Lint、xCrash、grpc-tools介绍

以下为你介绍的程序调试工具都可用在Linux系统上:simple-apm(Java 诊断工具 Arthas 的简化实现)、GolangCI-Lint(Golang lint 聚合器)、xCrash(Android 应用崩溃捕获工具)、grpc-tools(gRPC 调试和开发工具)。

1、simple-apm(Java 诊断工具 Arthas 的简化实现)

类似arthas的工具。支持telnet链接、websocket,并提供了默认的websocket的前端页面。

javaagent运行时attach到目标进程,通过netty启动一个rpc接口,接收命令,如果是监控方法耗时、参数、返回值的watch命令,则创建一个ClassFileTransformer,通过ASM修改对应的类,在方法前后注入代码,调用Instrumentation.retransform方法完成增强。

Commands,目前实现的方法有:

sc:

Search Class。

watch:

观察方法的参数、返回值、耗时。

el:

执行表达式。

程序调试工具simple-apm、GolangCI-Lint、xCrash、grpc-tools介绍

websocket:

支持websocket链接,并且提供了一个默认的websocket页。

下载地址:https://github.com/liuzhengyang/simple-apm

2、GolangCI-Lint(Golang lint 聚合器)

GolangCI-Lint 是一个 Golang lint 聚合器,它的速度很快,平均速度是 gometalinter 的 5 倍。GolangCI-Lint 易于集成和使用,具有良好的输出样式并且具有最小数量的误报,而且它还支持 go modules。

GolangCI-Lint 已经集成在 VS Code、GNU Emacs 与 Sublime Text 中。

安装golangci-lint v1.22.2的推荐方法:

# binary will be $(go env GOPATH)/bin/golangci-lint

curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.22.2

# or install it into ./bin/

curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v1.22.2

# In alpine linux (as it does not come with curl by default)

wget -O- -nv https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v1.22.2

golangci-lint --version

下载地址:https://github.com/golangci/golangci-lint

3、xCrash(Android 应用崩溃捕获工具)

xCrash 能为安卓 APP 提供捕获 Java 崩溃、native 崩溃和 ANR 的能力。不需要 root 权限或任何系统权限。

xCrash 能在 App 进程崩溃或 ANR 时,在你指定的目录中生成一个 tombstone 文件(格式与安卓系统的 tombstone 文件类似)。

程序调试工具simple-apm、GolangCI-Lint、xCrash、grpc-tools介绍

xCrash 已经在爱奇艺的很多安卓 APP(包括爱奇艺视频)中被使用了很多年。

特征:

支持 Android 4.0 - 10(API level 14 - 29)。

支持 armeabi,armeabi-v7a,arm64-v8a,x86 和 x86_64。

捕获 java 崩溃,native 崩溃和 ANR。

获取详细的内存使用统计信息。

通过正则表达式设置需要获取哪些线程的信息。

不需要 root 权限或任何系统权限。

概览图:

架构:

程序调试工具simple-apm、GolangCI-Lint、xCrash、grpc-tools介绍

捕获 native 崩溃:

程序调试工具simple-apm、GolangCI-Lint、xCrash、grpc-tools介绍

捕获 ANR:

程序调试工具simple-apm、GolangCI-Lint、xCrash、grpc-tools介绍

如果要从源代码构建xCrash,请遵循以下指南:

1].下载Android NDK r16b,设置PATH环境。

2].构建并复制本机库:

cd ./src/native/

./build.sh

./install.sh

3].建立AAR库:

cd ./src/java/xcrash/

./gradlew :xcrash_lib:build

用法:

1].添加依赖项:

dependencies {

implementation 'com.iqiyi.xcrash:xcrash-android-lib:2.4.9'

}

2].指定一个或多个您需要的ABI:

android {

defaultConfig {

ndk {

abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'

}

}

}

3].初始化xCrash:

Java:

public class MyCustomApplication extends Application {

@Override

protected void attachBaseContext(Context base) {

super.attachBaseContext(base);

xcrash.XCrash.init(this);

}

}

Kotlin:

class MyCustomApplication : Application() {

override fun attachBaseContext(base: Context) {

super.attachBaseContext(base)

xcrash.XCrash.init(this)

}

}

默认情况下,逻辑删除文件将被写入Context#getFilesDir() + "/tombstones"目录(通常位于:/data/data/PACKAGE_NAME/files/tombstones)。

下载地址:https://github.com/iqiyi/xCrash

4、grpc-tools(gRPC 调试和开发工具)

程序调试工具simple-apm、GolangCI-Lint、xCrash、grpc-tools介绍

grpc-tools 是一套用于 gRPC 调试和开发的工具。

主要工具是 grpc-dump,它拦截网络流量,并使用完整元数据记录所有 gRPC 和 gRPC-Web 请求作为 JSON 流。此流可以轻松读取,也可以使用 jq 等工具进行更复杂的可视化。

该存储库目前包括:

grpc-dump:一个小的 gRPC 代理,它将 RPC 详细信息转储到文件中以进行调试,然后进行分析/重放。

grpc-replay:从 grpc-dump 获取输出并将请求重放到服务器。

grpc-fixture:一个代理,它从 grpc-dump 获取输出并将保存的响应重放到客户端请求。

grpc-proxy:用于编写 gRPC 拦截代理的库。grpc-dump 和 grpc-fixture 都建立在这个库之上。

安装:

推荐方法是通过 Homebrew 使用:

brew install bradleyjkemp/formulae/grpc-tools

或者可以使用以下方法从源构建这些工具:

go install github.com/bradleyjkemp/grpc-tools/...

下载地址:https://github.com/bradleyjkemp/grpc-tools

注明

以上就是程序调试工具simple-apm、GolangCI-Lint、xCrash、grpc-tools的介绍内容,这些程序调试工具都能使用在Linux操作系统中。

栏目相关文章