New Relic Android 에이전트 버전 6.7.0 부터 네이티브 충돌을 추적하고 진단하는 데 도움이 되도록 보고 및 분석이 향상되어 런타임 동안 네이티브 코드 수준에서 발생하는 신호 위반 및 기타 오류를 포함합니다.
이러한 개선 사항은 다음과 같습니다.
기본 충돌 보고서: Android 에이전트는 다음을 포함하여 런타임 중에 앱에서 보고한 위반 및 기타 충돌을 신호로 보냅니다.
- 신호 4(불법 지시)
- 신호 6(비정상 종료)
- 신호 7(버스 오류/잘못된 메모리 액세스)
- 신호 8(부동 소수점 예외)
- 신호 11(세그먼트 위반/잘못된 메모리 참조)
네이티브 런타임 예외: 네이티브 에이전트는 런타임 중에 앱에서 발생한 처리되지 않은 C++ 예외를 보고하고 이를 처리된 예외 로 보고합니다. 처리되지 않은 예외는 일반적으로 치명적이며 애플리케이션이 중단됩니다.
ANR(애플리케이션 응답 없음) 조건: 네이티브 에이전트는 활동 또는 서비스 스레드가 Android의 허용 시간(포그라운드 활동의 경우 5초, 서비스의 경우 5-200초)보다 오랫동안 차단된 애플리케이션 응답 없음 조건을 감지하고 보고합니다. . ANR 조건은 치명적인 조건으로 간주되지 않으므로 처리된 예외 (충돌이 아닌)로 보고됩니다.
중요
기본 충돌 보고는 인큐베이팅 기능입니다.기본 충돌 모니터링은 기껏해야 어렵지만 에이전트는 이러한 조건을 감지하고 보고하기 위해 최선을 다할 것입니다.일부 조건을 누락하거나 불완전하게 보고할 수 있으며 애플리케이션 대시보드에서 이러한 조건을 보는 데 지연이 있을 수 있습니다.
기본 기호의 기호화는 초기 NDK 에이전트 릴리스에서 지원되지 않습니다.앱에 대한 기본 기호가 없는 경우 충돌로 인해 생성된 스택 추적은 쉽게 읽을 수 없는 이러한 난독화된 레이블로만 구성됩니다.
New Relic Mobile의 충돌 분석 UI 에서 기본 충돌에 대한 자세한 정보를 보거나 이메일 로 충돌 알림을 받을 수 있습니다.또한 New Relic Insights 를 사용하여 충돌 데이터를 더 자세히 탐색하거나 추가 조사를 위해 티켓팅 시스템과 통합 할 수 있습니다.
구성
설정을 사용하려면 뉴렐릭 에이전트를 시작하는 앱 프로젝트의 build.gradle
파일에 추가 의존성/종속성을 추가해야 합니다.
dependencies { implementation 'com.newrelic.agent.android:agent-ndk:1.+'}
Android 에이전트 아티팩트는 MavenCentral 에서 찾을 수 있으며 의미론적 버전 관리 규칙을 따릅니다. 릴리스 및 다운로드에 대한 자세한 내용은 Android 에이전트 릴리스 노트를 참조하세요.
기본 충돌 보고 활성화
뉴렐릭 에이전트가 추가된 앱 코드(보통 MainActivity
)에서 에이전트를 시작하기 전에 NativeReporting
기능 플래그를 활성화합니다.
NewRelic.enableFeature(FeatureFlag.NativeReporting);NewRelic .withApplicationToken("APP_TOKEN") .start(this.getApplication());
기본 충돌 보고 비활성화
다른 기본 충돌 보고 도구를 사용하려면 에이전트 초기화 전에 NewRelic.disableFeature(FeatureFlag/NativeReporting)
호출하여 기본 충돌 보고를 비활성화하세요. 예를 들어:
NewRelic.disableFeature(FeatureFlag.NativeReporting);NewRelic .withApplicationToken("APP_TOKEN") .start(this.getApplication());
네이티브 크래시 리포터 디버그
Android용 충돌 보고는 이미 등록된 경우 포착되지 않은 예외 처리기를 연결하여 다른 충돌 보고 프레임워크와 함께 작동하도록 설계되었습니다.
보고 중에 발생하는 모든 문제는 logcat에 표시됩니다. 뉴렐릭이 회원을 트랩할 때마다 DEBUG
수준으로 로그인 됩니다. 예를 들어 세그먼트 위반의 경우 다음 로그가 표시됩니다.
Signal 11 intercepted: Segmentation violation (invalid memory reference)Invoking previous handler for signal 11
기본 보고서 전달은 다음 앱 호출까지 연기되므로 앱이 다시 시작될 때까지 New Relic Mobile 사용자 인터페이스에 충돌 보고서가 표시되지 않습니다.충돌이 발생한 경우 기본 에이전트는 일반적으로 보고서를 처리할 시간이나 안정성이 충분하지 않습니다.대신 보고서 데이터가 로컬 저장소에 빠르게 기록되어 다음에 앱이 실행될 때 처리됩니다.
문제점 해결
기본 보고서는 기기의 /data/data/APP_PACKAGE_NAME/cache/newrelic/reports
에 JSON 파일로 저장됩니다. 이 디렉토리에는 충돌 후 앱이 설치된 이후의 보고서가 포함되어서는 안 됩니다.
다른 에이전트 런타임 정보와 마찬가지로 기본 에이전트는 상태를 logcat에 기록하여 에이전트 런타임 상태와 혼합합니다. 에이전트의 로그 태그는 com.newrelic.android
이며 셸에서 adb logcat | grep "com.newrelic.android"
실행하여 다른 런타임 로깅과 격리될 수 있습니다.