1. Use the scene Use adb bugreport to export the files needed for power analysis and then perform a more detailed analysis at https://github.com/google/battery-historian
adb bugreport - return all information from the device that should be included in a bug report.
" bugreport [PATH]\n"
" write bugreport to given PATH [default=bugreport.zip];\n"
" if PATH is a directory, the bug report is saved in that directory.\n"
" devices that don't support zipped bug reports output to stdout.\n"
I mainly want to know where the data of bugreport is derived.
2. bugreport data source 2.1 Receiving point issued by the adb bugreport command System/core/adb/commandline.cpp
2.4 Reading bugreport information In fact, bugreport is dumpstate, the specific file is in the mobile system directory system/bin/dumpstate, dumpstate is the executable file.
Cmd window
Sufadi:/system/bin # ls dumpstate -all
ls dumpstate -all
-rwxr-xr-x 1 root shell 207136 2018-05-31 15:18 dumpstate
Specific source code
// This program will trigger the dumpstate service to start a call to
// dumpstate, then connect to the dumpstate local client to read the
// output. All of the dumpstate output is written to stdout, including
// any errors encountered while reading/writing the output.
int main() {
...
// Start the dumpstate service. 启动 dumpstate service
// 其实bugreport就是 dumpstate
property_set("ctl.start", "dumpstate");
...
while (1) {
...
char buffer[65536];
ssize_t bytes_read = TEMP_FAILURE_RETRY(read(s, buffer, sizeof(buffer)));
do {
bytes_written = TEMP_FAILURE_RETRY(write(STDOUT_FILENO,
buffer + bytes_read - bytes_to_send,
bytes_to_send));
if (bytes_written == -1) {
printf("Failed to write data to stdout: read %zd, trying to send %zd (%s)\n",
bytes_read, bytes_to_send, strerror(errno));
return 1;
}
bytes_to_send -= bytes_written;
} while (bytes_written != 0 && bytes_to_send > 0);
}
close(s);
return 0;
}
2.5 dumpstate implementation and its data source Frameworks\native\cmds\dumpstate\dumpstate.cpp
1. System properties
2./proc and /sys node files
3. Execute the shell command to get the relevant output
4.logcat output
5.Android Framework Services information basically uses the dumpsys command to obtain information through the dump function in the binder call service.
Above, for example
- View battery information
RunDumpsys("CHECKIN BATTERYSTATS", {"batterystats", "-c"});
View kernal's wakeup source
DumpFile("KERNEL WAKE SOURCES", "/d/wakeup_sources");
3. bugreport data display Export mobile phone data from bugreport, parsing raw data through battery-historian for multi-dimensional analysis of power consumption anomalies
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.