You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: skills/firebase-crashlytics-basics/SKILL.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
name: firebase-crashlytics-basics
3
-
description: Instrument mobile applications with Firebase Crashlytics, access crash reports and debug issues. Trigger when the user requests to instrument their mobile applicationor access crash reports.
3
+
description: Comprehensive guide for Firebase Crashlytics, including SDK setup, instrumentation, and accessing crash reports. Use this skill when the user needs to instrument their mobile application, configure advanced reporting, or debug issues using crash data.
4
4
compatibility: This skill is best used with the Firebase CLI, but does not require it. Install it by running `npm install -g firebase-tools`.
5
5
---
6
6
@@ -28,4 +28,4 @@ Access crash reports and manage issues directly through the MCP server:
Copy file name to clipboardExpand all lines: skills/firebase-crashlytics-basics/references/android_sdk.md
-2Lines changed: 0 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -113,7 +113,6 @@ firebaseCrashlytics {
113
113
// Enable processing and uploading of native symbols to Crashlytics.
114
114
// This flag is disabled by default because it requires you to have the Android NDK installed.
115
115
nativeSymbolUploadEnabled true
116
-
117
116
// Enable uploading of ProGuard/R8 mapping files
118
117
// This is required for de-obfuscating stack traces if your app is minified.
119
118
mappingFileUploadEnabled true
@@ -133,7 +132,6 @@ If you are using NDK and dont see symbolicated stack traces:
133
132
Crashlytics automatically captures ANR (Application Not Responding) events on Android 11+ devices.
134
133
***Requirement:** The app must be installed from the Google Play Store (or recognized by Play Services) for ANRs to be reported in many cases, though strictly local debugging often catches them too.
135
134
***No Extra Code:** You generally do not need extra code to enable ANR reporting with the latest SDKs.
136
-
```
137
135
138
136
> **Note:** For the BoM and plugin versions, please refer to the official Firebase documentation for the latest versions.
By following these steps, effectively instrument Firebase Analytics events to gain deeper insights into user behavior within the application. Remember to always consider privacy and avoid logging sensitive user data.
171
+
By following these steps, you can effectively instrument Firebase Analytics events to gain deeper insights into user behavior within the application. Remember to always consider privacy and avoid logging sensitive user data.
Copy file name to clipboardExpand all lines: skills/firebase-crashlytics-basics/references/investigations.md
+23-25Lines changed: 23 additions & 25 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,53 +6,51 @@ Follow these steps to diagnose bugs and and propose fixes for issues.
6
6
2. Use the `crashlytics_get_issue` tool to get more context on the issue.
7
7
3. Use the `crashlytics_batch_get_events` tool to get an example crash for this issue. Use the event names in the sampleEvent fields.
8
8
3a. If you need to read more events, use the `crashlytics_list_events` tool.
9
-
3b. Apply the same filtering criteria that you used to find the issue, so that you find a appropriate events.
9
+
3b. Apply the same filtering criteria that you used to find the issue, so that you find appropriate events.
10
10
4. Read the files that exist in the stack trace of the issue to understand the crash deeply.
11
11
5. Determine possible root causes for the crash - no more than 5 potential root causes.
12
12
6. Critique your own determination, analyzing how plausible each scenario is given the crash details.
13
13
7. Choose the most likely root cause given your analysis.
14
14
8. Create a plan for the most likely root cause using the following format for the plan:
15
15
16
-
```
17
-
## Cause
16
+
```
17
+
## Cause
18
18
19
-
<A description of the root cause leading to the issue>
20
-
- **Fault**: <a determination of whether this code base is at fault or a dependent library is at fault>
21
-
- **Complexity**: <one of "simple", "moderately simple", "moderately hard", "hard", "oof, I don't know where to start">
19
+
<A description of the root cause leading to the issue>
20
+
- **Fault**: <a determination of whether this code base is at fault or a dependent library is at fault>
21
+
- **Complexity**: <one of "simple", "moderately simple", "moderately hard", "hard", "oof, I don't know where to start">
22
22
23
-
## Fix
23
+
## Fix
24
24
25
-
<A description of the fix for this issue and a break down of the changes.>
26
-
1. <Step 1>
27
-
2. <Step 2>
25
+
<A description of the fix for this issue and a break down of the changes.>
26
+
1. <Step 1>
27
+
2. <Step 2>
28
28
29
-
## Test
29
+
## Test
30
30
31
-
<A plan for how to test that the issue has been fixed and protect against regressions>
32
-
1. <Test case 1>
33
-
2. <Test case 2>
31
+
<A plan for how to test that the issue has been fixed and protect against regressions>
32
+
1. <Test case 1>
33
+
2. <Test case 2>
34
34
35
-
## Other potential causes
35
+
## Other potential causes
36
36
37
-
1. <Another possible root cause>
38
-
2. <Another possible root cause>
39
-
```
37
+
1. <Another possible root cause>
38
+
2. <Another possible root cause>
39
+
```
40
40
41
-
### 9. Special Investigations
41
+
9. If there is not enough information in the crash report to find a root cause, describe why you cannot fix the issue instead of making a guess.
42
42
43
-
#### 9.1 Analyzing NDK (Native) Crashes
43
+
### Special Investigations
44
+
45
+
#### Analyzing NDK (Native) Crashes
44
46
Native crashes often look intimidating but follow predictable patterns.
45
47
* **Signal 11 (SIGSEGV):** Segmentation violation. Usually a null pointer dereference (`*ptr = 0`) or accessing freed memory (Use-after-free).
46
48
* **Signal 6 (SIGABRT):** Abort. The app deliberately killed itself, often because of an unhandled C++ exception or a failed assertion (`assert(condition)`).
47
49
* **Missing Symbols:** If the stack trace shows `(missing)` or hex addresses (e.g., `0x000532`), you cannot debug it. Check if `nativeSymbolUploadEnabled` is on and if the correct mappings were uploaded.
48
50
49
-
#### 9.2 Analyzing ANRs (Application Not Responding)
51
+
#### Analyzing ANRs (Application Not Responding)
50
52
* **The "Main" Culprit:** Look immediately at the thread named `main`. This is the UI thread.
51
53
* **Blocked vs. Busy:**
52
54
* *Blocked:* The main thread is waiting on a lock (monitor contention) held by another thread. Look for "Waiting to lock..." in the stack trace, then find the thread holding that lock.
53
55
* *Busy:* The main thread is doing too much work (e.g., heavy JSON parsing, sorting a huge list, image processing) directly on the UI thread.
54
56
* **Deadlocks:** If Thread A holds Lock 1 and wants Lock 2, while Thread B holds Lock 2 and wants Lock 1, nobody moves.
55
-
56
-
### 10. Finalize the Plan
57
-
58
-
10. If there is not enough information in the crash report to find a root cause, describe why you cannot fix the issue instead of making a guess.
0 commit comments