如何退出adb logcat

28
以下终端命令可显示logcat。
$> $SDK/platform-tools/adb logcat

但是我该如何退出它以返回终端提示符? 我尝试了kill-server,exit等命令。

5个回答

51

Ctrl + C


1
这不就像是当前程序的中止吗?我在想可能还有另一种方式……如果您愿意,可以优雅地退出。 - OceanBlue
不,没有其他简单的方法……我认为这种方式非常优雅。 - Cristian
2
事情是这样的。我正在尝试通过我的应用程序读取logcat。我使用Runtime.getRuntime().exec("logcat -v time MyTag:D *:S")。一切都很好,但它就像在终端上一样等待更多的行。参考:http://stackoverflow.com/questions/7473469/read-logcat-from-app-not-working-correctly/ - OceanBlue
9
尝试使用adb logcat -d - Andrey Kamaev
@Cristian 这种方法完全将您从交互式 shell 中排除在外。我觉得这并不优雅。 - Alkanshel

25

使用 -d 选项将使您一次性运行 logcat。

adb logcat -d

不需要循环,打印出日志缓冲区中的所有日志后,命令提示符会回到原来的位置。每次使用此命令时,它总是从日志缓冲区的开头开始,除非您输入以下命令来清除日志缓冲区中的日志:

adb logcat -c

上述命令是清除logcat缓冲区中的日志。


11

我的建议:

    $> $SDK/platform-tools/adb logcat -c
    $> $SDK/platform-tools/adb logcat > log_file.txt &
    ... run your application ...
    $> $SDK/platform-tools/adb logcat -c

Logcat文档

-c  Clears (flushes) the entire log and exits.

谢谢,这真的帮了我很多。 - Tien

6

我尝试使用Meir Gerenstadt的解决方案时发现了一个问题。

adb logcat -c命令并不能真正停止logcat写入到log_file.txt文件中。

我的解决方案是:

# Clear logcat 
$> $SDK/platform-tools/adb logcat -c
# Redirect logcat to file, in background process.
$> $SDK/platform-tools/adb logcat > log_file.txt &
# Get process id of logcat background process above
$> logcat_pid=$!

... run your application ...

# Now kill the logcat background process
$> kill $logcat_pid

嗨,@Tien,我知道你要做什么,但我尝试了你的解决方案结果是:

获取logcat后台进程的进程ID

$> logcat_pid=$!“logcat_pid不可访问”
- Shih-Chan Huang

0

您可以通过使用CTRL+Z发送SIGSTP信号来暂停进程,并发出任何命令,然后要重新启动,请发出以下命令:

$> fg -1

假设您没有从终端挂起或启动任何其他后台进程。


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