Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

非主流架构可以通过源码构建使用arthas吗 #2437

Closed
1 task
497010477 opened this issue Feb 24, 2023 · 4 comments
Closed
1 task

非主流架构可以通过源码构建使用arthas吗 #2437

497010477 opened this issue Feb 24, 2023 · 4 comments

Comments

@497010477
Copy link
Contributor

  • 我已经在 issues 里搜索,没有重复的issue。

环境信息

国产平台

  • arthas-boot.jar 或者 as.sh 的版本: 3.6.4
  • Arthas 版本: 3.6.4
  • 操作系统版本: Linux 4.19.180-1.9.alios7h.XXX
  • 目标进程的JVM版本: 1.8.0_212

重现问题的步骤

  1. 拉取arthas源码,切换至3.6.4分支,mvn clean package -DskipTests
  2. 出包使用构建的arthas,java -jar 启动
  3. 后使用vmtool --action getInstances --className com.XXX,报错

期望的结果

输出类的对象,请问非arthas原生支持的平台能否通过源码构建的方式打出支持arthas全部命令的包?如果可以的话,正确的构建步骤是什么?

实际运行的结果

vmtool error: /tmp/ArthasJniLibrary4065471480531845950.tmp: /tmp/ArthasJniLibrary4065471480531845950.tmp: cannot open shared object file: No such file or directory (Possible cause: can't loadAMD 64-bit .so on a XXX-bit platform)
@497010477
Copy link
Contributor Author

497010477 commented Mar 1, 2023

问题已解决,构建步骤参考:#1918 (comment)

目前arthas已对arm进行支持,我所使用的架构仍然不行,在进行完构建步骤后,仍需对源码common/src/main/java/com/taobao/arthas/common/OSUtils.java,
common/src/main/java/com/taobao/arthas/common/VmToolUtils.java
进行部分调整如下:
OSUtils:

  1. normalizeArch方法中添加对当前架构的if判断
  2. 增加对自身架构的is判断方法
    VmToolUtils:
    static代码块中增加对当前架构的判断条件

我理解作者当前暂时并没有适配除x86与arm以外的架构,但是是否可以考虑将这些部分的控制逻辑稍微放开,以便其他架构至少可以通过源码构建的方式获得完整功能的arthas。即使相关c/c++的代码需要调整,也可以将适配工作下放至用户。因为发现这些调整也花费了我部分时间,希望其他朋友可以绕过这段弯路。

@hengyunabc
Copy link
Collaborator

@497010477 欢迎提交PR,这个不是不开放,开发者手上没有其它架构的机器,也没有这个需求,所以只支持了x86与arm 。

@kimmking
Copy link

kimmking commented Mar 3, 2023

PR就是一种开放形式 😁 @497010477

@497010477
Copy link
Contributor Author

PR就是一种开放形式 😁 @497010477

哈哈哈,谢谢,我知道PR是什么,我的表达方式只是因为我着急用所以写的关于当前架构的一些hack, 但是有一定的保密要求所以代码不方便贴出也不方便提交,前两天比较忙,最近我会抽空调整通用型然后提交PR😄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants