| <html devsite> |
| <head> |
| <title>Kernel Enhancements to LLDB/C++ Debugging</title> |
| <meta name="project_path" value="/_project.yaml" /> |
| <meta name="book_path" value="/_book.yaml" /> |
| </head> |
| <body> |
| <!-- |
| Copyright 2017 The Android Open Source Project |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <p> |
| The Android 8.0 release includes kernel enhancements that help developers create |
| better applications by improving their debugging experience. |
| </p> |
| <p> |
| The arm64 Android kernels support setting watchpoints on memory addresses that |
| are not 4/8-byte aligned, and reporting all accesses to those addresses. |
| </p> |
| <h2 id="implementation">Implementation</h2> |
| <p> |
| The feature runs on any ARM 64-bit device. Adding the relevant support for |
| 32-bit hardware/kernels is optional. All necessary kernel modifications have |
| already been done. |
| </p> |
| <p> |
| This feature is included in the current 3.10, 3.18, 4.4, and 4.9 kernel branches. |
| To add it to a kernel that does not already include it, cherry pick the |
| necessary CLs into your kernel build. Choose the patchset according to the |
| version your kernel is based on, as the patches required some adjustments due to |
| the kernel codebase evolving over time: |
| </p> |
| |
| <ul> |
| <li>branch android-3.10: |
| <ul> |
| <li><a |
| href="https://android.googlesource.com/kernel/common/+/bb42e87236d9defb511819991df21d464c1ef2eb">https://android.googlesource.com/kernel/common/+/bb42e87236d9defb511819991df21d464c1ef2eb</a> |
| <li><a |
| href="https://android.googlesource.com/kernel/common/+/e8e0018306e1b9426dd70b44f057d1555c212ffb">https://android.googlesource.com/kernel/common/+/e8e0018306e1b9426dd70b44f057d1555c212ffb</a> |
| <li><a |
| href="https://android.googlesource.com/kernel/common/+/fc0e9d5d77d9368ab15a06f7e61fff2ae2bc254d">https://android.googlesource.com/kernel/common/+/fc0e9d5d77d9368ab15a06f7e61fff2ae2bc254d</a> |
| <li><a |
| href="https://android.googlesource.com/kernel/common/+/482ff2ca45737ee4bab3cf7221f6df1c9e14ea2c">https://android.googlesource.com/kernel/common/+/482ff2ca45737ee4bab3cf7221f6df1c9e14ea2c</a> |
| </ul> |
| |
| <li>branch android-3.18: |
| <ul> |
| <li><a |
| href="https://android.googlesource.com/kernel/common/+/b14849ae202487251b91e9f89af7eda484a80489">https://android.googlesource.com/kernel/common/+/b14849ae202487251b91e9f89af7eda484a80489</a> |
| <li><a |
| href="https://android.googlesource.com/kernel/common/+/58a9c1be1966ca89facba6343a5d8781154196b7">https://android.googlesource.com/kernel/common/+/58a9c1be1966ca89facba6343a5d8781154196b7</a> |
| <li><a |
| href="https://android.googlesource.com/kernel/common/+/d34d016794f345c5f1dccf4060b1132439098699">https://android.googlesource.com/kernel/common/+/d34d016794f345c5f1dccf4060b1132439098699</a> |
| <li><a |
| href="https://android.googlesource.com/kernel/common/+/c82e0fdadfba89cdb50c96af622c2c5ad6cb55eb">https://android.googlesource.com/kernel/common/+/c82e0fdadfba89cdb50c96af622c2c5ad6cb55eb</a> |
| </ul> |
| |
| <li>branch android-4.4: |
| <ul> |
| <li><a |
| href="https://android.googlesource.com/kernel/common/+/91495bc622e9356dd63a7c77b98a21f0e2f5d2b2">https://android.googlesource.com/kernel/common/+/91495bc622e9356dd63a7c77b98a21f0e2f5d2b2</a> |
| <li><a |
| href="https://android.googlesource.com/kernel/common/+/7409857a0717fa78dc936ea08099880be893156c">https://android.googlesource.com/kernel/common/+/7409857a0717fa78dc936ea08099880be893156c</a> |
| <li><a |
| href="https://android.googlesource.com/kernel/common/+/b48318f371e8a8b98238deac868bc7af8ed8ba4b">https://android.googlesource.com/kernel/common/+/b48318f371e8a8b98238deac868bc7af8ed8ba4b</a> |
| <li><a |
| href="https://android.googlesource.com/kernel/common/+/edc166a8714b012a3dd207e437c772ae2a264eca">https://android.googlesource.com/kernel/common/+/edc166a8714b012a3dd207e437c772ae2a264eca</a> |
| </ul> |
| |
| <li>branch android-4.9: |
| <ul> |
| <li><a |
| href="https://android.googlesource.com/kernel/common/+/85c450ac7ac0a69aca4c6eb845e419ae092d8c86">https://android.googlesource.com/kernel/common/+/85c450ac7ac0a69aca4c6eb845e419ae092d8c86</a> |
| <li><a |
| href="https://android.googlesource.com/kernel/common/+/67de4de5628a47fa794920745dc7869c97b558d3">https://android.googlesource.com/kernel/common/+/67de4de5628a47fa794920745dc7869c97b558d3</a> |
| <li><a |
| href="https://android.googlesource.com/kernel/common/+/32649b0a393303a97fab6003c5757ff7b100331a">https://android.googlesource.com/kernel/common/+/32649b0a393303a97fab6003c5757ff7b100331a</a> |
| <li><a |
| href="https://android.googlesource.com/kernel/common/+/d32793b6be517dffa29329a92ffcc688e74bc690">https://android.googlesource.com/kernel/common/+/d32793b6be517dffa29329a92ffcc688e74bc690</a></li> |
| </ul> |
| </ul> |
| |
| <p> |
| This feature implements an extension of the <code>ptrace</code> API to support |
| writing a debugger. |
| </p> |
| <h2 id="validation">Validation</h2> |
| <p> |
| There is a kernel selftest in the upstream repository, a CTS test, and there |
| are CTS tests added exercising the new kernel API: |
| </p> |
| <p> |
| <a |
| href="https://android.googlesource.com/platform/bionic/+/master/tests/sys_ptrace_test.cpp">https://android.googlesource.com/platform/bionic/+/master/tests/sys_ptrace_test.cpp</a> |
| </p> |
| </body> |
| </html> |