1# `dumpstate` development tips 2 3## To build `dumpstate` 4 5Do a full build first: 6 7``` 8m -j dumpstate 9``` 10 11Then incremental ones: 12 13``` 14mmm -j frameworks/native/cmds/dumpstate 15``` 16 17If you're working on device-specific code, you might need to build them as well. 18Example: 19 20``` 21mmm -j frameworks/native/cmds/dumpstate device/acme/secret_device/dumpstate/ hardware/interfaces/dumpstate 22``` 23 24## To build, deploy, and take a bugreport 25 26``` 27mmm -j frameworks/native/cmds/dumpstate && adb push ${OUT}/system/bin/dumpstate system/bin && adb push ${OUT}/system/lib64/*dumpstate*.so /system/lib64/ && adb shell am bug-report 28``` 29 30Make sure that the device is remounted before running the above command. * If 31you're working with `userdebug` variant, you may need to run the following to 32remount your device: 33 34``` 35 adb root && adb remount -R && adb wait-for-device && adb root && adb remount 36``` 37 38* If you're working with `eng` variant, you may need to run the following to 39 remount your device: 40 41 ``` 42 adb root && adb remount 43 ``` 44 45## To build, deploy, and run unit tests 46 47First create `/data/nativetest64`: 48 49``` 50adb shell mkdir /data/nativetest64 51``` 52 53Then run: 54 55``` 56mmm -j frameworks/native/cmds/dumpstate/ && adb push ${OUT}/data/nativetest64/dumpstate_* /data/nativetest64 && adb shell /data/nativetest64/dumpstate_test/dumpstate_test 57``` 58 59And to run just one test (for example, `DumpstateTest.RunCommandNoArgs`): 60 61``` 62mmm -j frameworks/native/cmds/dumpstate/ && adb push ${OUT}/data/nativetest64/dumpstate_test* /data/nativetest64 && adb shell /data/nativetest64/dumpstate_test/dumpstate_test --gtest_filter=DumpstateTest.RunCommandNoArgs 63``` 64 65## To take quick bugreports 66 67``` 68adb shell setprop dumpstate.dry_run true 69``` 70 71## To emulate a device with user build 72 73``` 74adb shell setprop dumpstate.unroot true 75``` 76 77## To change the `dumpstate` version 78 79``` 80adb shell setprop dumpstate.version VERSION_NAME 81``` 82 83Example: 84 85``` 86adb shell setprop dumpstate.version split-dumpsys && adb shell dumpstate -v 87``` 88 89Then to restore the default version: 90 91``` 92adb shell setprop dumpstate.version default 93``` 94 95## Code style and formatting 96 97Use the style defined at the 98[Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) and 99make sure to run the following command prior to `repo upload`: 100 101``` 102git clang-format --style=file HEAD~ 103``` 104 105## Useful Bash tricks 106 107``` 108export BR_DIR=/bugreports 109 110alias br='adb shell cmd activity bug-report' 111alias ls_bugs='adb shell ls -l ${BR_DIR}/' 112 113unzip_bug() { 114 adb pull ${BR_DIR}/$1 && emacs $1 && mv $1 /tmp 115} 116 117less_bug() { 118 adb pull ${BR_DIR}/$1 && less $1 && mv $1 /tmp 119} 120 121rm_bugs() { 122 if [ -z "${BR_DIR}" ] ; then echo "Variable BR_DIR not set"; else adb shell rm -rf ${BR_DIR}/*; fi 123} 124 125``` 126