Skip to main content
Glama

Correlate Source and Disassembly

debug_source_disassembly
Read-onlyIdempotent

Correlate source locations, disassembly, registers, and pointer-like locals in a stopped crash to pinpoint low-level root-cause evidence. Read-only, does not resume the target.

Instructions

Correlate source locations, disassembly, registers, and pointer-like locals for the raw fault frame and the first likely project-controlled frame. Use this for low-level root-cause evidence when a crash is already stopped and instruction/operand provenance matters; prefer debug_diagnose_stop for a broader ranked diagnosis. This is read-only, does not resume the target, and returns frame-selection reasoning, both correlations, operand bindings, and any best-effort collection errors.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
analysisNoHints used to distinguish project code from runtime, system, or third-party frames.
threadIdNoStopped DAP thread to inspect; omit to use the session-selected stopped thread.
sessionIdNoOptional DAP session ID. Omit to use the backward-compatible default session.
stackLevelsNoMaximum stack frames considered while selecting the project-controlled frame.
disassembleAfterNoInstructions after the selected instruction included in each disassembly window.
disassembleBeforeNoInstructions before the selected instruction included in each disassembly window.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
projectFrameYes
frameSelectionYes
operandAnalysisYes
collectionErrorsNo
faultCorrelationYes
projectCorrelationYes

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed2 schema fields changedv0.17.0
    • addedInput schema / properties / sessionId
      Added value: +{
      +  "description": "Optional DAP session ID. Omit to use the backward-compatible default session.",
      +  "maxLength": 64,
      +  "minLength": 1,
      +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
      +  "type": "string"
      +}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "collectionErrors": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "faultCorrelation": {},
      +    "frameSelection": {},
      +    "operandAnalysis": {},
      +    "projectCorrelation": {},
      +    "projectFrame": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "column": {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        "id": {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        "line": {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "source": {}
      +      },
      +      "required": [
      +        "id",
      +        "name",
      +        "line",
      +        "column"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "frameSelection",
      +    "faultCorrelation",
      +    "projectCorrelation",
      +    "projectFrame",
      +    "operandAnalysis"
      +  ],
      +  "type": "object"
      +}
  2. Changed8 schema fields changedv0.12.1
    • addedInput schema / properties / analysis / description
      Added value: +"Hints used to distinguish project code from runtime, system, or third-party frames."
    • addedInput schema / properties / analysis / properties / callerDepth / description
      Added value: +"How many project-controlled caller frames beyond the selected frame to inspect for provenance and root cause."
    • addedInput schema / properties / analysis / properties / projectModules / description
      Added value: +"Optional executable or library names treated as project-controlled modules during frame selection."
    • addedInput schema / properties / analysis / properties / projectRoots / description
      Added value: +"Optional local source-root paths used to recognize project-controlled stack frames."
    • addedInput schema / properties / disassembleAfter / description
      Added value: +"Instructions after the selected instruction included in each disassembly window."
    • addedInput schema / properties / disassembleBefore / description
      Added value: +"Instructions before the selected instruction included in each disassembly window."
    • addedInput schema / properties / stackLevels / description
      Added value: +"Maximum stack frames considered while selecting the project-controlled frame."
    • addedInput schema / properties / threadId / description
      Added value: +"Stopped DAP thread to inspect; omit to use the session-selected stopped thread."
  3. Addedv0.12.0

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, but the description adds meaningful behavior beyond that: it explicitly states the tool does not resume the target and describes what it returns, including frame-selection reasoning, correlations, operand bindings, and best-effort collection errors. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences pack the core action, usage conditions, explicit alternative, side-effect guarantee, and return-value summary with no filler. The most differentiating information is front-loaded, and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete for an agent deciding whether and how to invoke this tool: it gives scope, use context, a sibling alternative, side-effect safety, and an outline of the return payload. Since an output schema exists, detailed return documentation is not required here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents all six parameters. The description itself adds little parameter-level semantics, but that is acceptable because the schema carries the weight; the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Correlate'), a precise resource set (source locations, disassembly, registers, pointer-like locals), and the frames involved (raw fault frame and first likely project-controlled frame). It explicitly distinguishes itself from debug_diagnose_stop, making the tool's niche clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence states exactly when to use this tool ('when a crash is already stopped and instruction/operand provenance matters') and names the preferred alternative for broader ranked diagnosis ('prefer debug_diagnose_stop'). This is explicit routing guidance with both inclusion and exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SLP-DEV1/qwen-dap-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server