blob: e2035eed0595b4a5e4c634cf97bb0787915ae442 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
## Debugging the native Rust libraries in Android Studio with LLDB
1. In `gradle.properties` or in your `$HOME/.gradle/gradle.properties` file set the following:
```
mullvad.app.build.keepDebugSymbols=true
mullvad.app.build.replaceRustPathPrefix=false
```
2. In Android Studio, go to `Run -> Edit configurations...`
3. Make sure the `app` configuration is selected.
4. In the `Debugger` tab, select `Dual (Java + Native)`
5. Start debugging the app as usual from Android Studio.
6. Click the `View Breakpoints...` icon in the debug view.
7. Click `+ -> Symbolic Breakpoints` and enter a function name in the `Symbol name` field.
Android Studio should now break on the function you selected.
NOTE: When running LLDB, Android Studio can sometimes get into a state where it will try to
connect to the debugger when running the app normally, which blocks the app from starting.
To fix this run `adb shell am clear-debug-app`.
### Setting line breakpoints in Rust code by clicking the gutter in Android Studio
By default, the normal debugging support in Android Studio such as clicking the gutter to set line breakpoints only
work when debugging C/C++ and not Rust code.
To fix this, install the following Android Studio plugin: https://github.com/kl/gutter-breakpoints-rust-plugin
### Improving LLDB interaction with common Rust types
Rust ships with the `rust-lldb` shell script (https://github.com/rust-lang/rust/blob/main/src/etc/rust-lldb) which
improves the LLDB experience when debugging Rust code, for example by being able to see the text value when
inspecting a `String` value.
To enable this when debugging in Android Studio, first find out your rustc sysroot by running
`rustc --print sysroot`. Then go to `Debugger -> LLDB Startup Commands` and enter the following
two commands:
```
command script import SYSROOT_PATH/lib/rustlib/etc/lldb_lookup.py
command source SYSROOT_PATH/lib/rustlib/etc/lldb_commands
````
|