mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-10 05:51:52 +08:00
Add stubs for "gdb" (#8013)
This commit adds type stubs for the "gdb" package, the Python API to extend GDB (https://sourceware.org/gdb/onlinedocs/gdb/Python-API.html).
This commit is contained in:
committed by
GitHub
parent
8cac5284ae
commit
640053e8e3
12
stubs/gdb/METADATA.toml
Normal file
12
stubs/gdb/METADATA.toml
Normal file
@@ -0,0 +1,12 @@
|
||||
version = "12.1.*"
|
||||
extra_description = """\
|
||||
Type hints for GDB's \
|
||||
[Python API](https://sourceware.org/gdb/onlinedocs/gdb/Python-API.html). \
|
||||
Note that this API is available only when running Python scripts under GDB: \
|
||||
is is not possible to install the `gdb` package separately, for instance \
|
||||
using `pip`.\
|
||||
"""
|
||||
|
||||
# Since the "gdb" Python package is available only inside GDB, it is not
|
||||
# possible to install it through pip, so stub tests cannot install it.
|
||||
stubtest = false
|
||||
695
stubs/gdb/gdb/__init__.pyi
Normal file
695
stubs/gdb/gdb/__init__.pyi
Normal file
@@ -0,0 +1,695 @@
|
||||
# The GDB Python API is implemented in C, so the type hints below were made
|
||||
# reading the documentation
|
||||
# (https://sourceware.org/gdb/onlinedocs/gdb/Python-API.html).
|
||||
|
||||
import _typeshed
|
||||
from collections.abc import Callable, Iterator, Sequence
|
||||
from contextlib import AbstractContextManager
|
||||
from typing import Protocol, overload
|
||||
from typing_extensions import TypeAlias
|
||||
|
||||
import gdb.types
|
||||
|
||||
# Basic
|
||||
|
||||
PYTHONDIR: str
|
||||
|
||||
STDOUT: int
|
||||
STDERR: int
|
||||
STDLOG: int
|
||||
|
||||
def execute(command: str, from_tty: bool = ..., to_string: bool = ...) -> str | None: ...
|
||||
def breakpoints() -> Sequence[Breakpoint]: ...
|
||||
def rbreak(regex: str, minsyms: bool = ..., throttle: int = ..., symtabs: Iterator[Symtab] = ...) -> list[Breakpoint]: ...
|
||||
def parameter(__parameter: str) -> bool | int | str | None: ...
|
||||
def set_parameter(name: str, value: bool | int | str | None) -> None: ...
|
||||
def with_parameter(name: str, value: bool | int | str | None) -> AbstractContextManager[None]: ...
|
||||
def history(__number: int) -> Value: ...
|
||||
def add_history(__value: Value) -> int: ...
|
||||
def history_count() -> int: ...
|
||||
def convenience_variable(__name: str) -> Value | None: ...
|
||||
def set_convenience_variable(__name: str, __value: _ValueOrNative | None) -> None: ...
|
||||
def parse_and_eval(__expression: str) -> Value: ...
|
||||
def find_pc_line(pc: int | Value) -> Symtab_and_line: ...
|
||||
def post_event(__event: Callable[[], object]) -> None: ...
|
||||
def write(string: str, stream: int = ...) -> None: ...
|
||||
def flush(stream: int = ...) -> None: ...
|
||||
def target_charset() -> str: ...
|
||||
def target_wide_charset() -> str: ...
|
||||
def host_charset() -> str: ...
|
||||
def solib_name(address: int) -> str | None: ...
|
||||
def decode_line(__expression: str = ...) -> tuple[str | None, tuple[Symtab_and_line, ...] | None]: ...
|
||||
def prompt_hook(current_prompt: str) -> str: ...
|
||||
def architecture_names() -> list[str]: ...
|
||||
def connections() -> list[TargetConnection]: ...
|
||||
|
||||
# Exceptions
|
||||
|
||||
class error(RuntimeError): ...
|
||||
class MemoryError(error): ...
|
||||
class GdbError(Exception): ...
|
||||
|
||||
# Values
|
||||
|
||||
_ValueOrNative: TypeAlias = bool | float | str | Value
|
||||
_ValueOrInt: TypeAlias = Value | int
|
||||
|
||||
class Value:
|
||||
|
||||
address: Value
|
||||
is_optimized_out: bool
|
||||
type: Type
|
||||
dynamic_type: Type
|
||||
is_lazy: bool
|
||||
|
||||
def __index__(self) -> int: ...
|
||||
def __int__(self) -> int: ...
|
||||
def __float__(self) -> float: ...
|
||||
def __add__(self, other: _ValueOrInt) -> Value: ...
|
||||
def __sub__(self, other: _ValueOrInt) -> Value: ...
|
||||
def __mul__(self, other: _ValueOrInt) -> Value: ...
|
||||
def __truediv__(self, other: _ValueOrInt) -> Value: ...
|
||||
def __mod__(self, other: _ValueOrInt) -> Value: ...
|
||||
def __and__(self, other: _ValueOrInt) -> Value: ...
|
||||
def __or__(self, other: _ValueOrInt) -> Value: ...
|
||||
def __xor__(self, other: _ValueOrInt) -> Value: ...
|
||||
def __lshift__(self, other: _ValueOrInt) -> Value: ...
|
||||
def __rshift__(self, other: _ValueOrInt) -> Value: ...
|
||||
def __getitem__(self, key: int | str | Field) -> Value: ...
|
||||
def __call__(self, *args: _ValueOrNative) -> Value: ...
|
||||
def __init__(self, val: _ValueOrNative) -> None: ...
|
||||
def cast(self, type: Type) -> Value: ...
|
||||
def dereference(self) -> Value: ...
|
||||
def referenced_value(self) -> Value: ...
|
||||
def reference_value(self) -> Value: ...
|
||||
def const_value(self) -> Value: ...
|
||||
def dynamic_cast(self, type: Type) -> Value: ...
|
||||
def reinterpret_cast(self, type: Type) -> Value: ...
|
||||
def format_string(
|
||||
self,
|
||||
raw: bool = ...,
|
||||
pretty_arrays: bool = ...,
|
||||
pretty_structs: bool = ...,
|
||||
array_indexes: bool = ...,
|
||||
symbols: bool = ...,
|
||||
unions: bool = ...,
|
||||
address: bool = ...,
|
||||
deref_refs: bool = ...,
|
||||
actual_objects: bool = ...,
|
||||
static_members: bool = ...,
|
||||
max_elements: int = ...,
|
||||
max_depth: int = ...,
|
||||
repeat_threshold: int = ...,
|
||||
format: str = ...,
|
||||
) -> str: ...
|
||||
def string(self, encoding: str = ..., errors: str = ..., length: int = ...) -> str: ...
|
||||
def lazy_string(self, encoding: str = ..., length: int = ...) -> LazyString: ...
|
||||
def fetch_lazy(self) -> None: ...
|
||||
|
||||
# Types
|
||||
|
||||
def lookup_type(name: str, block: Block = ...) -> Type: ...
|
||||
|
||||
class Type:
|
||||
|
||||
alignof: int
|
||||
code: int
|
||||
dynamic: bool
|
||||
name: str
|
||||
sizeof: int
|
||||
tag: str | None
|
||||
objfile: Objfile | None
|
||||
|
||||
def fields(self) -> list[Field]: ...
|
||||
def array(self, n1: int | Value, n2: int | Value = ...) -> Type: ...
|
||||
def vector(self, n1: int, n2: int = ...) -> Type: ...
|
||||
def const(self) -> Type: ...
|
||||
def volatile(self) -> Type: ...
|
||||
def unqualified(self) -> Type: ...
|
||||
def range(self) -> tuple[int, int]: ...
|
||||
def reference(self) -> Type: ...
|
||||
def pointer(self) -> Type: ...
|
||||
def strip_typedefs(self) -> Type: ...
|
||||
def target(self) -> Type: ...
|
||||
def template_argument(self, n: int, block: Block = ...) -> Type: ...
|
||||
def optimized_out(self) -> Value: ...
|
||||
|
||||
class Field:
|
||||
|
||||
bitpos: int
|
||||
enumval: int
|
||||
name: str | None
|
||||
artificial: bool
|
||||
is_base_class: bool
|
||||
bitsize: int
|
||||
type: Type
|
||||
parent_type: Type
|
||||
|
||||
TYPE_CODE_PTR: int
|
||||
TYPE_CODE_ARRAY: int
|
||||
TYPE_CODE_STRUCT: int
|
||||
TYPE_CODE_UNION: int
|
||||
TYPE_CODE_ENUM: int
|
||||
TYPE_CODE_FLAGS: int
|
||||
TYPE_CODE_FUNC: int
|
||||
TYPE_CODE_INT: int
|
||||
TYPE_CODE_FLT: int
|
||||
TYPE_CODE_VOID: int
|
||||
TYPE_CODE_SET: int
|
||||
TYPE_CODE_RANGE: int
|
||||
TYPE_CODE_STRING: int
|
||||
TYPE_CODE_BITSTRING: int
|
||||
TYPE_CODE_ERROR: int
|
||||
TYPE_CODE_METHOD: int
|
||||
TYPE_CODE_METHODPTR: int
|
||||
TYPE_CODE_MEMBERPTR: int
|
||||
TYPE_CODE_REF: int
|
||||
TYPE_CODE_RVALUE_REF: int
|
||||
TYPE_CODE_CHAR: int
|
||||
TYPE_CODE_BOOL: int
|
||||
TYPE_CODE_COMPLEX: int
|
||||
TYPE_CODE_TYPEDEF: int
|
||||
TYPE_CODE_NAMESPACE: int
|
||||
TYPE_CODE_DECFLOAT: int
|
||||
TYPE_CODE_INTERNAL_FUNCTION: int
|
||||
|
||||
# Pretty Printing
|
||||
|
||||
class _PrettyPrinter(Protocol):
|
||||
# TODO: The "children" and "display_hint" methods are optional for
|
||||
# pretty-printers. Unfortunately, there is no such thing as an optional
|
||||
# method in the type system at the moment.
|
||||
#
|
||||
# def children(self) -> Iterator[tuple[str, _ValueOrNative]]: ...
|
||||
# def display_hint(self) -> str | None: ...
|
||||
def to_string(self) -> str | LazyString: ...
|
||||
|
||||
_PrettyPrinterLookupFunction: TypeAlias = Callable[[Value], _PrettyPrinter | None]
|
||||
|
||||
def default_visualizer(__value: Value) -> _PrettyPrinter | None: ...
|
||||
|
||||
# Selecting Pretty-Printers
|
||||
|
||||
pretty_printers: list[_PrettyPrinterLookupFunction]
|
||||
|
||||
# Filtering Frames
|
||||
|
||||
class _FrameFilter(Protocol):
|
||||
|
||||
name: str
|
||||
enabled: bool
|
||||
priority: int
|
||||
|
||||
def filter(self, iterator: Iterator[_FrameDecorator]) -> Iterator[_FrameDecorator]: ...
|
||||
|
||||
# Decorating Frames
|
||||
|
||||
class _SymValueWrapper(Protocol):
|
||||
def symbol(self) -> Symbol | str: ...
|
||||
def value(self) -> _ValueOrNative | None: ...
|
||||
|
||||
class _FrameDecorator(Protocol):
|
||||
def elided(self) -> Iterator[Frame] | None: ...
|
||||
def function(self) -> str | None: ...
|
||||
def address(self) -> int | None: ...
|
||||
def filename(self) -> str | None: ...
|
||||
def line(self) -> int | None: ...
|
||||
def frame_args(self) -> Iterator[_SymValueWrapper] | None: ...
|
||||
def frame_locals(self) -> Iterator[_SymValueWrapper] | None: ...
|
||||
def inferior_frame(self) -> Frame: ...
|
||||
|
||||
# Unwinding Frames
|
||||
|
||||
class PendingFrame:
|
||||
def read_register(self, __reg: str | RegisterDescriptor | int) -> Value: ...
|
||||
def create_unwind_info(self, __frame_id: object) -> UnwindInfo: ...
|
||||
def architecture(self) -> Architecture: ...
|
||||
def level(self) -> int: ...
|
||||
|
||||
class UnwindInfo:
|
||||
def add_saved_register(self, __reg: str | RegisterDescriptor | int, __value: Value) -> None: ...
|
||||
|
||||
class Unwinder:
|
||||
name: str
|
||||
enabled: bool
|
||||
|
||||
def __call__(self, pending_frame: Frame) -> UnwindInfo | None: ...
|
||||
|
||||
# Xmethods: the API is defined in the "xmethod" module
|
||||
|
||||
# Inferiors
|
||||
|
||||
def inferiors() -> tuple[Inferior, ...]: ...
|
||||
def selected_inferior() -> Inferior: ...
|
||||
|
||||
BufferType: TypeAlias = _typeshed.ReadableBuffer
|
||||
|
||||
class Inferior:
|
||||
num: int
|
||||
connection_num: int
|
||||
pid: int
|
||||
was_attached: bool
|
||||
progspace: Progspace
|
||||
|
||||
def is_valid(self) -> bool: ...
|
||||
def threads(self) -> tuple[InferiorThread, ...]: ...
|
||||
def architecture(self) -> Architecture: ...
|
||||
def read_memory(self, address: _ValueOrInt, length: int) -> memoryview: ...
|
||||
def write_memory(self, address: _ValueOrInt, buffer: BufferType, length: int = ...) -> memoryview: ...
|
||||
def search_memory(self, address: _ValueOrInt, length: int, pattern: BufferType) -> int | None: ...
|
||||
def thread_from_handle(self, handle: Value) -> InferiorThread: ...
|
||||
|
||||
# Threads
|
||||
|
||||
def selected_thread() -> InferiorThread: ...
|
||||
|
||||
class InferiorThread:
|
||||
name: str | None
|
||||
num: int
|
||||
global_num: int
|
||||
ptid: tuple[int, int, int]
|
||||
inferior: Inferior
|
||||
|
||||
def is_valid(self) -> bool: ...
|
||||
def switch(self) -> None: ...
|
||||
def is_stopped(self) -> bool: ...
|
||||
def is_running(self) -> bool: ...
|
||||
def is_exited(self) -> bool: ...
|
||||
def handle(self) -> bytes: ...
|
||||
|
||||
# Recordings
|
||||
|
||||
def start_recording(__method: str = ..., __format: str = ...) -> Record: ...
|
||||
def current_recording() -> Record | None: ...
|
||||
def stop_recording() -> None: ...
|
||||
|
||||
class Record:
|
||||
method: str
|
||||
format: str | None
|
||||
begin: Instruction
|
||||
end: Instruction
|
||||
replay_position: Instruction | None
|
||||
instruction_history: list[Instruction]
|
||||
function_call_history: list[RecordFunctionSegment]
|
||||
|
||||
def goto(self, __instruction: Instruction) -> None: ...
|
||||
|
||||
class Instruction:
|
||||
pc: int
|
||||
data: memoryview
|
||||
decoded: str
|
||||
size: int
|
||||
|
||||
class RecordInstruction(Instruction):
|
||||
number: int
|
||||
sal: Symtab_and_line | None
|
||||
is_speculative: bool
|
||||
|
||||
class RecordGap(Instruction):
|
||||
number: int
|
||||
error_code: int
|
||||
error_string: str
|
||||
|
||||
class RecordFunctionSegment:
|
||||
number: int
|
||||
symbol: Symbol | None
|
||||
level: int | None
|
||||
instructions: list[RecordInstruction | RecordGap]
|
||||
up: RecordFunctionSegment | None
|
||||
prev: RecordFunctionSegment | None
|
||||
next: RecordFunctionSegment | None
|
||||
|
||||
# CLI Commands
|
||||
|
||||
class Command:
|
||||
def __init__(self, name: str, command_class: int, completer_class: int = ..., prefix: bool = ...) -> None: ...
|
||||
def dont_repeat(self) -> None: ...
|
||||
def invoke(self, argument: str, from_tty: bool) -> None: ...
|
||||
def complete(self, text: str, word: str) -> object: ...
|
||||
|
||||
def string_to_argv(__argv: str) -> list[str]: ...
|
||||
|
||||
COMMAND_NONE: int
|
||||
COMMAND_RUNNING: int
|
||||
COMMAND_DATA: int
|
||||
COMMAND_STACK: int
|
||||
COMMAND_FILES: int
|
||||
COMMAND_SUPPORT: int
|
||||
COMMAND_STATUS: int
|
||||
COMMAND_BREAKPOINTS: int
|
||||
COMMAND_TRACEPOINTS: int
|
||||
COMMAND_TUI: int
|
||||
COMMAND_USER: int
|
||||
COMMAND_OBSCURE: int
|
||||
COMMAND_MAINTENANCE: int
|
||||
|
||||
COMPLETE_NONE: int
|
||||
COMPLETE_FILENAME: int
|
||||
COMPLETE_LOCATION: int
|
||||
COMPLETE_COMMAND: int
|
||||
COMPLETE_SYMBOL: int
|
||||
COMPLETE_EXPRESSION: int
|
||||
|
||||
# GDB/MI Commands
|
||||
|
||||
class MICommand:
|
||||
name: str
|
||||
installed: bool
|
||||
|
||||
def __init__(self, name: str) -> None: ...
|
||||
def invoke(self, arguments: list[str]) -> dict[str, object] | None: ...
|
||||
|
||||
# Parameters
|
||||
|
||||
class Parameter:
|
||||
set_doc: str
|
||||
show_doc: str
|
||||
value: object
|
||||
|
||||
def __init__(self, name: str, command_class: int, parameter_class: int, enum_sequence: Sequence[str] = ...) -> None: ...
|
||||
def get_set_string(self) -> str: ...
|
||||
def get_show_string(self, svalue: str) -> str: ...
|
||||
|
||||
PARAM_BOOLEAN: int
|
||||
PARAM_AUTO_BOOLEAN: int
|
||||
PARAM_UINTEGER: int
|
||||
PARAM_INTEGER: int
|
||||
PARAM_STRING: int
|
||||
PARAM_STRING_NOESCAPE: int
|
||||
PARAM_OPTIONAL_FILENAME: int
|
||||
PARAM_FILENAME: int
|
||||
PARAM_ZINTEGER: int
|
||||
PARAM_ZUINTEGER: int
|
||||
PARAM_ZUINTEGER_UNLIMITED: int
|
||||
PARAM_ENUM: int
|
||||
|
||||
# Convenience functions
|
||||
|
||||
class Function:
|
||||
def __init__(self, name: str) -> None: ...
|
||||
def invoke(self, *args: Value) -> _ValueOrNative: ...
|
||||
|
||||
# Progspaces
|
||||
|
||||
def current_progspace() -> Progspace | None: ...
|
||||
def progspaces() -> Sequence[Progspace]: ...
|
||||
|
||||
class Progspace:
|
||||
filename: str
|
||||
pretty_printers: list[_PrettyPrinterLookupFunction]
|
||||
type_printers: list[gdb.types._TypePrinter]
|
||||
frame_filters: list[_FrameFilter]
|
||||
|
||||
def block_for_pc(self, __pc: int) -> Block | None: ...
|
||||
def find_pc_line(self, __pc: int) -> Symtab_and_line: ...
|
||||
def is_valid(self) -> bool: ...
|
||||
def objfiles(self) -> Sequence[Objfile]: ...
|
||||
def solib_name(self, __address: int) -> str | None: ...
|
||||
|
||||
# Objfiles
|
||||
|
||||
def current_objfile() -> Objfile | None: ...
|
||||
def objfiles() -> list[Objfile]: ...
|
||||
def lookup_objfile(name: str, by_build_id: bool = ...) -> Objfile | None: ...
|
||||
|
||||
class Objfile:
|
||||
filename: str | None
|
||||
username: str | None
|
||||
owner: Objfile | None
|
||||
build_id: str | None
|
||||
progspace: Progspace
|
||||
pretty_printers: list[_PrettyPrinterLookupFunction]
|
||||
type_printers: list[gdb.types._TypePrinter]
|
||||
frame_filters: list[_FrameFilter]
|
||||
|
||||
def is_valid(self) -> bool: ...
|
||||
def add_separate_debug_file(self, file: str) -> None: ...
|
||||
def lookup_global_symbol(self, name: str, domain: int = ...) -> Symbol | None: ...
|
||||
def lookup_static_method(self, name: str, domain: int = ...) -> Symbol | None: ...
|
||||
|
||||
# Frames
|
||||
|
||||
def selected_frame() -> Frame: ...
|
||||
def newest_frame() -> Frame: ...
|
||||
def frame_stop_reason_string(__code: int) -> str: ...
|
||||
def invalidate_cached_frames() -> None: ...
|
||||
|
||||
NORMAL_FRAME: int
|
||||
INLINE_FRAME: int
|
||||
TAILCALL_FRAME: int
|
||||
SIGTRAMP_FRAME: int
|
||||
ARCH_FRAME: int
|
||||
SENTINEL_FRAME: int
|
||||
|
||||
FRAME_UNWIND_NO_REASON: int
|
||||
FRAME_UNWIND_NULL_ID: int
|
||||
FRAME_UNWIND_OUTERMOST: int
|
||||
FRAME_UNWIND_UNAVAILABLE: int
|
||||
FRAME_UNWIND_INNER_ID: int
|
||||
FRAME_UNWIND_SAME_ID: int
|
||||
FRAME_UNWIND_NO_SAVED_PC: int
|
||||
FRAME_UNWIND_MEMORY_ERROR: int
|
||||
FRAME_UNWIND_FIRST_ERROR: int
|
||||
|
||||
class Frame:
|
||||
def is_valid(self) -> bool: ...
|
||||
def name(self) -> str | None: ...
|
||||
def architecture(self) -> Architecture: ...
|
||||
def type(self) -> int: ...
|
||||
def unwind_stop_reason(self) -> int: ...
|
||||
def pc(self) -> Value: ...
|
||||
def block(self) -> Block: ...
|
||||
def function(self) -> Symbol: ...
|
||||
def older(self) -> Frame | None: ...
|
||||
def newer(self) -> Frame | None: ...
|
||||
def find_sal(self) -> Symtab_and_line: ...
|
||||
def read_register(self, __register: str | RegisterDescriptor | int) -> Value: ...
|
||||
def read_var(self, __variable: str | Symbol, block: Block | None = ...) -> Value: ...
|
||||
def select(self) -> None: ...
|
||||
def level(self) -> int: ...
|
||||
|
||||
# Blocks
|
||||
|
||||
def block_for_pc(pc: int) -> Block | None: ...
|
||||
|
||||
class Block:
|
||||
start: int
|
||||
end: int
|
||||
function: Symbol | None
|
||||
superblock: Block | None
|
||||
global_block: Block
|
||||
static_block: Block | None
|
||||
is_global: bool
|
||||
is_static: bool
|
||||
|
||||
def is_valid(self) -> bool: ...
|
||||
|
||||
# Symbols
|
||||
|
||||
def lookup_symbol(name: str, block: Block | None = ..., domain: int = ...) -> tuple[Symbol | None, bool]: ...
|
||||
def lookup_global_symbol(name: str, domain: int = ...) -> Symbol | None: ...
|
||||
def lookup_static_symbol(name: str, domain: int = ...) -> Symbol | None: ...
|
||||
def lookup_static_symbols(name: str, domain: int = ...) -> list[Symbol]: ...
|
||||
|
||||
class Symbol:
|
||||
|
||||
type: Type | None
|
||||
symtab: Symtab
|
||||
line: int
|
||||
name: str
|
||||
linkage_name: str
|
||||
print_name: str
|
||||
addr_class: int
|
||||
needs_frame: bool
|
||||
is_argument: bool
|
||||
is_constant: bool
|
||||
is_function: bool
|
||||
is_variable: bool
|
||||
|
||||
def is_valid(self) -> bool: ...
|
||||
def value(self, __frame: Frame = ...) -> Value: ...
|
||||
|
||||
SYMBOL_UNDEF_DOMAIN: int
|
||||
SYMBOL_VAR_DOMAIN: int
|
||||
SYMBOL_STRUCT_DOMAIN: int
|
||||
SYMBOL_LABEL_DOMAIN: int
|
||||
SYMBOL_MODULE_DOMAIN: int
|
||||
SYMBOL_COMMON_BLOCK_DOMAIN: int
|
||||
|
||||
SYMBOL_LOC_UNDEF: int
|
||||
SYMBOL_LOC_CONST: int
|
||||
SYMBOL_LOC_STATIC: int
|
||||
SYMBOL_LOC_REGISTER: int
|
||||
SYMBOL_LOC_ARG: int
|
||||
SYMBOL_LOC_REF_ARG: int
|
||||
SYMBOL_LOC_REGPARM_ADDR: int
|
||||
SYMBOL_LOC_LOCAL: int
|
||||
SYMBOL_LOC_TYPEDEF: int
|
||||
SYMBOL_LOC_LABEL: int
|
||||
SYMBOL_LOC_BLOCK: int
|
||||
SYMBOL_LOC_CONST_BYTES: int
|
||||
SYMBOL_LOC_UNRESOLVED: int
|
||||
SYMBOL_LOC_OPTIMIZED_OUT: int
|
||||
SYMBOL_LOC_COMPUTED: int
|
||||
SYMBOL_LOC_COMMON_BLOCK: int
|
||||
|
||||
# Symbol tables
|
||||
|
||||
class Symtab_and_line:
|
||||
|
||||
symtab: Symtab
|
||||
pc: int
|
||||
last: int
|
||||
line: int
|
||||
|
||||
def is_valid(self) -> bool: ...
|
||||
|
||||
class Symtab:
|
||||
|
||||
filename: str
|
||||
objfile: Objfile
|
||||
producer: str
|
||||
|
||||
def is_valid(self) -> bool: ...
|
||||
def fullname(self) -> str: ...
|
||||
def global_block(self) -> Block: ...
|
||||
def static_block(self) -> Block: ...
|
||||
def linetable(self) -> LineTable: ...
|
||||
|
||||
# Line Tables
|
||||
|
||||
class LineTableEntry:
|
||||
line: int
|
||||
pc: int
|
||||
|
||||
class LineTable(Iterator[LineTableEntry]):
|
||||
def __iter__(self: _typeshed.Self) -> _typeshed.Self: ...
|
||||
def __next__(self) -> LineTableEntry: ...
|
||||
def line(self, __line: int) -> tuple[LineTableEntry, ...]: ...
|
||||
def has_line(self, __line: int) -> bool: ...
|
||||
def source_lnes(self) -> list[int]: ...
|
||||
|
||||
# Breakpoints
|
||||
|
||||
class Breakpoint:
|
||||
@overload
|
||||
def __init__(
|
||||
self, spec: str, type: int = ..., wp_class: int = ..., internal: bool = ..., temporary: bool = ..., qualified: bool = ...
|
||||
) -> None: ...
|
||||
@overload
|
||||
def __init__(
|
||||
self,
|
||||
source: str = ...,
|
||||
function: str = ...,
|
||||
label: str = ...,
|
||||
line: int = ...,
|
||||
internal: bool = ...,
|
||||
temporary: bool = ...,
|
||||
qualified: bool = ...,
|
||||
) -> None: ...
|
||||
def stop(self) -> bool: ...
|
||||
def is_valid(self) -> bool: ...
|
||||
def delete(self) -> None: ...
|
||||
|
||||
enabled: bool
|
||||
silent: bool
|
||||
pending: bool
|
||||
thread: int | None
|
||||
task: str | None
|
||||
ignore_count: int
|
||||
number: int
|
||||
type: int
|
||||
visible: bool
|
||||
temporary: bool
|
||||
hit_count: int
|
||||
location: str | None
|
||||
expression: str | None
|
||||
condition: str | None
|
||||
commands: str | None
|
||||
|
||||
BP_BREAKPOINT: int
|
||||
BP_HARDWARE_BREAKPOINT: int
|
||||
BP_WATCHPOINT: int
|
||||
BP_HARDWARE_WATCHPOINT: int
|
||||
BP_READ_WATCHPOINT: int
|
||||
BP_ACCESS_WATCHPOINT: int
|
||||
BP_CATCHPOINT: int
|
||||
|
||||
WP_READ: int
|
||||
WP_WRITE: int
|
||||
WP_ACCESS: int
|
||||
|
||||
# Finish Breakpoints
|
||||
|
||||
class FinishBreakpoint(Breakpoint):
|
||||
return_value: Value | None
|
||||
|
||||
def __init__(self, frame: Frame = ..., internal: bool = ...) -> None: ...
|
||||
def out_of_scope(self) -> None: ...
|
||||
|
||||
# Lazy strings
|
||||
|
||||
class LazyString:
|
||||
def value(self) -> Value: ...
|
||||
|
||||
address: Value
|
||||
length: int
|
||||
encoding: str
|
||||
type: Type
|
||||
|
||||
# Architectures
|
||||
|
||||
class Architecture:
|
||||
def name(self) -> str: ...
|
||||
def disassemble(self, start_pc: int, end_pc: int = ..., count: int = ...) -> list[dict[str, object]]: ...
|
||||
def integer_type(self, size: int, signed: bool = ...) -> Type: ...
|
||||
def registers(self, reggroup: str = ...) -> RegisterDescriptorIterator: ...
|
||||
def register_groups(self) -> RegisterGroupsIterator: ...
|
||||
|
||||
# Registers
|
||||
|
||||
class RegisterDescriptor:
|
||||
name: str
|
||||
|
||||
class RegisterDescriptorIterator(Iterator[RegisterDescriptor]):
|
||||
def __next__(self) -> RegisterDescriptor: ...
|
||||
def find(self, name: str) -> RegisterDescriptor | None: ...
|
||||
|
||||
class RegisterGroup:
|
||||
name: str
|
||||
|
||||
class RegisterGroupsIterator(Iterator[RegisterGroup]):
|
||||
def __next__(self) -> RegisterGroup: ...
|
||||
|
||||
# Connections
|
||||
|
||||
class TargetConnection:
|
||||
def is_valid(self) -> bool: ...
|
||||
|
||||
num: int
|
||||
type: str
|
||||
description: str
|
||||
details: str | None
|
||||
|
||||
class RemoteTargetConnection(TargetConnection):
|
||||
def send_packet(self, packet: str | bytes) -> bytes: ...
|
||||
|
||||
# TUI Windows
|
||||
|
||||
def register_window_type(name: str, factory: Callable[[TuiWindow], _Window]) -> None: ...
|
||||
|
||||
class TuiWindow:
|
||||
width: int
|
||||
height: int
|
||||
title: str
|
||||
|
||||
def is_valid(self) -> bool: ...
|
||||
def erase(self) -> None: ...
|
||||
def write(self, __string: str, __full_window: bool = ...) -> None: ...
|
||||
|
||||
class _Window(Protocol):
|
||||
def close(self) -> None: ...
|
||||
def render(self) -> None: ...
|
||||
def hscroll(self, num: int) -> None: ...
|
||||
def vscroll(self, num: int) -> None: ...
|
||||
def click(self, x: int, y: int, button: int) -> None: ...
|
||||
131
stubs/gdb/gdb/events.pyi
Normal file
131
stubs/gdb/gdb/events.pyi
Normal file
@@ -0,0 +1,131 @@
|
||||
from collections.abc import Callable, Sequence
|
||||
|
||||
import gdb
|
||||
|
||||
class ThreadEvent:
|
||||
inferior_thread: gdb.InferiorThread
|
||||
|
||||
class ContinueEvent(ThreadEvent): ...
|
||||
|
||||
class ContinueEventRegistry:
|
||||
def connect(self, __object: Callable[[ContinueEvent], object]) -> None: ...
|
||||
def disconnect(self, __object: Callable[[ContinueEvent], object]) -> None: ...
|
||||
|
||||
cont: ContinueEventRegistry
|
||||
|
||||
class ExitedEvent:
|
||||
exit_code: int
|
||||
inferior: gdb.Inferior
|
||||
|
||||
class ExitedEventRegistry:
|
||||
def connect(self, __object: Callable[[ExitedEvent], object]) -> None: ...
|
||||
def disconnect(self, __object: Callable[[ExitedEvent], object]) -> None: ...
|
||||
|
||||
exited: ExitedEventRegistry
|
||||
|
||||
class StopEvent(ThreadEvent):
|
||||
stop_signal: str
|
||||
|
||||
class BreakpointEvent(StopEvent):
|
||||
breakpoints = Sequence[gdb.Breakpoint]
|
||||
breakkpoint: gdb.Breakpoint
|
||||
|
||||
class StopEventRegistry:
|
||||
def connect(self, __object: Callable[[StopEvent], object]) -> None: ...
|
||||
def disconnect(self, __object: Callable[[StopEvent], object]) -> None: ...
|
||||
|
||||
stop: StopEventRegistry
|
||||
|
||||
class NewObjFileEvent:
|
||||
new_objfile: gdb.Objfile
|
||||
|
||||
class NewObjFileEventRegistry:
|
||||
def connect(self, __object: Callable[[NewObjFileEvent], object]) -> None: ...
|
||||
def disconnect(self, __object: Callable[[NewObjFileEvent], object]) -> None: ...
|
||||
|
||||
new_objfile: NewObjFileEventRegistry
|
||||
|
||||
class ClearObjFilesEvent:
|
||||
progspace: gdb.Progspace
|
||||
|
||||
class ClearObjFilesEventRegistry:
|
||||
def connect(self, __object: Callable[[ClearObjFilesEvent], object]) -> None: ...
|
||||
def disconnect(self, __object: Callable[[ClearObjFilesEvent], object]) -> None: ...
|
||||
|
||||
clear_objfiles: ClearObjFilesEventRegistry
|
||||
|
||||
class InferiorCallEvent: ...
|
||||
|
||||
class InferiorCallPreEvent(InferiorCallEvent):
|
||||
ptid: gdb.InferiorThread
|
||||
address: gdb.Value
|
||||
|
||||
class InferiorCallPostEvent(InferiorCallEvent):
|
||||
ptid: gdb.InferiorThread
|
||||
address: gdb.Value
|
||||
|
||||
class InferiorCallEventRegistry:
|
||||
def connect(self, __object: Callable[[InferiorCallEvent], object]) -> None: ...
|
||||
def disconnect(self, __object: Callable[[InferiorCallEvent], object]) -> None: ...
|
||||
|
||||
inferior_call: InferiorCallEventRegistry
|
||||
|
||||
class MemoryChangedEvent:
|
||||
address: gdb.Value
|
||||
length: int
|
||||
|
||||
class MemoryChangedEventRegistry:
|
||||
def connect(self, __object: Callable[[MemoryChangedEvent], object]) -> None: ...
|
||||
def disconnect(self, __object: Callable[[MemoryChangedEvent], object]) -> None: ...
|
||||
|
||||
memory_changed: MemoryChangedEventRegistry
|
||||
|
||||
class RegisterChangedEvent:
|
||||
frame: gdb.Frame
|
||||
regnum: str
|
||||
|
||||
class RegisterChangedEventRegistry:
|
||||
def connect(self, __object: Callable[[RegisterChangedEvent], object]) -> None: ...
|
||||
def disconnect(self, __object: Callable[[RegisterChangedEvent], object]) -> None: ...
|
||||
|
||||
register_changed: RegisterChangedEventRegistry
|
||||
|
||||
class BreakpointEventRegistry:
|
||||
def connect(self, __object: Callable[[gdb.Breakpoint], object]) -> None: ...
|
||||
def disconnect(self, __object: Callable[[gdb.Breakpoint], object]) -> None: ...
|
||||
|
||||
breakpoint_created: BreakpointEventRegistry
|
||||
breakpoint_modified: BreakpointEventRegistry
|
||||
breakpoint_deleted: BreakpointEventRegistry
|
||||
|
||||
class BeforePromptEventRegistry:
|
||||
def connect(self, __object: Callable[[], object]) -> None: ...
|
||||
def disconnect(self, __object: Callable[[], object]) -> None: ...
|
||||
|
||||
before_prompt: BeforePromptEventRegistry
|
||||
|
||||
class NewInferiorEvent:
|
||||
inferior: gdb.Inferior
|
||||
|
||||
class NewInferiorEventRegistry:
|
||||
def connect(self, __object: Callable[[NewInferiorEvent], object]) -> None: ...
|
||||
def disconnect(self, __object: Callable[[NewInferiorEvent], object]) -> None: ...
|
||||
|
||||
new_inferior: NewInferiorEventRegistry
|
||||
|
||||
class InferiorDeletedEvent:
|
||||
inferior: gdb.Inferior
|
||||
|
||||
class InferiorDeletedEventRegistry:
|
||||
def connect(self, __object: Callable[[InferiorDeletedEvent], object]) -> None: ...
|
||||
def disconnect(self, __object: Callable[[InferiorDeletedEvent], object]) -> None: ...
|
||||
|
||||
inferior_deleted: InferiorDeletedEventRegistry
|
||||
|
||||
class NewThreadEvent(ThreadEvent): ...
|
||||
|
||||
class NewThreadEventRegistry:
|
||||
def connect(self, __object: Callable[[NewThreadEvent], object]) -> None: ...
|
||||
def disconnect(self, __object: Callable[[NewThreadEvent], object]) -> None: ...
|
||||
|
||||
new_thread: NewThreadEventRegistry
|
||||
31
stubs/gdb/gdb/printing.pyi
Normal file
31
stubs/gdb/gdb/printing.pyi
Normal file
@@ -0,0 +1,31 @@
|
||||
from collections.abc import Callable, Iterable
|
||||
|
||||
import gdb
|
||||
from gdb import _PrettyPrinterLookupFunction
|
||||
|
||||
class PrettyPrinter:
|
||||
|
||||
name: str
|
||||
subprinters: list[SubPrettyPrinter]
|
||||
enabled: bool
|
||||
|
||||
def __init__(self, name: str, subprinters: Iterable[SubPrettyPrinter] | None = ...) -> None: ...
|
||||
def __call__(self, val: gdb.Value) -> gdb._PrettyPrinter | None: ...
|
||||
|
||||
class SubPrettyPrinter:
|
||||
|
||||
name: str
|
||||
enabled: bool
|
||||
|
||||
def __init__(self, name: str) -> None: ...
|
||||
|
||||
GenPrinterFunction = Callable[[gdb.Value], PrettyPrinter]
|
||||
|
||||
class RegexpCollectionPrettyPrinter(PrettyPrinter):
|
||||
def __init__(self, name: str) -> None: ...
|
||||
def add_printer(self, name: str, regexp: str, gen_printer: _PrettyPrinterLookupFunction) -> None: ...
|
||||
|
||||
class FlagEnumerationPrinter(PrettyPrinter):
|
||||
def __init__(self, enum_type: str) -> None: ...
|
||||
|
||||
def register_pretty_printer(obj: gdb.Objfile | gdb.Progspace | None, printer: PrettyPrinter, replace: bool = ...) -> None: ...
|
||||
1
stubs/gdb/gdb/prompt.pyi
Normal file
1
stubs/gdb/gdb/prompt.pyi
Normal file
@@ -0,0 +1 @@
|
||||
def substitute_prompt(string: str) -> str: ...
|
||||
24
stubs/gdb/gdb/types.pyi
Normal file
24
stubs/gdb/gdb/types.pyi
Normal file
@@ -0,0 +1,24 @@
|
||||
from collections.abc import Iterator
|
||||
from typing import Protocol
|
||||
|
||||
import gdb
|
||||
|
||||
def get_basic_type(type_: gdb.Type) -> gdb.Type: ...
|
||||
def has_field(type_: gdb.Type, field: str) -> bool: ...
|
||||
def make_enum_dict(type_: gdb.Type) -> dict[str, int]: ...
|
||||
def deep_items(type_: gdb.Type) -> Iterator[tuple[str, gdb.Field]]: ...
|
||||
def get_type_recognizers() -> list[_TypeRecognizer]: ...
|
||||
def apply_type_recognizers(recognizers: list[_TypeRecognizer], type_obj: gdb.Type) -> str | None: ...
|
||||
def register_type_printer(locus: gdb.Objfile | gdb.Progspace | None, printer: _TypePrinter) -> None: ...
|
||||
|
||||
class _TypePrinter(Protocol):
|
||||
enabled: bool
|
||||
name: str
|
||||
|
||||
def instantiate(self) -> _TypeRecognizer | None: ...
|
||||
|
||||
class _TypeRecognizer(Protocol):
|
||||
def recognize(self, __type: gdb.Type) -> str | None: ...
|
||||
|
||||
class TypePrinter:
|
||||
def __init__(self, name: str) -> None: ...
|
||||
3
stubs/gdb/gdb/unwinder.pyi
Normal file
3
stubs/gdb/gdb/unwinder.pyi
Normal file
@@ -0,0 +1,3 @@
|
||||
import gdb
|
||||
|
||||
def register_unwinder(locus: gdb.Objfile | gdb.Progspace | None, unwinder: gdb.Unwinder, replace: bool = ...) -> None: ...
|
||||
34
stubs/gdb/gdb/xmethod.pyi
Normal file
34
stubs/gdb/gdb/xmethod.pyi
Normal file
@@ -0,0 +1,34 @@
|
||||
from collections.abc import Sequence
|
||||
from typing import Protocol
|
||||
|
||||
import gdb
|
||||
|
||||
def register_xmethod_matcher(
|
||||
locus: gdb.Objfile | gdb.Progspace | None, matcher: _XMethodMatcher, replace: bool = ...
|
||||
) -> None: ...
|
||||
|
||||
class _XMethod(Protocol):
|
||||
name: str
|
||||
enabled: bool
|
||||
|
||||
class XMethod:
|
||||
name: str
|
||||
enabled: bool
|
||||
|
||||
def __init__(self, name: str) -> None: ...
|
||||
|
||||
class _XMethodWorker(Protocol):
|
||||
def get_arg_types(self) -> Sequence[gdb.Type]: ...
|
||||
def get_result_type(self, *args: gdb.Value) -> gdb.Type: ...
|
||||
def __call__(self, *args: gdb.Value) -> object: ...
|
||||
|
||||
class XMethodWorker: ...
|
||||
|
||||
class _XMethodMatcher(Protocol):
|
||||
enabled: bool
|
||||
methods: list[_XMethod]
|
||||
|
||||
def __init__(self, name: str) -> None: ...
|
||||
def match(self, class_type: gdb.Type, method_name: str) -> _XMethodWorker: ...
|
||||
|
||||
class XMethodMatcher: ...
|
||||
Reference in New Issue
Block a user