-
Notifications
You must be signed in to change notification settings - Fork 4.4k
Debugger implementation #13433
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Debugger implementation #13433
Conversation
Add documententation and/or an example on how to configure and/enable this for a specific debugger... if not as part of this PR then to the todo list ? |
What if you have e.g. a monorepo with multiple services written in the same language? |
Uhm, I think most of the debug adapters support multiple threads, but need to look more in to that. Not sure how VS Code handles this, if they allow you to run the same debugger adapter twice or more. |
c71eb06
to
47a5f0c
Compare
I'd love to see another more up-to-date video of the current status of this, if u can find time. :-) |
ac95fbd
to
515122c
Compare
HI, I have started a dlv(go dap server) to debug go program, but i need bring env to the dlv commend. I read the code |
Hey, I think most debug adapters support this already by passing in an |
Ok, understand.... I will test it on js debugger and go delve and study your code. |
7eacd30
to
3f8581a
Compare
8adc489
to
8d99f9b
Compare
for those of us trying to follow-along at home on this PR, it would be helpful of there was a sample tasks.json ( or wherever the debug settings are being stored if not there ) and any relevent settings.json we need enable, as I compiled and ran this PR, but was unable to get the same behaviour as either of the screen recordings. |
Hey @davidbuzz, sorry for not posting any examples of starting a debug adapter. I did this for a reason, because I'm not happy yet with the naming of the fields & structure of the task. But here is an example task to start a debug adapter: If you want to follow a bit more about what we are working on, you can join the following channel: https://zed.dev/channel/zed-debugger-11370. {
"label": "Xdebug debug adapter",
"command": "bun",
"args": [
"/Users/remcosmits/Documents/code/vscode-php-debug/out/phpDebug.js",
"--server=8132"
],
"task_type": "debug",
"cwd": "/Users/remcosmits/Documents/code/symfony_demo",
"debug_adapter": {
"id": "xdebug",
"port": 8132,
"request_args": {
"skipFiles": ["**/vendor/**"],
"pathMappings": {
"/Users/remcosmits/Documents/code/symfony_demo/public": "/Users/remcosmits/Documents/code/symfony_demo/public"
},
"localSourceRoot": "/Users/remcosmits/Documents/code/symfony_demo",
"serverSourceRoot": "/Users/remcosmits/Documents/code/symfony_demo",
"xdebugSettings": {
"show_hidden": 1
}
}
}
} |
d9461c3
to
b6e677e
Compare
i think u mean this discord channel, but u were close.. https://discord.com/channels/869392257814519848/1255246362220691456 ... i pop in to the Zed discord occassionally. :-) |
No, that's not what I mean. What do you mean by I'm close? It sounds a bit disparaging... |
I was just trying to say that the link u gave starting with https://zed.dev doesn't work for me. |
Ahh oké. it seems to work for other people. Also it's the same as the one that i posted in the discord channel. Does it still not work for you? |
... im on linux. :-) |
zomg zomg! |
lets go! |
Huge congrat 🎉 !!!! |
Leeets goooo! |
Amazing work @Anthony-Eid and team! Such a herculean effort. Thank you for taking this on! You've just made so many people's day. 🎉 |
Looks like |
Huge congrat 🎉 !!!! |
holy moly i cant believe u did it :) |
I think based in the description part of the pr stated that they might not know the actual schedule yet. So I think we could just wait a few months more first as this is just ready to be tested internally. |
You can run it from source on the default branch if you want to test it. git clone https://github.com/zed-industries/zed
cd zed
script/linux
cargo run |
…rged (#27184) Follow-up of #13433 Closes #27124 Closes #27066 After this change, both old global task source, `tasks.json` and new, `debug.json` started to call for the same task update method: https://github.com/zed-industries/zed/blob/14920ab910c6d0208d23ce6b6e2ed644e6f20f2e/crates/project/src/task_inventory.rs#L414 erasing previous declarations. The PR puts this data under different paths instead and adjusts the code around it. Release Notes: - Fixed custom tasks not shown
…rged (#27184) Follow-up of #13433 Closes #27124 Closes #27066 After this change, both old global task source, `tasks.json` and new, `debug.json` started to call for the same task update method: https://github.com/zed-industries/zed/blob/14920ab910c6d0208d23ce6b6e2ed644e6f20f2e/crates/project/src/task_inventory.rs#L414 erasing previous declarations. The PR puts this data under different paths instead and adjusts the code around it. Release Notes: - Fixed custom tasks not shown
…rged (cherry-pick #27184) (#27187) Cherry-picked debugger: Ensure both debug and regular global tasks are correctly merged (#27184) Follow-up of #13433 Closes #27124 Closes #27066 After this change, both old global task source, `tasks.json` and new, `debug.json` started to call for the same task update method: https://github.com/zed-industries/zed/blob/14920ab910c6d0208d23ce6b6e2ed644e6f20f2e/crates/project/src/task_inventory.rs#L414 erasing previous declarations. The PR puts this data under different paths instead and adjusts the code around it. Release Notes: - Fixed custom tasks not shown Co-authored-by: Kirill Bulatov <[email protected]>
Hey, this seems amazing! I am sorry to bring this up, but I definitely need help understanding how debugging works in Zed. I'm on a macbook with:
Here's how [
{
"label": "Debug active PHP file",
"adapter": "php",
"program": "$ZED_FILE",
"request": "launch",
"cwd": "$ZED_WORKTREE_ROOT"
},
{
"label": "Debug active Python file",
"adapter": "python",
"program": "$ZED_FILE",
"request": "launch",
"cwd": "$ZED_WORKTREE_ROOT"
},
{
"label": "Debug active JavaScript file",
"adapter": "javascript",
"program": "$ZED_FILE",
"request": "launch",
"cwd": "$ZED_WORKTREE_ROOT"
},
{
"label": "JavaScript debug terminal",
"adapter": "javascript",
"request": "launch",
"cwd": "$ZED_WORKTREE_ROOT",
"initialize_args": {
"console": "integratedTerminal"
}
}
] I really wonder what I'm missing. Any hint is more than appreciated. Thanks! |
@scorphus The debugger feature is not released yet, you can test the current state if you build from source. There is still a lot to do and development is ongoing |
The feature is not yet complete and is currently only available to staff. You can clone the main branch and make a few changes in the User Store to enable staff permissions. Once compiled and after authenticating with your Zed account, the feature should become available. Last time I tested it (about a week ago), it was quite unstable, so I wouldn’t recommend using it for daily work |
@osiewicz actually, I’ve really liked how the debugger has been evolving! I’ve been testing it weekly and trying to find ways to contribute to its development. There are still a few issues that make it hard to use it for daily work, but it’s definitely heading in a great direction — looking forward to seeing it improve even more! |
Hi, I'm using the nightly build. Is it possible to pass this debug feature flag in? Or is building from source the only way? |
Hey @bant-gurtam, I could run it locally... It seems you need to build it locally Following the steps below did the trick for me 1) Install dependencies ./script/linux # install system dependencies 2) Comment out this line (As mentioned by @scorphus previously) 3) Execute the command below to build and run the project export CARGO_NET_GIT_FETCH_WITH_CLI=true
cargo build --profile release 4) Make sure you login to zed ai, there's an icon on the bottom right of the IDE for that |
I was able to debug some javascript, in the future I'll try checking how it works with golang. The status now is "Looks very promising" 😃 |
Hey, thanks for reply. However, I'm using it on my work laptop(mac), so I don't want to install additional software just to compile zed 🥲 |
DISCLAIMER
END OF DISCLAIMER
The current state of the debugger implementation:
Screen.Recording.2024-10-16.at.15.02.20.mov
Screen.Recording.2025-01-19.at.17.45.06.mov
All the todo's are in the following channel, so it's easier to work on this together:
https://zed.dev/channel/zed-debugger-11370
If you are on Linux, you can use the following command to join the channel:
Current Features
Release Notes: