카메라 디버깅

이 페이지에서는 카메라 HAL과 주고받는 캡처 요청 및 결과 값의 변경사항을 볼 수 있는 카메라 서비스의 디버깅 도구를 설명합니다. 카메라 서비스에는 watchdumpsys 명령어가 포함됩니다. Android 13 이상을 실행하는 기기에서 사용할 수 있는 watch 명령어를 사용해 태그 모니터링 및 액세스 시점, 열려 있는 클라이언트의 태그 모니터링 덤프 실시간 미리보기, 닫혀 있는 클라이언트에서 캐시된 덤프 보기를 제어할 수 있습니다. dumpsys 명령어를 사용하면 디버깅 정보에 액세스할 수 있지만 닫혀 있는 클라이언트의 태그 모니터링 덤프는 제공되지 않습니다.

watch 명령어

이 섹션에서는 watch 명령어를 사용하는 방법을 설명하고 예를 제공합니다.

태그 모니터링 시작

태그 모니터링을 시작하려면 다음 명령어를 사용하세요.

adb shell cmd media.camera watch start -m <tags> [-c <clients>]

예:

adb shell cmd media.camera watch start \
-m android.control.effectMode,android.control.aeMode \
-c com.google.android.GoogleCamera,com.android.chrome

인수:

  • tags: 모니터링할 태그 목록으로 쉼표로 구분되어 있습니다. 약식 3a도 사용할 수 있습니다. 여기서 3a는 AF, AE, AWB와 관련된 모든 android.control.* 태그 집합을 나타냅니다. 전체 태그 목록은 TagMonitor.cpp에서 확인하세요.
  • clients: 선택적 인수입니다. 태그가 모니터링되는 클라이언트 패키지 이름 목록으로 쉼표로 구분되어 있습니다. 클라이언트 인수가 전달되지 않거나 클라이언트 목록에 all이 있으면 모든 클라이언트를 감시합니다.

이 명령어는 열려 있는 클라이언트 및 이후 열리는 모든 클라이언트에서 태그 모니터링을 시작합니다(stop이 호출될 때까지). start가 호출되면 클라이언트가 닫힐 때 카메라 서비스에서 클라이언트의 태그 모니터링 덤프를 캐시합니다.

start가 호출되지 않는 한 카메라 서비스는 어떤 클라이언트의 태그도 모니터링하지 않으며, 태그 모니터링 덤프도 캐시하지 않습니다. clients 매개변수에 all이 전달되면 카메라 서비스가 태그를 모니터링하고 모든 클라이언트의 모니터링 덤프를 캐시합니다.

태그 모니터링 정보 덤프

태그 모니터링 정보를 덤프하려면 다음 명령어를 사용하세요.

adb shell cmd media.camera watch dump

이 명령어는 태그 모니터링 정보를 표준 출력에 덤프한 다음 종료합니다. start(또는 마지막 clear) 이후 닫힌 클라이언트로부터 캐시된 태그 모니터링 덤프와 열려 있는 클라이언트의 최신 태그 모니터링 덤프를 출력합니다.

샘플 출력:

$ adb shell cmd media.camera watch dump
Client: com.android.chrome (active)
1:com.android.chrome  f0:532642803202286ns:             REQ:android.control.aeMode: [ON] output stream ids:  0
1:com.android.chrome  f0:532642803202286ns:             REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids:  0
..
Client: com.google.android.GoogleCamera (cached)
0:com.google.android.GoogleCamera  f0:532601698728552ns:             REQ:android.control.aeMode: [ON] output stream ids:  0  3  1  2
0:com.google.android.GoogleCamera  f0:532601698728552ns:             REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids:  2  1  3  0
0:com.google.android.GoogleCamera  f0:532601698728552ns:             REQ:android.control.awbMode: [AUTO] output stream ids:  0  3  1  2
...

태그 모니터링 정보 실시간 미리보기

태그 모니터링 정보를 실시간으로 미리 보려면 다음을 사용하세요.

adb shell cmd media.camera watch live [-n refresh_interval_ms]

예:

adb shell cmd media.camera watch live -n 250

인수:

  • refresh_interval_ms: 선택적 인수입니다. 정보를 새로고침할 간격(밀리초)입니다. 값을 전달하지 않으면 기본값은 1000입니다.

이 명령어는 태그 모니터링 정보를 실시간으로 출력합니다. 종료하려면 return/enter를 누릅니다.

샘플 출력:

$ adb shell cmd media.camera watch live
Press return to exit...

0:com.google.android.GoogleCamera  f0:533016991302201ns:             REQ:android.control.aeMode: [ON] output stream ids:  1  3  0  2
0:com.google.android.GoogleCamera  f0:533016991302201ns:             REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids:  2  0  3  1
...
0:com.google.android.GoogleCamera  f0:533017066793915ns:                            RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera  f0:533017066793915ns: 3                          RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera  f0:533017066793915ns: 2                          RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera  f0:533017066793915ns:                            RES:android.control.afState: [PASSIVE_SCAN]

캐시된 덤프 삭제

캐시된 태그 모니터링 덤프를 모두 삭제하려면 다음 명령어를 사용하세요.

adb shell cmd media.camera watch clear

이 명령어는 태그 모니터링을 중지하지 않습니다.

태그 모니터링 중지

모든 클라이언트의 태그 모니터링을 중지하고 태그 모니터링 덤프 캐싱을 위해 저장된 모든 버퍼를 지우려면 다음 명령어를 사용하세요.

adb shell cmd media.camera watch stop

dumpsys 명령어

dumpsys 명령어는 카메라 서비스의 다양한 디버깅 정보를 제공합니다. 다음 명령어는 카메라 서비스의 모든 디버깅 덤프를 캡처합니다.

adb shell dumpsys media.camera

dumpsys 명령어를 사용하면 열려 있는 클라이언트의 태그 모니터링 덤프를 캡처할 수도 있습니다. 그러나 dumpsys는 닫힌 클라이언트의 태그 모니터링 덤프를 제공하지 않습니다. 다음은 태그 모니터링에 dumpsys를 사용하는 예입니다.

  • 열려 있는 모든 클라이언트의 태그 모니터링 덤프 캡처:

    adb shell dumpsys media.camera -m 3a | grep -A50 Monitored
  • Linux watch 명령어를 사용하여 태그 모니터링 정보의 실시간 미리보기를 가져옵니다.

    watch -n 1 -c 'adb shell dumpsys media.camera -m 3a | grep -A50 Monitored'