Jinzhou Zhang

Results 37 comments of Jinzhou Zhang

@hengyunabc 多谢回复,关于上面几点考虑 > 1. 每一行都增强,这个生成的字节码会极速膨胀,很可能会超出jvm限制 这个问题在之前只考虑过每行都 callback 的性能问题,没有想过 JVM 限制问题。查了下每个方法限制是 64K。 如果能实现只在需要的时候,在需要的行加上 `@AtLine` 的增强,理论上是可以规避这个问题的。 > 2. 在jdk 11开始,jvm字节码的校验严格很多,@AtLine的方式增强的字节码很可能会被认为是非常的 这个问题有具体示例吗?这个 PR 我在 1.8 和 11 上都测试过,当然涉及的变量还只有 primitive type。 > 3. 对于一定要了解某行变量的情况,可以用先本地增加打印语句,编译出新的.class,再用...

@hengyunabc 麻烦再 Review 下 > 2. 如果要实现指定的 `@AtLine`,可能要直接调bytekit api,或者要写一个新的 annotation 之类的 按需增强已经实现。 > 4. 可能还要考虑类似动态trace的功能。比如watch 了x行,还要再watch y行。 https://arthas.aliyun.com/doc/trace#id9 这个功能没有做额外的处理,但是实现后测试了一下是支持的。 > 3. jdk11字节码校验,这个可能要找一些比较复杂的例子,比如在 for 循环里调用另一个复杂参数的函数 字节码校验之前有遇到具体的 case 吗?我可以来测一下。

> 感谢你的分享,请问你的实现中,是不是不支持局部变量和返回值、抛出异常同时观测? 支持同时观测,只是目前只是 OR 的关系,做不到 AND 关系(即在抛出异常的前提下,才输出每行的值)

@Mengleijin > 应该是支持同时观测的吧 是的,就是我上面说的 OR 的关系,可以同时打开 > 如果并发量比较高的情况下,这几个观察点的观察结果是不是可能是不连续的 是的,当前 instrument 的机制可以理解成在一行后执行一个 print,这个机制决定了它没有函数级别的“事务”。

@hengyunabc > * 生成的字节码会增强所有的line,这个感觉消耗太大 这部分在[最新的代码](https://github.com/alibaba/arthas/pull/2076/files#diff-5cc31ac2a6fccf44547b2752e6e8807224c4c926b99013588f9f7f3646358f35R149)只会按需增强了,watch 命令里指定 line range,如 `-l 53-55`,则只会 enhance 对应的行数,例如 `watch demo.MathGame primeFactors '{line, varMap}' -l 53-55 -x 2` 则 enhanced class 如下(jad-gui 反编译之后),只有 3 个 `atLine`: ```java...

Should be working just like what you said: ``` $ echo "word\nWord\nWORD" | sk --case smart -f 'word' word Word WORD $ echo "word\nWord\nWORD" | sk --case smart -f 'Word'...

I see. Currently only ASCII cases were considered. Will come back to this later.

@jonathandturner I am actually trying to use crossterm for window's support. But for now there are some blocking issues: - [ ] https://github.com/crossterm-rs/crossterm/issues/396 - [ ] https://github.com/crossterm-rs/crossterm/issues/397

@prabirshrestha Thanks for point out `termwiz`, I'll have a look.

@hajdamak could you please run the command with `${SHELL:-sh} -c '/bin/echo'` in your shell and check what happens? Internally skim will invoke this command.