使用 bash 脚本将断点传送到调试器提示符

使用 bash 脚本将断点传送到调试器提示符

我正在使用 bash 编写一个脚本,以便更容易设置断点。

我想看看是否可以使用 echo 和 pipeline 将设置断点命令发送到 java 调试器 jdb。

我串在一起的命令成功地在 jdb 中设置了断点,但随后它立即关闭了调试器。

我将断点通过管道传输到 jdb,如下......

(echo -n; sleep 5; echo "stop at MainActivity:77") | jdb -sourcepath app/src/main/java -attach localhost:7777

输出如下...

Initializing jdb ...
> Set breakpoint saf.mobilebeats2.MainActivity:77
> Input stream closed.

答案1

您可以expect按照描述使用这里

它应该在所有主要发行版的存储库中可用。您可以为其编写脚本,也可以编写单行代码,如您所见这里

这里还有它的man如果你想看一下。

这是Expect 中循环的示例。

答案2

在子 shell 的帮助下,您可以实现您的第一个想法:

( echo "stop at MainActivity:77"; cat -; ) | jdb -sourcepath app/src/main/java -attach localhost:7777

这是可行的,因为在处理 echo 命令之后,第一个 STDIN 被关闭,其次后续的 cat 等待您在 shell 上的输入。

[1]https://stackoverflow.com/a/4775964

[2]https://stackoverflow.com/a/1564754

相关内容