gitextract_dn9hadax/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report--cn-.md │ │ └── bug-report--en-.md │ └── workflows/ │ ├── auto-prettier.yaml │ ├── build-async-profiler.yml │ ├── build-vmtool.yaml │ ├── codeql-analysis.yml │ ├── push-docker.yaml │ ├── release.yaml │ ├── sync-to-gitee.yaml │ ├── test.yaml │ └── update-doc.yaml ├── .gitignore ├── .mvn/ │ └── wrapper/ │ └── maven-wrapper.properties ├── AGENTS.md ├── CONTRIBUTING.md ├── Dockerfile ├── Dockerfile-No-Jdk ├── LICENSE ├── NOTICE ├── README.md ├── README_CN.md ├── README_EN.md ├── TODO.md ├── USERS.md ├── agent/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── taobao/ │ └── arthas/ │ ├── agent/ │ │ └── ArthasClassloader.java │ └── agent334/ │ └── AgentBootstrap.java ├── arthas-agent-attach/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── taobao/ │ └── arthas/ │ └── agent/ │ └── attach/ │ ├── ArthasAgent.java │ └── AttachArthasClassloader.java ├── arthas-mcp-integration-test/ │ ├── README.md │ ├── pom.xml │ └── src/ │ └── test/ │ └── java/ │ └── com/ │ └── taobao/ │ └── arthas/ │ └── mcp/ │ └── it/ │ ├── ArthasMcpJavaSdkIT.java │ ├── ArthasMcpToolsIT.java │ └── TargetJvmApp.java ├── arthas-mcp-server/ │ ├── README.md │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── taobao/ │ └── arthas/ │ └── mcp/ │ └── server/ │ ├── CommandExecutor.java │ ├── protocol/ │ │ ├── config/ │ │ │ └── McpServerProperties.java │ │ ├── server/ │ │ │ ├── DefaultMcpStatelessServerHandler.java │ │ │ ├── DefaultMcpTransportContext.java │ │ │ ├── McpInitRequestHandler.java │ │ │ ├── McpNettyServer.java │ │ │ ├── McpNettyServerExchange.java │ │ │ ├── McpNotificationHandler.java │ │ │ ├── McpRequestHandler.java │ │ │ ├── McpServer.java │ │ │ ├── McpServerFeatures.java │ │ │ ├── McpStatelessNettyServer.java │ │ │ ├── McpStatelessNotificationHandler.java │ │ │ ├── McpStatelessRequestHandler.java │ │ │ ├── McpStatelessServerFeatures.java │ │ │ ├── McpStatelessServerHandler.java │ │ │ ├── McpTransportContext.java │ │ │ ├── McpTransportContextExtractor.java │ │ │ ├── handler/ │ │ │ │ ├── McpHttpRequestHandler.java │ │ │ │ ├── McpStatelessHttpRequestHandler.java │ │ │ │ └── McpStreamableHttpRequestHandler.java │ │ │ ├── store/ │ │ │ │ └── InMemoryEventStore.java │ │ │ └── transport/ │ │ │ ├── NettyStatelessServerTransport.java │ │ │ └── NettyStreamableServerTransportProvider.java │ │ └── spec/ │ │ ├── DefaultMcpStreamableServerSessionFactory.java │ │ ├── EventStore.java │ │ ├── HttpHeaders.java │ │ ├── McpError.java │ │ ├── McpSchema.java │ │ ├── McpServerTransport.java │ │ ├── McpServerTransportProvider.java │ │ ├── McpSession.java │ │ ├── McpStatelessServerTransport.java │ │ ├── McpStreamableServerSession.java │ │ ├── McpStreamableServerTransport.java │ │ ├── McpStreamableServerTransportProvider.java │ │ ├── McpTransport.java │ │ ├── MissingMcpTransportSession.java │ │ └── ProtocolVersions.java │ ├── session/ │ │ ├── ArthasCommandContext.java │ │ └── ArthasCommandSessionManager.java │ ├── tool/ │ │ ├── DefaultToolCallback.java │ │ ├── DefaultToolCallbackProvider.java │ │ ├── ToolCallback.java │ │ ├── ToolCallbackProvider.java │ │ ├── ToolContext.java │ │ ├── annotation/ │ │ │ ├── Tool.java │ │ │ └── ToolParam.java │ │ ├── definition/ │ │ │ ├── ToolDefinition.java │ │ │ └── ToolDefinitions.java │ │ ├── execution/ │ │ │ ├── DefaultToolCallResultConverter.java │ │ │ ├── DefaultToolExecutionExceptionProcessor.java │ │ │ ├── ToolCallResultConverter.java │ │ │ ├── ToolExecutionException.java │ │ │ └── ToolExecutionExceptionProcessor.java │ │ └── util/ │ │ └── JsonSchemaGenerator.java │ └── util/ │ ├── Assert.java │ ├── JsonParser.java │ ├── KeepAliveScheduler.java │ ├── McpAuthExtractor.java │ └── Utils.java ├── arthas-model/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── taobao/ │ └── arthas/ │ └── core/ │ └── command/ │ └── model/ │ ├── CommandRequestModel.java │ ├── EnhancerAffectVO.java │ ├── EnhancerModel.java │ ├── InputStatus.java │ ├── InputStatusModel.java │ ├── MessageModel.java │ ├── ObjectVO.java │ ├── ResultModel.java │ ├── SessionModel.java │ ├── StatusModel.java │ └── WelcomeModel.java ├── arthas-spring-boot-starter/ │ ├── pom.xml │ └── src/ │ ├── it/ │ │ ├── arthas-spring-boot-starter-example/ │ │ │ ├── invoker.properties │ │ │ ├── pom.xml │ │ │ ├── src/ │ │ │ │ ├── main/ │ │ │ │ │ ├── java/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ └── arthasspringbootstarterexample/ │ │ │ │ │ │ └── ArthasSpringBootStarterExampleApplication.java │ │ │ │ │ └── resources/ │ │ │ │ │ └── application.properties │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ └── arthasspringbootstarterexample/ │ │ │ │ └── ArthasSpringBootStarterExampleApplicationTests.java │ │ │ └── verify.groovy │ │ ├── arthas-spring-boot3-starter-example/ │ │ │ ├── invoker.properties │ │ │ ├── pom.xml │ │ │ ├── src/ │ │ │ │ ├── main/ │ │ │ │ │ ├── java/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ └── arthasspringboot3starterexample/ │ │ │ │ │ │ └── ArthasSpringBoot3StarterExampleApplication.java │ │ │ │ │ └── resources/ │ │ │ │ │ └── application.properties │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ └── arthasspringboot3starterexample/ │ │ │ │ └── ArthasSpringBoot3StarterExampleApplicationTests.java │ │ │ └── verify.groovy │ │ └── settings.xml │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── arthas/ │ │ │ └── spring/ │ │ │ ├── ArthasConfiguration.java │ │ │ ├── ArthasProperties.java │ │ │ ├── StringUtils.java │ │ │ └── endpoints/ │ │ │ ├── ArthasEndPoint.java │ │ │ └── ArthasEndPointAutoConfiguration.java │ │ └── resources/ │ │ └── META-INF/ │ │ ├── spring/ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ ├── spring.factories │ │ └── spring.provides │ └── test/ │ └── java/ │ └── com/ │ └── alibaba/ │ └── arthas/ │ └── spring/ │ └── StringUtilsTest.java ├── arthas-vmtool/ │ ├── README.md │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── arthas/ │ │ │ ├── VmTool.java │ │ │ ├── VmToolMXBean.java │ │ │ └── package-info.java │ │ └── native/ │ │ └── src/ │ │ ├── heap_analyzer.c │ │ ├── heap_analyzer.h │ │ └── jni-library.cpp │ └── test/ │ └── java/ │ └── arthas/ │ └── VmToolTest.java ├── as-package.sh ├── batch.as ├── bin/ │ ├── as-service.bat │ ├── as.bat │ ├── as.sh │ ├── install-local.sh │ ├── install.sh │ └── jps.sh ├── boot/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── taobao/ │ │ └── arthas/ │ │ └── boot/ │ │ ├── Bootstrap.java │ │ ├── DownloadUtils.java │ │ └── ProcessUtils.java │ └── test/ │ └── java/ │ └── com/ │ └── taobao/ │ └── arthas/ │ └── boot/ │ └── DownloadUtilsTest.java ├── client/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ ├── com/ │ │ └── taobao/ │ │ └── arthas/ │ │ └── client/ │ │ ├── IOUtil.java │ │ └── TelnetConsole.java │ └── org/ │ └── apache/ │ └── commons/ │ └── net/ │ ├── DatagramSocketClient.java │ ├── DatagramSocketFactory.java │ ├── DefaultDatagramSocketFactory.java │ ├── DefaultSocketFactory.java │ ├── MalformedServerReplyException.java │ ├── PrintCommandListener.java │ ├── ProtocolCommandEvent.java │ ├── ProtocolCommandListener.java │ ├── ProtocolCommandSupport.java │ ├── SocketClient.java │ ├── telnet/ │ │ ├── EchoOptionHandler.java │ │ ├── InvalidTelnetOptionException.java │ │ ├── SimpleOptionHandler.java │ │ ├── SuppressGAOptionHandler.java │ │ ├── Telnet.java │ │ ├── TelnetClient.java │ │ ├── TelnetCommand.java │ │ ├── TelnetInputListener.java │ │ ├── TelnetInputStream.java │ │ ├── TelnetNotificationHandler.java │ │ ├── TelnetOption.java │ │ ├── TelnetOptionHandler.java │ │ ├── TelnetOutputStream.java │ │ ├── TerminalTypeOptionHandler.java │ │ └── WindowSizeOptionHandler.java │ └── util/ │ └── ListenerList.java ├── common/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── taobao/ │ └── arthas/ │ └── common/ │ ├── AnsiLog.java │ ├── ArthasConstants.java │ ├── ExecutingCommand.java │ ├── FileUtils.java │ ├── IOUtils.java │ ├── JavaVersionUtils.java │ ├── OSUtils.java │ ├── Pair.java │ ├── PidUtils.java │ ├── PlatformEnum.java │ ├── ReflectException.java │ ├── ReflectUtils.java │ ├── SocketUtils.java │ ├── UnsafeUtils.java │ ├── UsageRender.java │ ├── VmToolUtils.java │ └── concurrent/ │ ├── ConcurrentWeakKeyHashMap.java │ └── ReusableIterator.java ├── core/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ ├── arthas.properties │ │ │ ├── com/ │ │ │ │ └── taobao/ │ │ │ │ └── arthas/ │ │ │ │ └── core/ │ │ │ │ ├── Arthas.java │ │ │ │ ├── GlobalOptions.java │ │ │ │ ├── Option.java │ │ │ │ ├── advisor/ │ │ │ │ │ ├── AccessPoint.java │ │ │ │ │ ├── Advice.java │ │ │ │ │ ├── AdviceListener.java │ │ │ │ │ ├── AdviceListenerAdapter.java │ │ │ │ │ ├── AdviceListenerManager.java │ │ │ │ │ ├── AdviceWeaver.java │ │ │ │ │ ├── ArthasMethod.java │ │ │ │ │ ├── Enhancer.java │ │ │ │ │ ├── InvokeTraceable.java │ │ │ │ │ ├── SpyImpl.java │ │ │ │ │ ├── SpyInterceptors.java │ │ │ │ │ └── TransformerManager.java │ │ │ │ ├── command/ │ │ │ │ │ ├── BuiltinCommandPack.java │ │ │ │ │ ├── CommandExecutorImpl.java │ │ │ │ │ ├── Constants.java │ │ │ │ │ ├── ScriptSupportCommand.java │ │ │ │ │ ├── basic1000/ │ │ │ │ │ │ ├── AuthCommand.java │ │ │ │ │ │ ├── Base64Command.java │ │ │ │ │ │ ├── CatCommand.java │ │ │ │ │ │ ├── ClsCommand.java │ │ │ │ │ │ ├── EchoCommand.java │ │ │ │ │ │ ├── GrepCommand.java │ │ │ │ │ │ ├── HelpCommand.java │ │ │ │ │ │ ├── HistoryCommand.java │ │ │ │ │ │ ├── JFRCommand.java │ │ │ │ │ │ ├── KeymapCommand.java │ │ │ │ │ │ ├── OptionsCommand.java │ │ │ │ │ │ ├── PwdCommand.java │ │ │ │ │ │ ├── ResetCommand.java │ │ │ │ │ │ ├── SessionCommand.java │ │ │ │ │ │ ├── StopCommand.java │ │ │ │ │ │ ├── SystemEnvCommand.java │ │ │ │ │ │ ├── SystemPropertyCommand.java │ │ │ │ │ │ ├── TeeCommand.java │ │ │ │ │ │ ├── VMOptionCommand.java │ │ │ │ │ │ └── VersionCommand.java │ │ │ │ │ ├── express/ │ │ │ │ │ │ ├── ArthasObjectPropertyAccessor.java │ │ │ │ │ │ ├── ClassLoaderClassResolver.java │ │ │ │ │ │ ├── CustomClassResolver.java │ │ │ │ │ │ ├── DefaultMemberAccess.java │ │ │ │ │ │ ├── Express.java │ │ │ │ │ │ ├── ExpressException.java │ │ │ │ │ │ ├── ExpressFactory.java │ │ │ │ │ │ └── OgnlExpress.java │ │ │ │ │ ├── hidden/ │ │ │ │ │ │ ├── JulyCommand.java │ │ │ │ │ │ └── ThanksCommand.java │ │ │ │ │ ├── klass100/ │ │ │ │ │ │ ├── ClassDumpTransformer.java │ │ │ │ │ │ ├── ClassLoaderCommand.java │ │ │ │ │ │ ├── DumpClassCommand.java │ │ │ │ │ │ ├── GetStaticCommand.java │ │ │ │ │ │ ├── JadCommand.java │ │ │ │ │ │ ├── MemoryCompilerCommand.java │ │ │ │ │ │ ├── OgnlCommand.java │ │ │ │ │ │ ├── RedefineCommand.java │ │ │ │ │ │ ├── RetransformCommand.java │ │ │ │ │ │ ├── SearchClassCommand.java │ │ │ │ │ │ └── SearchMethodCommand.java │ │ │ │ │ ├── logger/ │ │ │ │ │ │ ├── AsmRenameUtil.java │ │ │ │ │ │ ├── Log4j2Helper.java │ │ │ │ │ │ ├── Log4jHelper.java │ │ │ │ │ │ ├── LogbackHelper.java │ │ │ │ │ │ ├── LoggerCommand.java │ │ │ │ │ │ └── LoggerHelper.java │ │ │ │ │ ├── model/ │ │ │ │ │ │ ├── ArgumentVO.java │ │ │ │ │ │ ├── Base64Model.java │ │ │ │ │ │ ├── BlockingLockInfo.java │ │ │ │ │ │ ├── BusyThreadInfo.java │ │ │ │ │ │ ├── CatModel.java │ │ │ │ │ │ ├── ChangeResultVO.java │ │ │ │ │ │ ├── ClassDetailVO.java │ │ │ │ │ │ ├── ClassLoaderModel.java │ │ │ │ │ │ ├── ClassLoaderVO.java │ │ │ │ │ │ ├── ClassSetVO.java │ │ │ │ │ │ ├── ClassVO.java │ │ │ │ │ │ ├── CommandOptionVO.java │ │ │ │ │ │ ├── CommandVO.java │ │ │ │ │ │ ├── Countable.java │ │ │ │ │ │ ├── DashboardModel.java │ │ │ │ │ │ ├── DumpClassModel.java │ │ │ │ │ │ ├── DumpClassVO.java │ │ │ │ │ │ ├── EchoModel.java │ │ │ │ │ │ ├── EnhancerModelFactory.java │ │ │ │ │ │ ├── FieldVO.java │ │ │ │ │ │ ├── GcInfoVO.java │ │ │ │ │ │ ├── GetStaticModel.java │ │ │ │ │ │ ├── HeapDumpModel.java │ │ │ │ │ │ ├── HelpModel.java │ │ │ │ │ │ ├── HistoryModel.java │ │ │ │ │ │ ├── JFRModel.java │ │ │ │ │ │ ├── JadModel.java │ │ │ │ │ │ ├── JvmItemVO.java │ │ │ │ │ │ ├── JvmModel.java │ │ │ │ │ │ ├── LoggerModel.java │ │ │ │ │ │ ├── MBeanAttributeVO.java │ │ │ │ │ │ ├── MBeanModel.java │ │ │ │ │ │ ├── MemoryCompilerModel.java │ │ │ │ │ │ ├── MemoryEntryVO.java │ │ │ │ │ │ ├── MemoryModel.java │ │ │ │ │ │ ├── MethodNode.java │ │ │ │ │ │ ├── MethodVO.java │ │ │ │ │ │ ├── MonitorModel.java │ │ │ │ │ │ ├── OgnlModel.java │ │ │ │ │ │ ├── OptionVO.java │ │ │ │ │ │ ├── OptionsModel.java │ │ │ │ │ │ ├── PerfCounterModel.java │ │ │ │ │ │ ├── PerfCounterVO.java │ │ │ │ │ │ ├── ProfilerModel.java │ │ │ │ │ │ ├── PwdModel.java │ │ │ │ │ │ ├── RedefineModel.java │ │ │ │ │ │ ├── ResetModel.java │ │ │ │ │ │ ├── RetransformModel.java │ │ │ │ │ │ ├── RowAffectModel.java │ │ │ │ │ │ ├── RuntimeInfoVO.java │ │ │ │ │ │ ├── SearchClassModel.java │ │ │ │ │ │ ├── SearchMethodModel.java │ │ │ │ │ │ ├── ShutdownModel.java │ │ │ │ │ │ ├── StackModel.java │ │ │ │ │ │ ├── SystemEnvModel.java │ │ │ │ │ │ ├── SystemPropertyModel.java │ │ │ │ │ │ ├── ThreadModel.java │ │ │ │ │ │ ├── ThreadNode.java │ │ │ │ │ │ ├── ThreadVO.java │ │ │ │ │ │ ├── ThrowNode.java │ │ │ │ │ │ ├── TimeFragmentVO.java │ │ │ │ │ │ ├── TimeTunnelModel.java │ │ │ │ │ │ ├── TomcatInfoVO.java │ │ │ │ │ │ ├── TraceModel.java │ │ │ │ │ │ ├── TraceNode.java │ │ │ │ │ │ ├── TraceTree.java │ │ │ │ │ │ ├── VMOptionModel.java │ │ │ │ │ │ ├── VersionModel.java │ │ │ │ │ │ ├── VmToolModel.java │ │ │ │ │ │ └── WatchModel.java │ │ │ │ │ ├── monitor200/ │ │ │ │ │ │ ├── AbstractTraceAdviceListener.java │ │ │ │ │ │ ├── DashboardCommand.java │ │ │ │ │ │ ├── DashboardInterruptHandler.java │ │ │ │ │ │ ├── EnhancerCommand.java │ │ │ │ │ │ ├── GroovyAdviceListener.java │ │ │ │ │ │ ├── GroovyScriptCommand.java │ │ │ │ │ │ ├── HeapDumpCommand.java │ │ │ │ │ │ ├── JvmCommand.java │ │ │ │ │ │ ├── MBeanCommand.java │ │ │ │ │ │ ├── MemoryCommand.java │ │ │ │ │ │ ├── MonitorAdviceListener.java │ │ │ │ │ │ ├── MonitorCommand.java │ │ │ │ │ │ ├── MonitorData.java │ │ │ │ │ │ ├── PathTraceAdviceListener.java │ │ │ │ │ │ ├── PerfCounterCommand.java │ │ │ │ │ │ ├── ProfilerCommand.java │ │ │ │ │ │ ├── ProfilerMarkdown.java │ │ │ │ │ │ ├── StackAdviceListener.java │ │ │ │ │ │ ├── StackCommand.java │ │ │ │ │ │ ├── ThreadCommand.java │ │ │ │ │ │ ├── ThreadSampler.java │ │ │ │ │ │ ├── TimeFragment.java │ │ │ │ │ │ ├── TimeTunnelAdviceListener.java │ │ │ │ │ │ ├── TimeTunnelCommand.java │ │ │ │ │ │ ├── TimeTunnelTable.java │ │ │ │ │ │ ├── TraceAdviceListener.java │ │ │ │ │ │ ├── TraceCommand.java │ │ │ │ │ │ ├── TraceEntity.java │ │ │ │ │ │ ├── VmToolCommand.java │ │ │ │ │ │ ├── WatchAdviceListener.java │ │ │ │ │ │ └── WatchCommand.java │ │ │ │ │ └── view/ │ │ │ │ │ ├── Base64View.java │ │ │ │ │ ├── CatView.java │ │ │ │ │ ├── ClassLoaderView.java │ │ │ │ │ ├── DashboardView.java │ │ │ │ │ ├── DumpClassView.java │ │ │ │ │ ├── EchoView.java │ │ │ │ │ ├── EnhancerView.java │ │ │ │ │ ├── GetStaticView.java │ │ │ │ │ ├── HelpView.java │ │ │ │ │ ├── JFRView.java │ │ │ │ │ ├── JadView.java │ │ │ │ │ ├── JvmView.java │ │ │ │ │ ├── LoggerView.java │ │ │ │ │ ├── MBeanView.java │ │ │ │ │ ├── MemoryCompilerView.java │ │ │ │ │ ├── MemoryView.java │ │ │ │ │ ├── MessageView.java │ │ │ │ │ ├── MonitorView.java │ │ │ │ │ ├── OgnlView.java │ │ │ │ │ ├── OptionsView.java │ │ │ │ │ ├── PerfCounterView.java │ │ │ │ │ ├── ProfilerView.java │ │ │ │ │ ├── PwdView.java │ │ │ │ │ ├── RedefineView.java │ │ │ │ │ ├── ResetView.java │ │ │ │ │ ├── ResultView.java │ │ │ │ │ ├── ResultViewResolver.java │ │ │ │ │ ├── RetransformView.java │ │ │ │ │ ├── RowAffectView.java │ │ │ │ │ ├── SearchClassView.java │ │ │ │ │ ├── SearchMethodView.java │ │ │ │ │ ├── SessionView.java │ │ │ │ │ ├── ShutdownView.java │ │ │ │ │ ├── StackView.java │ │ │ │ │ ├── StatusView.java │ │ │ │ │ ├── SystemEnvView.java │ │ │ │ │ ├── SystemPropertyView.java │ │ │ │ │ ├── ThreadView.java │ │ │ │ │ ├── TimeTunnelView.java │ │ │ │ │ ├── TraceView.java │ │ │ │ │ ├── VMOptionView.java │ │ │ │ │ ├── VersionView.java │ │ │ │ │ ├── ViewRenderUtil.java │ │ │ │ │ ├── VmToolView.java │ │ │ │ │ └── WatchView.java │ │ │ │ ├── config/ │ │ │ │ │ ├── BinderUtils.java │ │ │ │ │ ├── Config.java │ │ │ │ │ ├── Configure.java │ │ │ │ │ ├── FeatureCodec.java │ │ │ │ │ └── NestedConfig.java │ │ │ │ ├── distribution/ │ │ │ │ │ ├── CompositeResultDistributor.java │ │ │ │ │ ├── DistributorOptions.java │ │ │ │ │ ├── PackingResultDistributor.java │ │ │ │ │ ├── ResultConsumer.java │ │ │ │ │ ├── ResultConsumerHelper.java │ │ │ │ │ ├── ResultDistributor.java │ │ │ │ │ ├── SharingResultDistributor.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── CompositeResultDistributorImpl.java │ │ │ │ │ ├── PackingResultDistributorImpl.java │ │ │ │ │ ├── ResultConsumerImpl.java │ │ │ │ │ ├── SharingResultDistributorImpl.java │ │ │ │ │ └── TermResultDistributorImpl.java │ │ │ │ ├── env/ │ │ │ │ │ ├── AbstractPropertyResolver.java │ │ │ │ │ ├── ArthasEnvironment.java │ │ │ │ │ ├── ConfigurablePropertyResolver.java │ │ │ │ │ ├── ConversionService.java │ │ │ │ │ ├── EnumerablePropertySource.java │ │ │ │ │ ├── Environment.java │ │ │ │ │ ├── MapPropertySource.java │ │ │ │ │ ├── MissingRequiredPropertiesException.java │ │ │ │ │ ├── MutablePropertySources.java │ │ │ │ │ ├── PropertiesPropertySource.java │ │ │ │ │ ├── PropertyPlaceholderHelper.java │ │ │ │ │ ├── PropertyResolver.java │ │ │ │ │ ├── PropertySource.java │ │ │ │ │ ├── PropertySources.java │ │ │ │ │ ├── PropertySourcesPropertyResolver.java │ │ │ │ │ ├── ReadOnlySystemAttributesMap.java │ │ │ │ │ ├── SystemEnvironmentPropertySource.java │ │ │ │ │ ├── SystemPropertyUtils.java │ │ │ │ │ ├── convert/ │ │ │ │ │ │ ├── ConfigurableConversionService.java │ │ │ │ │ │ ├── Converter.java │ │ │ │ │ │ ├── ConvertiblePair.java │ │ │ │ │ │ ├── DefaultConversionService.java │ │ │ │ │ │ ├── ObjectToStringConverter.java │ │ │ │ │ │ ├── StringToArrayConverter.java │ │ │ │ │ │ ├── StringToBooleanConverter.java │ │ │ │ │ │ ├── StringToEnumConverter.java │ │ │ │ │ │ ├── StringToInetAddressConverter.java │ │ │ │ │ │ ├── StringToIntegerConverter.java │ │ │ │ │ │ └── StringToLongConverter.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── mcp/ │ │ │ │ │ ├── ArthasMcpBootstrap.java │ │ │ │ │ ├── ArthasMcpServer.java │ │ │ │ │ ├── tool/ │ │ │ │ │ │ ├── function/ │ │ │ │ │ │ │ ├── AbstractArthasTool.java │ │ │ │ │ │ │ ├── StreamableToolUtils.java │ │ │ │ │ │ │ ├── basic1000/ │ │ │ │ │ │ │ │ ├── OptionsTool.java │ │ │ │ │ │ │ │ ├── StopTool.java │ │ │ │ │ │ │ │ └── ViewFileTool.java │ │ │ │ │ │ │ ├── jvm300/ │ │ │ │ │ │ │ │ ├── DashboardTool.java │ │ │ │ │ │ │ │ ├── GetStaticTool.java │ │ │ │ │ │ │ │ ├── HeapdumpTool.java │ │ │ │ │ │ │ │ ├── JvmTool.java │ │ │ │ │ │ │ │ ├── MBeanTool.java │ │ │ │ │ │ │ │ ├── MemoryTool.java │ │ │ │ │ │ │ │ ├── OgnlTool.java │ │ │ │ │ │ │ │ ├── PerfCounterTool.java │ │ │ │ │ │ │ │ ├── SysEnvTool.java │ │ │ │ │ │ │ │ ├── SysPropTool.java │ │ │ │ │ │ │ │ ├── ThreadTool.java │ │ │ │ │ │ │ │ ├── VMOptionTool.java │ │ │ │ │ │ │ │ └── VMToolTool.java │ │ │ │ │ │ │ ├── klass100/ │ │ │ │ │ │ │ │ ├── ClassLoaderTool.java │ │ │ │ │ │ │ │ ├── DumpClassTool.java │ │ │ │ │ │ │ │ ├── JadTool.java │ │ │ │ │ │ │ │ ├── MemoryCompilerTool.java │ │ │ │ │ │ │ │ ├── RedefineTool.java │ │ │ │ │ │ │ │ ├── RetransformTool.java │ │ │ │ │ │ │ │ ├── SearchClassTool.java │ │ │ │ │ │ │ │ └── SearchMethodTool.java │ │ │ │ │ │ │ └── monitor200/ │ │ │ │ │ │ │ ├── MonitorTool.java │ │ │ │ │ │ │ ├── ProfilerTool.java │ │ │ │ │ │ │ ├── StackTool.java │ │ │ │ │ │ │ ├── TimeTunnelTool.java │ │ │ │ │ │ │ ├── TraceTool.java │ │ │ │ │ │ │ └── WatchTool.java │ │ │ │ │ │ └── util/ │ │ │ │ │ │ └── McpToolUtils.java │ │ │ │ │ └── util/ │ │ │ │ │ ├── McpAuthExtractor.java │ │ │ │ │ └── McpObjectVOFilter.java │ │ │ │ ├── security/ │ │ │ │ │ ├── AuthUtils.java │ │ │ │ │ ├── BasicPrincipal.java │ │ │ │ │ ├── BearerPrincipal.java │ │ │ │ │ ├── LocalConnectionPrincipal.java │ │ │ │ │ ├── SecurityAuthenticator.java │ │ │ │ │ └── SecurityAuthenticatorImpl.java │ │ │ │ ├── server/ │ │ │ │ │ ├── ArthasBootstrap.java │ │ │ │ │ └── instrument/ │ │ │ │ │ └── ClassLoader_Instrument.java │ │ │ │ ├── shell/ │ │ │ │ │ ├── Shell.java │ │ │ │ │ ├── ShellServer.java │ │ │ │ │ ├── ShellServerOptions.java │ │ │ │ │ ├── cli/ │ │ │ │ │ │ ├── CliToken.java │ │ │ │ │ │ ├── CliTokens.java │ │ │ │ │ │ ├── Completion.java │ │ │ │ │ │ ├── CompletionUtils.java │ │ │ │ │ │ ├── OptionCompleteHandler.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ └── CliTokenImpl.java │ │ │ │ │ ├── command/ │ │ │ │ │ │ ├── AnnotatedCommand.java │ │ │ │ │ │ ├── Command.java │ │ │ │ │ │ ├── CommandBuilder.java │ │ │ │ │ │ ├── CommandProcess.java │ │ │ │ │ │ ├── CommandRegistry.java │ │ │ │ │ │ ├── CommandResolver.java │ │ │ │ │ │ ├── ExitStatus.java │ │ │ │ │ │ ├── impl/ │ │ │ │ │ │ │ ├── AnnotatedCommandImpl.java │ │ │ │ │ │ │ └── CommandBuilderImpl.java │ │ │ │ │ │ └── internal/ │ │ │ │ │ │ ├── CloseFunction.java │ │ │ │ │ │ ├── GrepHandler.java │ │ │ │ │ │ ├── PlainTextHandler.java │ │ │ │ │ │ ├── RedirectHandler.java │ │ │ │ │ │ ├── StatisticsFunction.java │ │ │ │ │ │ ├── StdoutHandler.java │ │ │ │ │ │ ├── TeeHandler.java │ │ │ │ │ │ ├── TermHandler.java │ │ │ │ │ │ └── WordCountHandler.java │ │ │ │ │ ├── future/ │ │ │ │ │ │ └── Future.java │ │ │ │ │ ├── handlers/ │ │ │ │ │ │ ├── BindHandler.java │ │ │ │ │ │ ├── Handler.java │ │ │ │ │ │ ├── NoOpHandler.java │ │ │ │ │ │ ├── command/ │ │ │ │ │ │ │ └── CommandInterruptHandler.java │ │ │ │ │ │ ├── server/ │ │ │ │ │ │ │ ├── SessionClosedHandler.java │ │ │ │ │ │ │ ├── SessionsClosedHandler.java │ │ │ │ │ │ │ ├── TermServerListenHandler.java │ │ │ │ │ │ │ └── TermServerTermHandler.java │ │ │ │ │ │ ├── shell/ │ │ │ │ │ │ │ ├── CloseHandler.java │ │ │ │ │ │ │ ├── CommandManagerCompletionHandler.java │ │ │ │ │ │ │ ├── FutureHandler.java │ │ │ │ │ │ │ ├── InterruptHandler.java │ │ │ │ │ │ │ ├── QExitHandler.java │ │ │ │ │ │ │ ├── ShellForegroundUpdateHandler.java │ │ │ │ │ │ │ ├── ShellLineHandler.java │ │ │ │ │ │ │ └── SuspendHandler.java │ │ │ │ │ │ └── term/ │ │ │ │ │ │ ├── CloseHandlerWrapper.java │ │ │ │ │ │ ├── DefaultTermStdinHandler.java │ │ │ │ │ │ ├── EventHandler.java │ │ │ │ │ │ ├── RequestHandler.java │ │ │ │ │ │ ├── SizeHandlerWrapper.java │ │ │ │ │ │ └── StdinHandlerWrapper.java │ │ │ │ │ ├── history/ │ │ │ │ │ │ ├── HistoryManager.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ └── HistoryManagerImpl.java │ │ │ │ │ ├── impl/ │ │ │ │ │ │ ├── BuiltinCommandResolver.java │ │ │ │ │ │ ├── ShellImpl.java │ │ │ │ │ │ └── ShellServerImpl.java │ │ │ │ │ ├── session/ │ │ │ │ │ │ ├── Session.java │ │ │ │ │ │ ├── SessionManager.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ ├── SessionImpl.java │ │ │ │ │ │ └── SessionManagerImpl.java │ │ │ │ │ ├── system/ │ │ │ │ │ │ ├── ExecStatus.java │ │ │ │ │ │ ├── Job.java │ │ │ │ │ │ ├── JobController.java │ │ │ │ │ │ ├── JobListener.java │ │ │ │ │ │ ├── Process.java │ │ │ │ │ │ ├── ProcessAware.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ ├── CommandCompletion.java │ │ │ │ │ │ ├── GlobalJobControllerImpl.java │ │ │ │ │ │ ├── InternalCommandManager.java │ │ │ │ │ │ ├── JobControllerImpl.java │ │ │ │ │ │ ├── JobImpl.java │ │ │ │ │ │ └── ProcessImpl.java │ │ │ │ │ └── term/ │ │ │ │ │ ├── SignalHandler.java │ │ │ │ │ ├── Term.java │ │ │ │ │ ├── TermServer.java │ │ │ │ │ ├── Tty.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── CompletionAdaptor.java │ │ │ │ │ ├── CompletionHandler.java │ │ │ │ │ ├── FunctionInvocationHandler.java │ │ │ │ │ ├── Helper.java │ │ │ │ │ ├── HttpTermServer.java │ │ │ │ │ ├── TelnetTermServer.java │ │ │ │ │ ├── TermImpl.java │ │ │ │ │ ├── http/ │ │ │ │ │ │ ├── BasicHttpAuthenticatorHandler.java │ │ │ │ │ │ ├── DirectoryBrowser.java │ │ │ │ │ │ ├── ExtHttpTtyConnection.java │ │ │ │ │ │ ├── HttpRequestHandler.java │ │ │ │ │ │ ├── LocalTtyServerInitializer.java │ │ │ │ │ │ ├── NettyWebsocketTtyBootstrap.java │ │ │ │ │ │ ├── TtyServerInitializer.java │ │ │ │ │ │ ├── TtyWebSocketFrameHandler.java │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ ├── ApiAction.java │ │ │ │ │ │ │ ├── ApiException.java │ │ │ │ │ │ │ ├── ApiRequest.java │ │ │ │ │ │ │ ├── ApiResponse.java │ │ │ │ │ │ │ ├── ApiState.java │ │ │ │ │ │ │ ├── HttpApiHandler.java │ │ │ │ │ │ │ └── ObjectVOFilter.java │ │ │ │ │ │ ├── package-info.java │ │ │ │ │ │ └── session/ │ │ │ │ │ │ ├── HttpSession.java │ │ │ │ │ │ ├── HttpSessionManager.java │ │ │ │ │ │ ├── LRUCache.java │ │ │ │ │ │ └── SimpleHttpSession.java │ │ │ │ │ └── httptelnet/ │ │ │ │ │ ├── HttpTelnetTermServer.java │ │ │ │ │ ├── NettyHttpTelnetBootstrap.java │ │ │ │ │ ├── NettyHttpTelnetTtyBootstrap.java │ │ │ │ │ └── ProtocolDetectHandler.java │ │ │ │ ├── util/ │ │ │ │ │ ├── ArrayUtils.java │ │ │ │ │ ├── ArthasBanner.java │ │ │ │ │ ├── ArthasCheckUtils.java │ │ │ │ │ ├── ClassLoaderUtils.java │ │ │ │ │ ├── ClassUtils.java │ │ │ │ │ ├── CommandUtils.java │ │ │ │ │ ├── Constants.java │ │ │ │ │ ├── DateUtils.java │ │ │ │ │ ├── Decompiler.java │ │ │ │ │ ├── FileUtils.java │ │ │ │ │ ├── HttpUtils.java │ │ │ │ │ ├── IOUtils.java │ │ │ │ │ ├── IPUtils.java │ │ │ │ │ ├── InstrumentationUtils.java │ │ │ │ │ ├── LogUtil.java │ │ │ │ │ ├── NetUtils.java │ │ │ │ │ ├── ObjectUtils.java │ │ │ │ │ ├── RegexCacheManager.java │ │ │ │ │ ├── ResultUtils.java │ │ │ │ │ ├── SearchUtils.java │ │ │ │ │ ├── StringUtils.java │ │ │ │ │ ├── ThreadLocalWatch.java │ │ │ │ │ ├── ThreadUtil.java │ │ │ │ │ ├── TokenUtils.java │ │ │ │ │ ├── TypeRenderUtils.java │ │ │ │ │ ├── UserStatUtil.java │ │ │ │ │ ├── affect/ │ │ │ │ │ │ ├── Affect.java │ │ │ │ │ │ ├── EnhancerAffect.java │ │ │ │ │ │ └── RowAffect.java │ │ │ │ │ ├── collection/ │ │ │ │ │ │ ├── GaStack.java │ │ │ │ │ │ ├── ThreadUnsafeFixGaStack.java │ │ │ │ │ │ └── ThreadUnsafeGaStack.java │ │ │ │ │ ├── matcher/ │ │ │ │ │ │ ├── EqualsMatcher.java │ │ │ │ │ │ ├── FalseMatcher.java │ │ │ │ │ │ ├── GroupMatcher.java │ │ │ │ │ │ ├── Matcher.java │ │ │ │ │ │ ├── RegexMatcher.java │ │ │ │ │ │ ├── TrueMatcher.java │ │ │ │ │ │ └── WildcardMatcher.java │ │ │ │ │ ├── metrics/ │ │ │ │ │ │ ├── RateCounter.java │ │ │ │ │ │ └── SumRateCounter.java │ │ │ │ │ ├── reflect/ │ │ │ │ │ │ ├── ArthasReflectUtils.java │ │ │ │ │ │ └── FieldUtils.java │ │ │ │ │ └── usage/ │ │ │ │ │ └── StyledUsageFormatter.java │ │ │ │ └── view/ │ │ │ │ ├── Ansi.java │ │ │ │ ├── ClassInfoView.java │ │ │ │ ├── KVView.java │ │ │ │ ├── LadderView.java │ │ │ │ ├── MethodInfoView.java │ │ │ │ ├── ObjectView.java │ │ │ │ ├── TableView.java │ │ │ │ ├── TreeView.java │ │ │ │ └── View.java │ │ │ ├── logback.xml │ │ │ └── one/ │ │ │ └── profiler/ │ │ │ ├── AsyncProfiler.java │ │ │ ├── AsyncProfilerMXBean.java │ │ │ ├── Counter.java │ │ │ ├── Events.java │ │ │ └── package-info.java │ │ └── resources/ │ │ └── com/ │ │ └── taobao/ │ │ └── arthas/ │ │ └── core/ │ │ ├── res/ │ │ │ ├── logo.txt │ │ │ └── thanks.txt │ │ └── shell/ │ │ └── term/ │ │ └── readline/ │ │ └── inputrc │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── taobao/ │ │ └── arthas/ │ │ └── core/ │ │ ├── GlobalOptionsTest.java │ │ ├── advisor/ │ │ │ ├── EnhancerTest.java │ │ │ └── SpyImplTest.java │ │ ├── bytecode/ │ │ │ └── TestHelper.java │ │ ├── command/ │ │ │ ├── basic1000/ │ │ │ │ ├── GrepCommandTest.java │ │ │ │ └── OptionsCommandTest.java │ │ │ ├── express/ │ │ │ │ ├── FlowAttribute.java │ │ │ │ ├── FlowContext.java │ │ │ │ ├── OgnlExpressTest.java │ │ │ │ └── OgnlTest.java │ │ │ ├── klass100/ │ │ │ │ └── ClassLoaderCommandUrlClassesTest.java │ │ │ └── monitor200/ │ │ │ ├── ProfilerMarkdownTest.java │ │ │ └── SizeLimitValidationTest.java │ │ ├── config/ │ │ │ ├── ErrorProperties.java │ │ │ ├── PropertiesInjectUtilTest.java │ │ │ ├── Server.java │ │ │ ├── ServerProperties.java │ │ │ ├── ServerPropertiesTest.java │ │ │ ├── Ssl.java │ │ │ └── SystemObject.java │ │ ├── distribution/ │ │ │ └── TermResultDistributorImplTest.java │ │ ├── env/ │ │ │ └── ArthasEnvironmentTest.java │ │ ├── mcp/ │ │ │ └── tool/ │ │ │ └── function/ │ │ │ └── basic1000/ │ │ │ └── ViewFileToolTest.java │ │ ├── security/ │ │ │ └── SecurityAuthenticatorImplTest.java │ │ ├── server/ │ │ │ └── ArthasBootstrapTest.java │ │ ├── shell/ │ │ │ ├── cli/ │ │ │ │ └── impl/ │ │ │ │ └── CliTokenImplTest.java │ │ │ ├── command/ │ │ │ │ └── internal/ │ │ │ │ └── GrepHandlerTest.java │ │ │ ├── system/ │ │ │ │ └── impl/ │ │ │ │ └── ProcessImplConcurrencyTest.java │ │ │ └── term/ │ │ │ └── impl/ │ │ │ └── http/ │ │ │ └── api/ │ │ │ └── HttpApiHandlerTest.java │ │ ├── testtool/ │ │ │ └── TestUtils.java │ │ ├── util/ │ │ │ ├── ArrayUtilsTest.java │ │ │ ├── ArthasCheckUtilsTest.java │ │ │ ├── DateUtilsTest.java │ │ │ ├── DecompilerTest.java │ │ │ ├── FileUtilsTest.java │ │ │ ├── IPUtilsTest.java │ │ │ ├── LogUtilTest.java │ │ │ ├── LongStackTest.java │ │ │ ├── RegexCacheManagerTest.java │ │ │ ├── StringUtilsTest.java │ │ │ ├── TokenUtilsTest.java │ │ │ ├── TypeRenderUtilsTest.java │ │ │ └── matcher/ │ │ │ ├── EqualsMatcherTest.java │ │ │ ├── FalseMatcherTest.java │ │ │ ├── RegexMatcherTest.java │ │ │ ├── TrueMatcherTest.java │ │ │ └── WildcardMatcherTest.java │ │ └── view/ │ │ └── ObjectViewTest.java │ └── resources/ │ ├── logback-test.xml │ └── logback.xml ├── integration-test/ │ └── telnet-stop-leak/ │ ├── README.md │ ├── arthas_telnet.exp │ ├── commands.txt │ └── run_telnet_stop_leak_test.py ├── labs/ │ ├── README.md │ ├── arthas-grpc-server/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── taobao/ │ │ │ │ └── arthas/ │ │ │ │ └── grpc/ │ │ │ │ └── server/ │ │ │ │ ├── ArthasGrpcBootstrap.java │ │ │ │ ├── ArthasGrpcServer.java │ │ │ │ ├── handler/ │ │ │ │ │ ├── GrpcDispatcher.java │ │ │ │ │ ├── GrpcRequest.java │ │ │ │ │ ├── GrpcResponse.java │ │ │ │ │ ├── Http2FrameRequest.java │ │ │ │ │ ├── Http2Handler.java │ │ │ │ │ ├── StreamObserver.java │ │ │ │ │ ├── annotation/ │ │ │ │ │ │ ├── GrpcMethod.java │ │ │ │ │ │ └── GrpcService.java │ │ │ │ │ ├── constant/ │ │ │ │ │ │ └── GrpcInvokeTypeEnum.java │ │ │ │ │ └── executor/ │ │ │ │ │ ├── AbstractGrpcExecutor.java │ │ │ │ │ ├── BiStreamExecutor.java │ │ │ │ │ ├── ClientStreamExecutor.java │ │ │ │ │ ├── GrpcExecutor.java │ │ │ │ │ ├── GrpcExecutorFactory.java │ │ │ │ │ ├── ServerStreamExecutor.java │ │ │ │ │ └── UnaryExecutor.java │ │ │ │ ├── service/ │ │ │ │ │ ├── ArthasSampleService.java │ │ │ │ │ └── impl/ │ │ │ │ │ └── ArthasSampleServiceImpl.java │ │ │ │ └── utils/ │ │ │ │ ├── ByteUtil.java │ │ │ │ └── ReflectUtil.java │ │ │ └── proto/ │ │ │ ├── arthasGrpc.proto │ │ │ └── arthasUnittest.proto │ │ └── test/ │ │ └── java/ │ │ └── unittest/ │ │ └── grpc/ │ │ ├── GrpcTest.java │ │ └── service/ │ │ ├── ArthasUnittestService.java │ │ └── impl/ │ │ └── ArthasUnittestServiceImpl.java │ ├── arthas-grpc-web-proxy/ │ │ ├── README.md │ │ ├── pom.xml │ │ ├── src/ │ │ │ ├── main/ │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── taobao/ │ │ │ │ │ └── arthas/ │ │ │ │ │ └── grpcweb/ │ │ │ │ │ ├── grpc/ │ │ │ │ │ │ ├── DemoBootstrap.java │ │ │ │ │ │ ├── distribution/ │ │ │ │ │ │ │ └── GrpcResultDistributorImpl.java │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ ├── EnhancerRequestModel.java │ │ │ │ │ │ │ ├── WatchRequestModel.java │ │ │ │ │ │ │ └── WatchResponseModel.java │ │ │ │ │ │ ├── objectUtils/ │ │ │ │ │ │ │ ├── ComplexObject.java │ │ │ │ │ │ │ └── JavaObjectConverter.java │ │ │ │ │ │ ├── observer/ │ │ │ │ │ │ │ ├── ArthasStreamObserver.java │ │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ │ ├── ArthasStreamObserverImpl.java │ │ │ │ │ │ │ └── GrpcProcess.java │ │ │ │ │ │ ├── server/ │ │ │ │ │ │ │ ├── GrpcServer.java │ │ │ │ │ │ │ └── httpServer/ │ │ │ │ │ │ │ ├── NettyHttpInitializer.java │ │ │ │ │ │ │ ├── NettyHttpServer.java │ │ │ │ │ │ │ └── NettyHttpStaticFileHandler.java │ │ │ │ │ │ ├── service/ │ │ │ │ │ │ │ ├── GrpcJobController.java │ │ │ │ │ │ │ ├── ObjectService.java │ │ │ │ │ │ │ ├── PwdCommandService.java │ │ │ │ │ │ │ ├── SystemPropertyCommandService.java │ │ │ │ │ │ │ ├── WatchCommandService.java │ │ │ │ │ │ │ └── advisor/ │ │ │ │ │ │ │ ├── AdviceListenerManager.java │ │ │ │ │ │ │ ├── Enhancer.java │ │ │ │ │ │ │ ├── SpyImpl.java │ │ │ │ │ │ │ └── WatchRpcAdviceListener.java │ │ │ │ │ │ └── view/ │ │ │ │ │ │ ├── GrpcEnhancerView.java │ │ │ │ │ │ ├── GrpcMessageView.java │ │ │ │ │ │ ├── GrpcPwdView.java │ │ │ │ │ │ ├── GrpcResultView.java │ │ │ │ │ │ ├── GrpcResultViewResolver.java │ │ │ │ │ │ ├── GrpcStatusView.java │ │ │ │ │ │ ├── GrpcSystemPropertyView.java │ │ │ │ │ │ └── GrpcWatchView.java │ │ │ │ │ └── proxy/ │ │ │ │ │ ├── CorsUtils.java │ │ │ │ │ ├── GrpcServiceConnectionManager.java │ │ │ │ │ ├── GrpcWebClientInterceptor.java │ │ │ │ │ ├── GrpcWebRequestHandler.java │ │ │ │ │ ├── MessageDeframer.java │ │ │ │ │ ├── MessageFramer.java │ │ │ │ │ ├── MessageUtils.java │ │ │ │ │ ├── MetadataUtil.java │ │ │ │ │ ├── SendGrpcWebResponse.java │ │ │ │ │ ├── SingleHttpChunkedInput.java │ │ │ │ │ └── server/ │ │ │ │ │ ├── GrpcWebProxyHandler.java │ │ │ │ │ ├── GrpcWebProxyServer.java │ │ │ │ │ └── GrpcWebProxyServerInitializer.java │ │ │ │ └── proto/ │ │ │ │ ├── ArthasServices.proto │ │ │ │ ├── echo.proto │ │ │ │ ├── greeter.proto │ │ │ │ └── helloworld.proto │ │ │ └── test/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── taobao/ │ │ │ │ └── arthas/ │ │ │ │ └── grpcweb/ │ │ │ │ ├── grpc/ │ │ │ │ │ └── service/ │ │ │ │ │ └── JavaObjectConverterTest.java │ │ │ │ └── proxy/ │ │ │ │ └── server/ │ │ │ │ ├── CorsUtilsTest.java │ │ │ │ ├── GrpcWebProxyServerTest.java │ │ │ │ ├── MessageDeframerTest.java │ │ │ │ ├── MessageUtilsTest.java │ │ │ │ ├── StartGrpcTest.java │ │ │ │ ├── StartGrpcWebProxyTest.java │ │ │ │ └── grpcService/ │ │ │ │ ├── EchoImpl.java │ │ │ │ ├── GreeterService.java │ │ │ │ └── HelloImpl.java │ │ │ └── proto/ │ │ │ ├── echo.proto │ │ │ ├── greeter.proto │ │ │ └── helloworld.proto │ │ └── ui/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── babel.config.js │ │ ├── jsconfig.json │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ ├── src/ │ │ │ ├── App.vue │ │ │ ├── assets/ │ │ │ │ └── proto/ │ │ │ │ ├── ArthasServices.proto │ │ │ │ ├── ArthasServices_grpc_web_pb.js │ │ │ │ └── ArthasServices_pb.js │ │ │ ├── components/ │ │ │ │ └── DemoUI.vue │ │ │ ├── main.js │ │ │ ├── router/ │ │ │ │ ├── index.js │ │ │ │ └── routes.js │ │ │ └── view/ │ │ │ ├── pwdView.vue │ │ │ ├── syspropView.vue │ │ │ ├── vmtoolView.vue │ │ │ └── watchView.vue │ │ └── vue.config.js │ ├── arthas-jfr-backend/ │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── .mvn/ │ │ │ └── wrapper/ │ │ │ └── maven-wrapper.properties │ │ ├── README.md │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── example/ │ │ │ │ └── jfranalyzerbackend/ │ │ │ │ ├── JfrAnalyzerBackendApplication.java │ │ │ │ ├── config/ │ │ │ │ │ ├── ArthasConfig.java │ │ │ │ │ ├── CorsConfig.java │ │ │ │ │ └── Result.java │ │ │ │ ├── controller/ │ │ │ │ │ ├── FileController.java │ │ │ │ │ └── JFRAnalysisController.java │ │ │ │ ├── dto/ │ │ │ │ │ └── FileView.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── PerfDimensionFactory.java │ │ │ │ │ ├── ProfileDimension.java │ │ │ │ │ └── shared/ │ │ │ │ │ ├── BaseEntity.java │ │ │ │ │ └── file/ │ │ │ │ │ ├── BaseFileEntity.java │ │ │ │ │ ├── DeletedFileEntity.java │ │ │ │ │ └── FileEntity.java │ │ │ │ ├── enums/ │ │ │ │ │ ├── CommonErrorCode.java │ │ │ │ │ ├── EventConstant.java │ │ │ │ │ ├── FileType.java │ │ │ │ │ ├── ServerErrorCode.java │ │ │ │ │ └── Unit.java │ │ │ │ ├── exception/ │ │ │ │ │ ├── CommonException.java │ │ │ │ │ ├── ErrorCode.java │ │ │ │ │ ├── ErrorCodeAccessor.java │ │ │ │ │ ├── ErrorCodeException.java │ │ │ │ │ ├── ExceptionFactory.java │ │ │ │ │ └── ProfileAnalysisException.java │ │ │ │ ├── extractor/ │ │ │ │ │ ├── AllocatedMemoryExtractor.java │ │ │ │ │ ├── AllocationsExtractor.java │ │ │ │ │ ├── BaseValueExtractor.java │ │ │ │ │ ├── CPUSampleExtractor.java │ │ │ │ │ ├── CPUTimeExtractor.java │ │ │ │ │ ├── ClassLoadCountExtractor.java │ │ │ │ │ ├── ClassLoadWallTimeExtractor.java │ │ │ │ │ ├── CountExtractor.java │ │ │ │ │ ├── EventVisitor.java │ │ │ │ │ ├── Extractor.java │ │ │ │ │ ├── FileIOTimeExtractor.java │ │ │ │ │ ├── FileReadExtractor.java │ │ │ │ │ ├── FileWriteExtractor.java │ │ │ │ │ ├── JFRAnalysisContext.java │ │ │ │ │ ├── NativeExecutionExtractor.java │ │ │ │ │ ├── SocketReadSizeExtractor.java │ │ │ │ │ ├── SocketReadTimeExtractor.java │ │ │ │ │ ├── SocketWriteSizeExtractor.java │ │ │ │ │ ├── SocketWriteTimeExtractor.java │ │ │ │ │ ├── SynchronizationExtractor.java │ │ │ │ │ ├── ThreadParkExtractor.java │ │ │ │ │ ├── ThreadSleepTimeExtractor.java │ │ │ │ │ └── WallClockExtractor.java │ │ │ │ ├── model/ │ │ │ │ │ ├── AnalysisResult.java │ │ │ │ │ ├── BaseTaskResult.java │ │ │ │ │ ├── Desc.java │ │ │ │ │ ├── DimensionResult.java │ │ │ │ │ ├── Filter.java │ │ │ │ │ ├── Frame.java │ │ │ │ │ ├── JavaFrame.java │ │ │ │ │ ├── JavaMethod.java │ │ │ │ │ ├── JavaThread.java │ │ │ │ │ ├── JavaThreadCPUTime.java │ │ │ │ │ ├── LeafPerfDimension.java │ │ │ │ │ ├── Method.java │ │ │ │ │ ├── PerfDimension.java │ │ │ │ │ ├── Problem.java │ │ │ │ │ ├── StackTrace.java │ │ │ │ │ ├── Task.java │ │ │ │ │ ├── TaskAllocatedMemory.java │ │ │ │ │ ├── TaskAllocations.java │ │ │ │ │ ├── TaskCPUTime.java │ │ │ │ │ ├── TaskCount.java │ │ │ │ │ ├── TaskData.java │ │ │ │ │ ├── TaskSum.java │ │ │ │ │ ├── jfr/ │ │ │ │ │ │ ├── EventType.java │ │ │ │ │ │ ├── RecordedClass.java │ │ │ │ │ │ ├── RecordedEvent.java │ │ │ │ │ │ ├── RecordedFrame.java │ │ │ │ │ │ ├── RecordedMethod.java │ │ │ │ │ │ ├── RecordedStackTrace.java │ │ │ │ │ │ └── RecordedThread.java │ │ │ │ │ └── symbol/ │ │ │ │ │ ├── SymbolBase.java │ │ │ │ │ └── SymbolTable.java │ │ │ │ ├── repository/ │ │ │ │ │ ├── DeletedFileRepo.java │ │ │ │ │ └── FileRepo.java │ │ │ │ ├── request/ │ │ │ │ │ └── AnalysisRequest.java │ │ │ │ ├── service/ │ │ │ │ │ ├── FileService.java │ │ │ │ │ ├── JFRAnalysisService.java │ │ │ │ │ ├── JFRAnalyzer.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── FileServiceImpl.java │ │ │ │ │ ├── JFRAnalysisServiceImpl.java │ │ │ │ │ └── JFRAnalyzerImpl.java │ │ │ │ ├── util/ │ │ │ │ │ ├── DimensionBuilder.java │ │ │ │ │ ├── FileViewConverter.java │ │ │ │ │ ├── GCUtil.java │ │ │ │ │ ├── PagingRequest.java │ │ │ │ │ ├── PathSecurityUtil.java │ │ │ │ │ ├── StackTraceUtil.java │ │ │ │ │ └── TimeUtil.java │ │ │ │ └── vo/ │ │ │ │ ├── FlameGraph.java │ │ │ │ ├── GraphBase.java │ │ │ │ ├── Metadata.java │ │ │ │ └── PageView.java │ │ │ └── resources/ │ │ │ └── application.yml │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── example/ │ │ └── jfranalyzerbackend/ │ │ └── JfrAnalyzerBackendApplicationTests.java │ ├── arthas-jfr-frontend/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── pom.xml │ │ ├── public/ │ │ │ └── flame-graph/ │ │ │ ├── flame-graph-class.js │ │ │ ├── flame-graph-component.js │ │ │ └── flame-graph-core.js │ │ ├── src/ │ │ │ ├── App.tsx │ │ │ ├── components/ │ │ │ │ ├── FileTable/ │ │ │ │ │ ├── FileTable.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── FileUpload/ │ │ │ │ │ ├── FileUpload.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── FlameGraph/ │ │ │ │ ├── FlameStats.tsx │ │ │ │ ├── ReactFlameGraphWrapper.tsx │ │ │ │ ├── flame-graph-class.js │ │ │ │ ├── flame-graph-component.js │ │ │ │ └── flame-graph-core.js │ │ │ ├── global.less │ │ │ ├── hooks/ │ │ │ │ └── useWindowSize.ts │ │ │ ├── layouts/ │ │ │ │ └── BasicLayout.tsx │ │ │ ├── main.tsx │ │ │ ├── pages/ │ │ │ │ ├── Analysis/ │ │ │ │ │ ├── Analysis.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── Home/ │ │ │ │ ├── Home.tsx │ │ │ │ └── index.tsx │ │ │ ├── services/ │ │ │ │ ├── api.ts │ │ │ │ ├── fileService.ts │ │ │ │ ├── jfr.ts │ │ │ │ └── jfrService.ts │ │ │ ├── stores/ │ │ │ │ └── FileContext.tsx │ │ │ ├── types/ │ │ │ │ └── global.d.ts │ │ │ └── utils/ │ │ │ ├── color.ts │ │ │ ├── format.ts │ │ │ └── formatFlamegraph.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.node.json │ │ └── vite.config.ts │ └── cluster-management/ │ ├── README.md │ ├── native-agent/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── arthas/ │ │ │ └── nat/ │ │ │ └── agent/ │ │ │ ├── core/ │ │ │ │ ├── ArthasHomeHandler.java │ │ │ │ ├── JvmAttachmentHandler.java │ │ │ │ ├── ListJvmProcessHandler.java │ │ │ │ └── MonitorTargetPidHandler.java │ │ │ ├── factory/ │ │ │ │ └── NativeAgentRegistryFactory.java │ │ │ ├── registry/ │ │ │ │ ├── NativeAgentRegistry.java │ │ │ │ └── impl/ │ │ │ │ ├── EtcdNativeAgentRegistry.java │ │ │ │ └── ZookeeperNativeAgentRegistry.java │ │ │ └── server/ │ │ │ ├── NativeAgentBootstrap.java │ │ │ ├── dto/ │ │ │ │ └── JavaProcessInfoDTO.java │ │ │ ├── forward/ │ │ │ │ ├── ForwardClientSocketClientHandler.java │ │ │ │ ├── LocalFrameHandler.java │ │ │ │ └── RelayHandler.java │ │ │ └── http/ │ │ │ ├── HttpNativeAgentHandler.java │ │ │ └── HttpRequestHandler.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── arthas/ │ │ │ └── com.alibaba.arthas.native.agent.NativeAgentRegistryFactory │ │ └── log4j.properties │ ├── native-agent-common/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── arthas/ │ │ └── nat/ │ │ └── agent/ │ │ └── common/ │ │ ├── constants/ │ │ │ └── NativeAgentConstants.java │ │ ├── dto/ │ │ │ └── NativeAgentInfoDTO.java │ │ ├── handler/ │ │ │ └── HttpOptionRequestHandler.java │ │ └── utils/ │ │ ├── OkHttpUtil.java │ │ └── WelcomeUtil.java │ ├── native-agent-management-web/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── arthas/ │ │ │ └── nat/ │ │ │ └── agent/ │ │ │ └── management/ │ │ │ └── web/ │ │ │ ├── discovery/ │ │ │ │ ├── NativeAgentProxyDiscovery.java │ │ │ │ └── impl/ │ │ │ │ ├── EtcdNativeAgentProxyDiscovery.java │ │ │ │ └── ZookeeperNativeAgentProxyDiscovery.java │ │ │ ├── factory/ │ │ │ │ └── NativeAgentProxyDiscoveryFactory.java │ │ │ └── server/ │ │ │ ├── NativeAgentManagementWebBootstrap.java │ │ │ └── http/ │ │ │ ├── HttpNativeAgentHandler.java │ │ │ ├── HttpNativeAgentProxyHandler.java │ │ │ ├── HttpRequestHandler.java │ │ │ └── HttpResourcesHandler.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── arthas/ │ │ │ └── com.alibaba.arthas.native.agent.management.web.NativeAgentProxyDiscoveryFactory │ │ ├── log4j.properties │ │ └── native-agent/ │ │ ├── agents.html │ │ ├── console.html │ │ ├── index.html │ │ ├── processes.html │ │ └── static/ │ │ ├── css/ │ │ │ ├── console-991af56b.css │ │ │ ├── main-c782b056.css │ │ │ └── xterm-2831e07f.css │ │ └── js/ │ │ ├── Agent-7549a395.js │ │ ├── agents-b07f3b75.js │ │ ├── axios-1e59ba81.js │ │ ├── console-35a3b78f.js │ │ ├── main-38ee3337.js │ │ ├── nativeAgent-1df0817e.js │ │ └── processes-c1a6eec6.js │ └── native-agent-proxy/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── arthas/ │ │ └── nat/ │ │ └── agent/ │ │ └── proxy/ │ │ ├── discovery/ │ │ │ ├── NativeAgentDiscovery.java │ │ │ └── impl/ │ │ │ ├── EtcdNativeAgentDiscovery.java │ │ │ └── ZookeeperNativeAgentDiscovery.java │ │ ├── factory/ │ │ │ ├── NativeAgentDiscoveryFactory.java │ │ │ └── NativeAgentProxyRegistryFactory.java │ │ ├── registry/ │ │ │ ├── NativeAgentProxyRegistry.java │ │ │ └── impl/ │ │ │ ├── EtcdNativeAgentProxyRegistry.java │ │ │ └── ZookeeperNativeAgentProxyRegistry.java │ │ └── server/ │ │ ├── NativeAgentProxyBootstrap.java │ │ └── handler/ │ │ ├── RequestHandler.java │ │ ├── http/ │ │ │ ├── HttpNativeAgentHandler.java │ │ │ └── HttpRequestHandler.java │ │ └── ws/ │ │ ├── WebSocketClientHandler.java │ │ └── WsRequestHandler.java │ └── resources/ │ ├── META-INF/ │ │ └── arthas/ │ │ ├── com.alibaba.arthas.native.agent.proxy.NativeAgentDiscoveryFactory │ │ └── com.alibaba.arthas.native.agent.proxy.NativeAgentProxyRegistryFactory │ └── log4j.properties ├── math-game/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── demo/ │ └── MathGame.java ├── memorycompiler/ │ ├── LICENSE │ ├── README.md │ ├── pom.xml │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── taobao/ │ │ └── arthas/ │ │ └── compiler/ │ │ ├── ClassUriWrapper.java │ │ ├── CustomJavaFileObject.java │ │ ├── DynamicClassLoader.java │ │ ├── DynamicCompiler.java │ │ ├── DynamicCompilerException.java │ │ ├── DynamicJavaFileManager.java │ │ ├── MemoryByteCode.java │ │ ├── PackageInternalsFinder.java │ │ └── StringSource.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── taobao/ │ │ └── arthas/ │ │ └── compiler/ │ │ ├── DynamicCompilerTest.java │ │ └── PackageInternalsFinderTest.java │ └── resources/ │ ├── TestLogger1.java │ ├── TestLogger2.java │ └── file/ │ ├── test folder/ │ │ └── file.txt │ └── 测试目录/ │ └── file.txt ├── mvnw ├── mvnw.cmd ├── packaging/ │ ├── pom.xml │ └── src/ │ ├── deb/ │ │ ├── control/ │ │ │ └── control │ │ ├── copyright/ │ │ │ └── copyright.1 │ │ └── man1/ │ │ └── arthas.1 │ └── main/ │ └── assembly/ │ ├── assembly-doc.xml │ └── assembly.xml ├── pom.xml ├── site/ │ ├── .gitignore │ ├── .prettierignore │ ├── .prettierrc.json │ ├── README.md │ ├── docs/ │ │ ├── .vuepress/ │ │ │ ├── client.js │ │ │ ├── config.js │ │ │ ├── configs/ │ │ │ │ ├── head/ │ │ │ │ │ ├── head.js │ │ │ │ │ └── index.js │ │ │ │ ├── index.js │ │ │ │ ├── navbar/ │ │ │ │ │ ├── en.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── zh.js │ │ │ │ └── sidebar/ │ │ │ │ ├── en.js │ │ │ │ ├── index.js │ │ │ │ └── zh.js │ │ │ ├── oldContributorsData.json │ │ │ ├── plugins/ │ │ │ │ └── vuepress-plugin-loadVersion/ │ │ │ │ └── index.js │ │ │ ├── public/ │ │ │ │ └── doc/ │ │ │ │ └── arthas-tutorials.html │ │ │ ├── styles/ │ │ │ │ └── index.scss │ │ │ └── theme/ │ │ │ ├── components/ │ │ │ │ ├── AutoLink.vue │ │ │ │ ├── Badge.vue │ │ │ │ ├── Home.vue │ │ │ │ ├── HomeBadges.vue │ │ │ │ ├── HomeFeatures.vue │ │ │ │ ├── HomeHero.vue │ │ │ │ ├── HomeUserBoards.vue │ │ │ │ ├── NavbarBrand.vue │ │ │ │ ├── NavbarDropdown.vue │ │ │ │ ├── Page.vue │ │ │ │ ├── RightMenu.vue │ │ │ │ ├── UserBoard.vue │ │ │ │ └── icons/ │ │ │ │ ├── Fork.vue │ │ │ │ ├── GitHub.vue │ │ │ │ ├── Star.vue │ │ │ │ └── Translate.vue │ │ │ └── index.js │ │ ├── README.md │ │ ├── doc/ │ │ │ ├── README.md │ │ │ ├── advanced-use.md │ │ │ ├── advice-class.md │ │ │ ├── agent.md │ │ │ ├── arthas-properties.md │ │ │ ├── arthas3.md │ │ │ ├── async.md │ │ │ ├── auth.md │ │ │ ├── base64.md │ │ │ ├── batch-support.md │ │ │ ├── cat.md │ │ │ ├── classloader.md │ │ │ ├── cls.md │ │ │ ├── commands.md │ │ │ ├── contact-us.md │ │ │ ├── dashboard.md │ │ │ ├── docker.md │ │ │ ├── download.md │ │ │ ├── dump.md │ │ │ ├── echo.md │ │ │ ├── faq.md │ │ │ ├── getstatic.md │ │ │ ├── grep.md │ │ │ ├── groovy.md │ │ │ ├── heapdump.md │ │ │ ├── help.md │ │ │ ├── history.md │ │ │ ├── http-api.md │ │ │ ├── idea-plugin.md │ │ │ ├── install-detail.md │ │ │ ├── jad.md │ │ │ ├── jfr.md │ │ │ ├── jvm.md │ │ │ ├── keymap.md │ │ │ ├── logger.md │ │ │ ├── manual-install.md │ │ │ ├── mbean.md │ │ │ ├── mc.md │ │ │ ├── mcp-server.md │ │ │ ├── memory.md │ │ │ ├── monitor.md │ │ │ ├── ognl.md │ │ │ ├── options.md │ │ │ ├── perfcounter.md │ │ │ ├── profiler.md │ │ │ ├── pwd.md │ │ │ ├── quick-start.md │ │ │ ├── quit.md │ │ │ ├── redefine.md │ │ │ ├── release-notes.md │ │ │ ├── reset.md │ │ │ ├── retransform.md │ │ │ ├── save-log.md │ │ │ ├── sc.md │ │ │ ├── session.md │ │ │ ├── sm.md │ │ │ ├── spring-boot-starter.md │ │ │ ├── stack.md │ │ │ ├── start-arthas.md │ │ │ ├── stop.md │ │ │ ├── sysenv.md │ │ │ ├── sysprop.md │ │ │ ├── tee.md │ │ │ ├── thread.md │ │ │ ├── trace.md │ │ │ ├── tt.md │ │ │ ├── tunnel.md │ │ │ ├── version.md │ │ │ ├── vmoption.md │ │ │ ├── vmtool.md │ │ │ ├── watch.md │ │ │ └── web-console.md │ │ └── en/ │ │ ├── README.md │ │ └── doc/ │ │ ├── README.md │ │ ├── advanced-use.md │ │ ├── advice-class.md │ │ ├── agent.md │ │ ├── arthas-properties.md │ │ ├── async.md │ │ ├── auth.md │ │ ├── base64.md │ │ ├── batch-support.md │ │ ├── cat.md │ │ ├── classloader.md │ │ ├── cls.md │ │ ├── commands.md │ │ ├── contact-us.md │ │ ├── dashboard.md │ │ ├── docker.md │ │ ├── download.md │ │ ├── dump.md │ │ ├── echo.md │ │ ├── faq.md │ │ ├── getstatic.md │ │ ├── grep.md │ │ ├── groovy.md │ │ ├── heapdump.md │ │ ├── help.md │ │ ├── history.md │ │ ├── http-api.md │ │ ├── idea-plugin.md │ │ ├── install-detail.md │ │ ├── jad.md │ │ ├── jfr.md │ │ ├── jvm.md │ │ ├── keymap.md │ │ ├── logger.md │ │ ├── manual-install.md │ │ ├── mbean.md │ │ ├── mc.md │ │ ├── mcp-server.md │ │ ├── memory.md │ │ ├── monitor.md │ │ ├── ognl.md │ │ ├── options.md │ │ ├── perfcounter.md │ │ ├── profiler.md │ │ ├── pwd.md │ │ ├── quick-start.md │ │ ├── quit.md │ │ ├── redefine.md │ │ ├── release-notes.md │ │ ├── reset.md │ │ ├── retransform.md │ │ ├── save-log.md │ │ ├── sc.md │ │ ├── session.md │ │ ├── sm.md │ │ ├── spring-boot-starter.md │ │ ├── stack.md │ │ ├── start-arthas.md │ │ ├── stop.md │ │ ├── sysenv.md │ │ ├── sysprop.md │ │ ├── tee.md │ │ ├── thread.md │ │ ├── trace.md │ │ ├── tt.md │ │ ├── tunnel.md │ │ ├── version.md │ │ ├── vmoption.md │ │ ├── vmtool.md │ │ ├── watch.md │ │ └── web-console.md │ ├── package.json │ └── pom.xml ├── skills/ │ ├── SKILL.md │ ├── cpu-high/ │ │ └── SKILL.md │ ├── eagleeye-traceid/ │ │ └── SKILL.md │ └── spring-context/ │ └── SKILL.md ├── spy/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── java/ │ └── arthas/ │ └── SpyAPI.java ├── testcase/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── alibaba/ │ └── arthas/ │ ├── Pojo.java │ ├── Test.java │ └── Type.java ├── tunnel-client/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── alibaba/ │ └── arthas/ │ └── tunnel/ │ └── client/ │ ├── ChannelUtils.java │ ├── ForwardClient.java │ ├── ForwardClientSocketClientHandler.java │ ├── LocalFrameHandler.java │ ├── ProxyClient.java │ ├── RelayHandler.java │ ├── TunnelClient.java │ └── TunnelClientSocketClientHandler.java ├── tunnel-common/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── arthas/ │ │ └── tunnel/ │ │ └── common/ │ │ ├── MethodConstants.java │ │ ├── SimpleHttpResponse.java │ │ └── URIConstans.java │ └── test/ │ └── java/ │ └── com/ │ └── alibaba/ │ └── arthas/ │ └── tunnel/ │ └── common/ │ └── SimpleHttpResponseTest.java ├── tunnel-server/ │ ├── README.md │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── arthas/ │ │ │ └── tunnel/ │ │ │ └── server/ │ │ │ ├── AgentClusterInfo.java │ │ │ ├── AgentInfo.java │ │ │ ├── ChannelUtils.java │ │ │ ├── ClientConnectionInfo.java │ │ │ ├── RelayHandler.java │ │ │ ├── TunnelServer.java │ │ │ ├── TunnelSocketFrameHandler.java │ │ │ ├── TunnelSocketServerInitializer.java │ │ │ ├── app/ │ │ │ │ ├── ArthasTunnelApplication.java │ │ │ │ ├── WebSecurityConfig.java │ │ │ │ ├── configuration/ │ │ │ │ │ ├── ArthasProperties.java │ │ │ │ │ ├── EmbeddedRedisConfiguration.java │ │ │ │ │ ├── TunnelClusterStoreConfiguration.java │ │ │ │ │ └── TunnelServerConfiguration.java │ │ │ │ └── web/ │ │ │ │ ├── ClusterController.java │ │ │ │ ├── DetailAPIController.java │ │ │ │ ├── ProxyController.java │ │ │ │ └── StatController.java │ │ │ ├── cluster/ │ │ │ │ ├── InMemoryClusterStore.java │ │ │ │ ├── RedisTunnelClusterStore.java │ │ │ │ └── TunnelClusterStore.java │ │ │ ├── endpoint/ │ │ │ │ ├── ArthasEndPointAutoconfiguration.java │ │ │ │ └── ArthasEndpoint.java │ │ │ └── utils/ │ │ │ ├── HttpUtils.java │ │ │ └── InetAddressUtil.java │ │ └── resources/ │ │ └── application.properties │ └── test/ │ └── java/ │ └── com/ │ └── alibaba/ │ └── arthas/ │ └── tunnel/ │ └── server/ │ ├── URITest.java │ ├── app/ │ │ └── ArthasTunnelApplicationTest.java │ └── utils/ │ └── HttpUtilsTest.java └── web-ui/ ├── arthasWebConsole/ │ ├── .gitignore │ ├── README.md │ ├── README_ZH.md │ ├── all/ │ │ ├── env.d.ts │ │ ├── native-agent/ │ │ │ ├── Agent.d.ts │ │ │ ├── Process.d.ts │ │ │ ├── agents.html │ │ │ ├── console.html │ │ │ ├── index.html │ │ │ ├── processes.html │ │ │ └── src/ │ │ │ ├── Agent.vue │ │ │ ├── Process.vue │ │ │ ├── agents.ts │ │ │ ├── console.ts │ │ │ ├── main.css │ │ │ ├── main.ts │ │ │ └── processes.ts │ │ ├── share/ │ │ │ ├── component/ │ │ │ │ └── Console.vue │ │ │ └── main.css │ │ ├── tunnel/ │ │ │ ├── agents.html │ │ │ ├── apps.html │ │ │ ├── index.html │ │ │ ├── src/ │ │ │ │ ├── Agent.vue │ │ │ │ ├── Apps.vue │ │ │ │ ├── agents.ts │ │ │ │ ├── apps.ts │ │ │ │ ├── main.css │ │ │ │ └── main.ts │ │ │ └── tunnel.d.ts │ │ └── ui/ │ │ ├── index.html │ │ ├── src/ │ │ │ ├── main.css │ │ │ └── main.ts │ │ └── ui/ │ │ ├── index.html │ │ └── src/ │ │ ├── App.vue │ │ ├── arthas.d.ts │ │ ├── components/ │ │ │ ├── NavHeader.vue │ │ │ ├── charts/ │ │ │ │ ├── Bar.vue │ │ │ │ ├── Base.vue │ │ │ │ └── Line.vue │ │ │ ├── dialog/ │ │ │ │ ├── ErrDialog.vue │ │ │ │ ├── InputDialog.vue │ │ │ │ ├── SuccessDialog.vue │ │ │ │ └── WarnDialog.vue │ │ │ ├── input/ │ │ │ │ ├── AutoComplete.vue │ │ │ │ ├── ClassInput.vue │ │ │ │ ├── MethodInput.vue │ │ │ │ ├── PlayStop.vue │ │ │ │ ├── SwitchInput.vue │ │ │ │ └── TodoList.vue │ │ │ ├── routeTo/ │ │ │ │ └── SelectCmd.vue │ │ │ └── show/ │ │ │ ├── CmdResMenu.vue │ │ │ ├── Enhancer.vue │ │ │ ├── OptionConfigMenu.vue │ │ │ ├── ResTable.vue │ │ │ └── Tree.vue │ │ ├── echart.d.ts │ │ ├── machines/ │ │ │ ├── consoleMachine.ts │ │ │ ├── perRequestMachine.ts │ │ │ └── transformConfigMachine.ts │ │ ├── main.ts │ │ ├── router/ │ │ │ ├── index.ts │ │ │ └── routes.ts │ │ ├── stores/ │ │ │ ├── fetch.ts │ │ │ └── public.ts │ │ ├── utils/ │ │ │ └── transform.ts │ │ └── views/ │ │ ├── Asynchronize.vue │ │ ├── Config.vue │ │ ├── Console.vue │ │ ├── DashBoard.vue │ │ ├── Synchronize.vue │ │ ├── async/ │ │ │ ├── Monitor.vue │ │ │ ├── Profiler.vue │ │ │ ├── Stack.vue │ │ │ ├── Trace.vue │ │ │ ├── Tt.vue │ │ │ └── Watch.vue │ │ ├── config/ │ │ │ ├── Jvm.vue │ │ │ ├── Options.vue │ │ │ ├── PerCounter.vue │ │ │ ├── Sysenv.vue │ │ │ ├── Sysprop.vue │ │ │ └── Vmoption.vue │ │ └── sync/ │ │ ├── ClassInfo.vue │ │ ├── ClassLoader.vue │ │ ├── HeapDump.vue │ │ ├── Jad.vue │ │ ├── Mbean.vue │ │ ├── Memory.vue │ │ ├── Ognl.vue │ │ ├── Reset.vue │ │ ├── Retransform.vue │ │ ├── Thread.vue │ │ └── Vmtool.vue │ ├── package.json │ ├── postcss.config.js │ ├── tailwind.config.js │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts └── pom.xml