Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1f546e6d authored by Mike Lockwood's avatar Mike Lockwood
Browse files

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: default avatarMike Lockwood <lockwood@android.com>
parent 6a3075c7
Loading
Loading
Loading
Loading
+20 −10
Original line number Diff line number Diff line
@@ -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];

    // 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;

    snprintf(path, sizeof path, "/data/adb_%ld.txt", (long)time(NULL));
    fd = unix_open(path, O_WRONLY | O_CREAT | O_APPEND, 0640);
    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
}
+0 −5
Original line number Diff line number Diff line
@@ -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