dd-symdb 是 Datadog 的符号数据库命令行工具,用于在已插桩的服务中搜索类和方法,并定位可供 Live Debugger 探针使用的可探测方法位置。
用途:为 Live Debugger(实时调试器)查找可挂载探针的方法,然后将探针放置到这些方法上并观察事件。
前置条件:需先安装 pup,命令为 brew tap datadog-labs/pack && brew install pup。
认证:推荐使用 OAuth2,执行 pup auth login;也可使用 API 密钥,需设置环境变量:export DD_API_KEY="key" DD_APP_KEY="key" DD_SITE="datadoghq.com"。
主要能力与视图:搜索命令为 pup symdb search,支持三种输出视图。names 视图每行一个作用域名称;probe-locations 视图输出适合用作 pup debugger probes create 的 --probe-location 参数的类型与方法签名,无参数信息时回退为 TYPE:METHOD;full 视图输出 API 的原始 JSON 响应。可用 --version 按服务版本过滤,以应对符号陈旧问题。
使用方式:典型流程为先查找可探测方法,例如 pup symdb search --service my-service --query "MyController" --view probe-locations;再创建探针,例如 pup debugger probes create --service my-service --env production --probe-location "com.example.MyController:handleRequest" --template "handleRequest called with id={id}",存在重载时使用完整签名;最后用 pup debugger probes watch <PROBE_ID> --timeout 60 --limit 10 流式查看事件。
常用选项:--service 服务名(必填);--query 搜索查询,匹配作用域名称,缺省时列出全部;--version 服务版本过滤;--view 输出视图,可选 full、names、probe-locations,默认 full。
适用场景:在 Datadog APM 中已插桩的服务中定位方法并挂载探针,语言可由 symdb 自动检测。
限制与故障处理:无结果时需确认服务已插桩并向 Datadog 上报;认证错误时运行 pup auth login 或设置 DD_API_KEY、DD_APP_KEY、DD_SITE;服务名错误时可在 Datadog APM 服务目录中核对;符号陈旧时用 --version 过滤当前部署版本。