adb: Allow enabling of device side adbd logging with a persistent system property.
To enable logging, set the property persist.adb.trace_mask to a hex value containing the bitmask for adb_trace_mask (see the TRACE_* enum values in adb.h). This will result in adb writing log output to a file in /data/adb/ No logging will occur if persist.adb.trace_mask is not set or has a value that cannot be parsed as a hex integer. The property is read once only at startup, so you must reboot or restart adbd for changes in the property to take effect. Signed-off-by: Mike Lockwood <lockwood@android.com>
This commit is contained in:
parent
6a3075c782
commit
1f546e6d1f
2 changed files with 20 additions and 15 deletions
30
adb/adb.c
30
adb/adb.c
|
|
@ -23,6 +23,7 @@
|
|||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#include "sysdeps.h"
|
||||
#include "adb.h"
|
||||
|
|
@ -657,10 +658,25 @@ void start_logging(void)
|
|||
void start_device_log(void)
|
||||
{
|
||||
int fd;
|
||||
char path[100];
|
||||
char path[PATH_MAX];
|
||||
struct tm now;
|
||||
time_t t;
|
||||
char value[PROPERTY_VALUE_MAX];
|
||||
|
||||
snprintf(path, sizeof path, "/data/adb_%ld.txt", (long)time(NULL));
|
||||
fd = unix_open(path, O_WRONLY | O_CREAT | O_APPEND, 0640);
|
||||
// read the trace mask from persistent property persist.adb.trace_mask
|
||||
// give up if the property is not set or cannot be parsed
|
||||
property_get("persist.adb.trace_mask", value, "");
|
||||
if (sscanf(value, "%x", &adb_trace_mask) != 1)
|
||||
return;
|
||||
|
||||
adb_mkdir("/data/adb", 0775);
|
||||
tzset();
|
||||
time(&t);
|
||||
localtime_r(&t, &now);
|
||||
strftime(path, sizeof(path),
|
||||
"/data/adb/adb-%Y-%m-%d-%H-%M-%S.txt",
|
||||
&now);
|
||||
fd = unix_open(path, O_WRONLY | O_CREAT | O_TRUNC, 0640);
|
||||
if (fd < 0)
|
||||
return;
|
||||
|
||||
|
|
@ -671,11 +687,6 @@ void start_device_log(void)
|
|||
|
||||
fd = unix_open("/dev/null", O_RDONLY);
|
||||
dup2(fd, 0);
|
||||
|
||||
// log everything
|
||||
adb_trace_mask = ~0;
|
||||
// except TRACE_RWX is a bit too verbose
|
||||
adb_trace_mask &= ~TRACE_RWX;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -1079,9 +1090,8 @@ int main(int argc, char **argv)
|
|||
adb_device_banner = "recovery";
|
||||
recovery_mode = 1;
|
||||
}
|
||||
#if ADB_DEVICE_LOG
|
||||
|
||||
start_device_log();
|
||||
#endif
|
||||
return adb_main(0);
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -345,11 +345,6 @@ typedef enum {
|
|||
#endif
|
||||
|
||||
|
||||
/* set this to log to /data/adb/adb_<time>.txt on the device.
|
||||
* has no effect if the /data/adb/ directory does not exist.
|
||||
*/
|
||||
#define ADB_DEVICE_LOG 0
|
||||
|
||||
#if !TRACE_PACKETS
|
||||
#define print_packet(tag,p) do {} while (0)
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue