debugger: Improve Go support (#31559)
Supersedes https://github.com/zed-industries/zed/pull/31345 This PR does not have any terminal/console related stuff so that it can be solved separately. Introduces inline hints in debugger: <img width="1141" alt="image" src="https://github.com/user-attachments/assets/b0575f1e-ddf8-41fe-8958-2da6d4974912" /> Adds locators for go, so that you can your app in debug mode: <img width="706" alt="image" src="https://github.com/user-attachments/assets/df29bba5-8264-4bea-976f-686c32a5605b" /> As well is allows you to specify an existing compiled binary: <img width="604" alt="image" src="https://github.com/user-attachments/assets/548f2ab5-88c1-41fb-af84-115a19e685ea" /> Release Notes: - Added inline value hints for Go debugging, displaying variable values directly in the editor during debug sessions - Added Go debug locator support, enabling debugging of Go applications through task templates - Improved Go debug adapter to support both source debugging (mode: "debug") and binary execution (mode: "exec") based on program path cc @osiewicz, @Anthony-Eid
This commit is contained in:
parent
c0a5ace8b8
commit
94a5fe265d
8 changed files with 651 additions and 9 deletions
|
@ -18,7 +18,7 @@ use dap::{
|
|||
GithubRepo,
|
||||
},
|
||||
configure_tcp_connection,
|
||||
inline_value::{PythonInlineValueProvider, RustInlineValueProvider},
|
||||
inline_value::{GoInlineValueProvider, PythonInlineValueProvider, RustInlineValueProvider},
|
||||
};
|
||||
use gdb::GdbDebugAdapter;
|
||||
use go::GoDebugAdapter;
|
||||
|
@ -48,5 +48,6 @@ pub fn init(cx: &mut App) {
|
|||
registry.add_inline_value_provider("Rust".to_string(), Arc::from(RustInlineValueProvider));
|
||||
registry
|
||||
.add_inline_value_provider("Python".to_string(), Arc::from(PythonInlineValueProvider));
|
||||
registry.add_inline_value_provider("Go".to_string(), Arc::from(GoInlineValueProvider));
|
||||
})
|
||||
}
|
||||
|
|
|
@ -312,14 +312,22 @@ impl DebugAdapter for GoDebugAdapter {
|
|||
"processId": attach_config.process_id,
|
||||
})
|
||||
}
|
||||
dap::DebugRequest::Launch(launch_config) => json!({
|
||||
"request": "launch",
|
||||
"mode": "debug",
|
||||
"program": launch_config.program,
|
||||
"cwd": launch_config.cwd,
|
||||
"args": launch_config.args,
|
||||
"env": launch_config.env_json()
|
||||
}),
|
||||
dap::DebugRequest::Launch(launch_config) => {
|
||||
let mode = if launch_config.program != "." {
|
||||
"exec"
|
||||
} else {
|
||||
"debug"
|
||||
};
|
||||
|
||||
json!({
|
||||
"request": "launch",
|
||||
"mode": mode,
|
||||
"program": launch_config.program,
|
||||
"cwd": launch_config.cwd,
|
||||
"args": launch_config.args,
|
||||
"env": launch_config.env_json()
|
||||
})
|
||||
}
|
||||
};
|
||||
|
||||
let map = args.as_object_mut().unwrap();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue