blob: 5c2710acac4e5e6b80e59dd38b1c06722a7131f5 [file]
# Copyright 2026 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from typing import Any
from cli.commands.base import BaseCommand
from shared.protocol.stack_trace import COMMAND_NAME
class Command(BaseCommand):
COMMAND_NAME = COMMAND_NAME
ALIASES = ["stack_trace", "stackTrace", "bt", "backtrace"]
@staticmethod
def register_cli(subparsers: Any) -> None:
stack_trace_parser = subparsers.add_parser(
Command.COMMAND_NAME,
aliases=Command.ALIASES,
help="Get stack trace of a thread or all threads in a process. This will automatically pause threads when called.",
)
group = stack_trace_parser.add_mutually_exclusive_group(required=True)
group.add_argument(
"-t",
"--thread-id",
type=int,
default=None,
help="Thread ID to get stack trace for",
)
group.add_argument(
"-p",
"--pid",
type=int,
default=None,
help="Process ID to get stack traces for all threads in the process",
)
stack_trace_parser.add_argument(
"-r",
"--raw",
action="store_true",
help="Display raw stack trace without eliding subtle frames",
)