如何在Eclipse中停止LogCat输出的自动滚动?

44

更新:这其实是SDK工具的R14版本中的一个错误,已经在2013年10月27日发布的R15版本中得以修复。按照接受的答案建议升级到最新版本即可解决问题。

我使用Eclipse调试视图中的LogCat窗口来诊断和修复代码中的崩溃问题。我注意到,每当添加新行时(但仅在自己滚动到底部后),LogCat输出就会自动向下滚动。

如果我正在尝试阅读日志并且新的行继续在底部添加,这非常烦人,因为它会一直跳到底部,所以我需要重新向上滚动到错误位置,然后它又会跳到底部。

有没有办法让LogCat窗口停留在我放置它的位置,但在我滚动到底部时继续自动滚动?

编辑:请注意,我知道过滤器,但我不认为这是解决问题的方法。

另一个编辑:如果我从底部向上滚动足够“远”,它就不会再自动滚动了。足够远可能是5行,也可能是500行,似乎与日志中的行数有关。理想情况下,只要我距离底部至少有1行,它就会停止滚动。


你安装了哪个版本的ADT?现在已经出了R14版本,可能会更加优化。 - Moog
这种情况一直发生在我身上,但在最新版本中似乎更加严重。 - howettl
1
或者使用DDMS透视图全屏查看Logcat输出(或尽可能接近全屏)...我发现这使生活变得更轻松。 - Moog
抱歉 @Sergio,我犹豫了一下该选择哪一个,但我选择了Josephus的答案,因为解决方案表述更清晰。 - howettl
@howettl,第二个答案更好。 - Pacerier
显示剩余2条评论
9个回答

43
在右上角的LogCat选项卡中,有一个下箭头并带有一条线用于启用“滚动锁定”。在旧版本中,它是一个暂停按钮用于“暂停接收新的logcat消息”。这些步骤应该能解决问题!

注意:激活“滚动锁定”按钮会打开自动滚动(对于我们这些几乎不记得键盘上的滚动锁定键的人来说有点令人困惑)。我仍然看到这种行为:向上滚动logcat,关闭滚动锁定。消息到达我的“adb logcat”会话,但被Eclipse过滤掉。Eclipse中的Logcat显示会略微跳动(但不会到底部)。 - Colin
1
@Bojan,你需要禁用自动状态更改,因为Eclipse试图在一些聪明的IDE不应该尝试的事情上变得聪明。 - Pacerier

6
我已经成功解决了“根据滚动条位置自动启用/禁用滚动锁定”选项的问题。
操作路径为:Window > Preferences > Android > Logcat,然后取消勾选上述选项。
在我的情况下,我使用的是Eclipse + Android Developer Tools(版本号:v22.6.2-1085508)。
如果您也想使用Eclipse,请从以下链接下载完整包:http://developer.android.com/sdk/index.html。下载完成后,请下载所有可用更新,除了NDK。

6

请更新到最新版本。 新的Logcat会自动将日志过滤为应用程序特定的崩溃日志,当您通过Eclipse构建和启动应用程序时。


我正在运行R14。我正在开发的应用程序非常大,输出很多,因此查看特定于应用程序的日志仍然是一个问题。 - howettl
使用错误过滤器和标签过滤器的组合,我不明白为什么你仍然会从其他应用程序获取日志。 - josephus
我无法获取其他应用程序的日志。我正在处理的应用程序有大量的日志输出。 - howettl
你可以更改特定日志的标签以便捕获。你甚至可以在你要查找的日志文本上“搜索匹配项”。 - josephus
最后一次尝试解决您的问题 - 将adb logcat导入文本文件中(当然要应用必要的过滤器)。 adb logcat > logs.txt - josephus
我正在奖励您赏金,因为将SDK更新到最新版本(R15)是解决问题的关键。 - howettl

5

我的情况不一样。如果我向上滚动,当新的行出现在logcat中时,它不会自动向下滚动,直到我将其滚动到底部。 可能是因为Eclipse或Android SDK版本的原因。我现在正在使用最新版本。


我也在使用最新版本。也许这与我注意到的其他问题有关:如果我从底部向上滚动“足够远”,它会停止自动滚动。足够远可能是5行,也可能是500行,似乎取决于日志中有多少行。 - howettl
1
@howettl,您需要禁用自动状态更改,因为Eclipse试图在一些聪明的IDE不应该尝试的事情上变得聪明。 - Pacerier

2
Window => Preferences => Android => Logcat

取消勾选名为:

Display logcat view when there are messages from 
an application into the workspace

2
这样可以防止logcat视图自动弹出,但无法阻止其滚动。谢谢! - howettl
@Olivier,奇怪的是这个选项似乎不存在。 - Pacerier

2

您可以在shell中执行adb logcat命令,并使用终端应用程序的滚动缓冲区和滚动功能来管理logcat输出。


2
我更愿意使用Eclipse版本。如果没有猫图标,我的生产力会急剧下降:)。 - howettl
不必非此即彼。您可以同时在shell中使用logcat,而Eclipse的logcat视图也在运行。 - mportuesisf
2
我理解你的意思,但最好有一种设置方式来控制Eclipse中输出滚动的方式,而不是在两个窗口之间来回跳转。 - howettl

1

如果你只是在调试崩溃问题,点击主logcat中的红色(E)(错误)过滤器,并将过滤器选项卡设置为默认以查看应用程序报告的所有行。

当应用程序崩溃时,它会保持关闭状态,除非您选择请求重新启动。因此,logcat中的最后几行将是崩溃报告。这是我调试崩溃问题的其中一种方式。


2
这是一个有趣的解决方法,但它并不能帮助我在我不寻找错误的情况下。 - howettl

0
如果您在搜索框中输入pid:yourapp的pid(在设备选项卡的在线列下编写),它将显示您在应用程序中编写的日志。

0

我也认为自最新更新以来,它变得更“积极”了!而且当我向上滚动10行或更多行时,它实际上会停止自动滚动。

我最好的解决方案是点击您感兴趣的行。如果logcat滚动太远,您再也看不到您的行,请按ArrowUp或ArrowDown跳回您正在查看的行。


很高兴听到我不是唯一遇到这个问题的人。我不知道上下移动会反弹回所选行,这很有效,但并不是解决问题的方法。如果我向上移动一定数量,它确实会停止自动滚动,但有时候需要移动的距离相当远(远超过10行)。 - howettl
实际上我已经安装了R15,就像Josephus Villarey建议的那样。当我向上滚动至少10行时,自动滚动才会停止。O_o - cwin
是的,使用R15它需要大约10行才能停止。对于我来说,使用R14需要更多的行数(至少如此...不同的用户似乎报告了不同的结果)。 - howettl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接