gdb_select_frame
Select a stack frame by number to focus the GDB debugging session on that frame's context. Frame 0 is innermost; higher numbers are outer frames. After selecting, commands inspect variables and evaluate expressions within that frame.
Instructions
Select a specific stack frame to make it the current frame. Frame 0 is the innermost (current) frame, higher numbers are outer frames. After selecting a frame, commands like gdb_get_variables and gdb_evaluate_expression will operate in the context of that frame. Use gdb_get_backtrace to see available frames and their numbers. Requires session_id parameter (obtained from gdb_start_session).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Session ID from gdb_start_session | |
| frame_number | Yes | Frame number (0 is current/innermost frame) |
Implementation Reference
- src/gdb_mcp/gdb_interface.py:917-949 (handler)The GDBSession.select_frame() method sends GDB/MI command '-stack-select-frame' to select a stack frame, then retrieves frame info with '-stack-info-frame' and returns the result with frame number and details.
def select_frame(self, frame_number: int) -> dict[str, Any]: """ Select a specific stack frame to make it the current frame. Args: frame_number: Frame number (0 is innermost/current frame) Returns: Dict with status and frame information """ result = self.execute_command(f"-stack-select-frame {frame_number}") if result["status"] == "error": return result # Get info about the selected frame frame_info_result = self.execute_command("-stack-info-frame") if frame_info_result["status"] == "error": return { "status": "success", "frame_number": frame_number, "message": f"Frame {frame_number} selected", } mi_result = self._extract_mi_result(frame_info_result) or {} frame_info = mi_result.get("frame", {}) return { "status": "success", "frame_number": frame_number, "frame": frame_info, } - src/gdb_mcp/server.py:168-170 (schema)Pydantic model for gdb_select_frame input validation, requiring session_id and frame_number.
class FrameSelectArgs(BaseModel): session_id: int = Field(..., description="Session ID from gdb_start_session") frame_number: int = Field(..., description="Frame number (0 is current/innermost frame)") - src/gdb_mcp/server.py:277-288 (registration)MCP Tool registration for gdb_select_frame with description and input schema reference.
Tool( name="gdb_select_frame", description=( "Select a specific stack frame to make it the current frame. " "Frame 0 is the innermost (current) frame, higher numbers are outer frames. " "After selecting a frame, commands like gdb_get_variables and gdb_evaluate_expression " "will operate in the context of that frame. " "Use gdb_get_backtrace to see available frames and their numbers. " "Requires session_id parameter (obtained from gdb_start_session)." ), inputSchema=FrameSelectArgs.model_json_schema(), ), - src/gdb_mcp/server.py:508-510 (handler)MCP tool call handler that parses arguments via FrameSelectArgs and delegates to session.select_frame().
elif name == "gdb_select_frame": frame_args: FrameSelectArgs = FrameSelectArgs(**arguments) result = session.select_frame(frame_number=frame_args.frame_number)