Merge "Fix gdbclient.py -p."
This commit is contained in:
@@ -167,9 +167,7 @@ def start_gdbserver(device, gdbserver_local_path, gdbserver_remote_path,
|
|||||||
else:
|
else:
|
||||||
gdbserver_cmd += run_cmd
|
gdbserver_cmd += run_cmd
|
||||||
|
|
||||||
device.forward("tcp:{}".format(port),
|
forward_gdbserver_port(device, local=port, remote="localfilesystem:{}".format(debug_socket))
|
||||||
"localfilesystem:{}".format(debug_socket))
|
|
||||||
atexit.register(lambda: device.forward_remove("tcp:{}".format(port)))
|
|
||||||
|
|
||||||
if run_as_cmd:
|
if run_as_cmd:
|
||||||
gdbserver_cmd = run_as_cmd + gdbserver_cmd
|
gdbserver_cmd = run_as_cmd + gdbserver_cmd
|
||||||
@@ -182,6 +180,12 @@ def start_gdbserver(device, gdbserver_local_path, gdbserver_remote_path,
|
|||||||
stderr=gdbserver_output)
|
stderr=gdbserver_output)
|
||||||
|
|
||||||
|
|
||||||
|
def forward_gdbserver_port(device, local, remote):
|
||||||
|
"""Forwards local TCP port `port` to `remote` via `adb forward`."""
|
||||||
|
device.forward("tcp:{}".format(local), remote)
|
||||||
|
atexit.register(lambda: device.forward_remove("tcp:{}".format(local)))
|
||||||
|
|
||||||
|
|
||||||
def find_file(device, executable_path, sysroot, run_as_cmd=None):
|
def find_file(device, executable_path, sysroot, run_as_cmd=None):
|
||||||
"""Finds a device executable file.
|
"""Finds a device executable file.
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import adb
|
|||||||
import argparse
|
import argparse
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
@@ -33,6 +34,15 @@ def get_gdbserver_path(root, arch):
|
|||||||
return path.format(root, arch, "", "")
|
return path.format(root, arch, "", "")
|
||||||
|
|
||||||
|
|
||||||
|
def get_tracer_pid(device, pid):
|
||||||
|
if pid is None:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
line, _ = device.shell(["grep", "-e", "^TracerPid:", "/proc/{}/status".format(pid)])
|
||||||
|
tracer_pid = re.sub('TracerPid:\t(.*)\n', r'\1', line)
|
||||||
|
return int(tracer_pid)
|
||||||
|
|
||||||
|
|
||||||
def parse_args():
|
def parse_args():
|
||||||
parser = gdbrunner.ArgumentParser()
|
parser = gdbrunner.ArgumentParser()
|
||||||
|
|
||||||
@@ -50,7 +60,7 @@ def parse_args():
|
|||||||
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--port", nargs="?", default="5039",
|
"--port", nargs="?", default="5039",
|
||||||
help="override the port used on the host")
|
help="override the port used on the host [default: 5039]")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--user", nargs="?", default="root",
|
"--user", nargs="?", default="root",
|
||||||
help="user to run commands as on the device [default: root]")
|
help="user to run commands as on the device [default: root]")
|
||||||
@@ -236,13 +246,19 @@ def main():
|
|||||||
# Make sure we have the linker
|
# Make sure we have the linker
|
||||||
ensure_linker(device, sysroot, is64bit)
|
ensure_linker(device, sysroot, is64bit)
|
||||||
|
|
||||||
# Start gdbserver.
|
tracer_pid = get_tracer_pid(device, pid)
|
||||||
gdbserver_local_path = get_gdbserver_path(root, arch)
|
if tracer_pid == 0:
|
||||||
gdbserver_remote_path = "/data/local/tmp/{}-gdbserver".format(arch)
|
# Start gdbserver.
|
||||||
gdbrunner.start_gdbserver(
|
gdbserver_local_path = get_gdbserver_path(root, arch)
|
||||||
device, gdbserver_local_path, gdbserver_remote_path,
|
gdbserver_remote_path = "/data/local/tmp/{}-gdbserver".format(arch)
|
||||||
target_pid=pid, run_cmd=run_cmd, debug_socket=debug_socket,
|
gdbrunner.start_gdbserver(
|
||||||
port=args.port, run_as_cmd=args.su_cmd)
|
device, gdbserver_local_path, gdbserver_remote_path,
|
||||||
|
target_pid=pid, run_cmd=run_cmd, debug_socket=debug_socket,
|
||||||
|
port=args.port, run_as_cmd=args.su_cmd)
|
||||||
|
else:
|
||||||
|
print "Connecting to tracing pid {} using local port {}".format(tracer_pid, args.port)
|
||||||
|
gdbrunner.forward_gdbserver_port(device, local=args.port,
|
||||||
|
remote="tcp:{}".format(args.port))
|
||||||
|
|
||||||
# Generate a gdb script.
|
# Generate a gdb script.
|
||||||
gdb_commands = generate_gdb_script(sysroot=sysroot,
|
gdb_commands = generate_gdb_script(sysroot=sysroot,
|
||||||
|
|||||||
Reference in New Issue
Block a user