Comments (10)
@madkat Do you already have an Expression Evaluator on Windows that you are porting to Linux? Or are you trying to create one?
In case you haven't seen it:
from concordextensibilitysamples.
@gregg-miskelly We already have one implemented on Windows that we distribute as part of a VS extension. I think that logging topic will be a good start for trying to debug what is happening on the Linux side.
from concordextensibilitysamples.
Quick update: I was able to get my EE built correctly, registered in the default.vsdbg-config.json, and deployed into the folder. It looks like as long as all of my deps are .NET Standard or .NET 5, it all works, which is just amazing.
Any tips for trying to get my components deployed on the Linux side? The ideal flow would be hooking into the same mechanism that deploys GetVsDbg.sh. Any insight into what is or is not extensible would be a huge help.
from concordextensibilitysamples.
Excellent!
Any tips for trying to get my components deployed on the Linux side?
Do you know which scenarios you are trying to support (or at least support initially)? Does your language require a runtime library that is NOT just distributed via NuGet?
XPlat scenario list --
- Visual Studio
- WSL
- Docker
- Attach to Process
- Offroad launch
- Visual Studio Code
- Local debugging
- Docker debugging
- Pipe Transport
- Visual Studio for Mac
- Local debugging
- Docker debugging
from concordextensibilitysamples.
My goal for an initial release is to support Attach to Process over SSH and WSL from Visual Studio. Deployment of the user application from Visual Studio, remote starting the process, and then attaching would be the ultimate user experience, but we are starting with the minimum viable product for usability.
We do have a language runtime library distributed via NuGet, but it is not required for our EE. I would expect the runtime library to be sideloaded alongside the user deploying their application.
The big question is whether or not there is an integrated way to deploy my EE and its dependencies to .vs-debugger\vsver. It looks like attaching from VS causes the creation of .vs-debugger and executes GetVsDbg.sh. Is any part of that extensible?
from concordextensibilitysamples.
For attach to process, I can't think of a way to make this work automatically today. I would suggest filing a suggestion ticket (Help->Send Feedback->Suggest a Feature) to provide an extensibility point for this. The best work around I can think of in the mean time is just to provide users with a script and instructions (example: https://github.com/OmniSharp/omnisharp-vscode/wiki/Attaching-to-remote-processes#installing-vsdbg-on-the-server).
For WSL: Since this scenario involves a project system, there might be a way to somehow know that debugging was about to start for WSL. I am assuming you have some sort of project system customization already?
CC'ing @NCarlsonMSFT who knows far more than I do about how the WSL integration works.
from concordextensibilitysamples.
@madkat are you interested in supporting attaching to a running process in WSL or the WSL launch profile command?
If the latter, there is currently no explicit extensibility mechanism for the WSL launch profile component; however, there are extensibility points in the projects system where you could potentially prepare the WSL distro before debugging started. Let me know if that's the interesting scenario and if so I can point you in the right direction.
from concordextensibilitysamples.
@NCarlsonMSFT Very interested.
from concordextensibilitysamples.
If you own the projects (or a common NuGet) one easy way is to add a Project Capability and then implement IProjectDynamicLoadComponent to load code for handling the project.
You can then Link an ActionBlock to the ILaunchSettingsProvider's SourceBlock. In the ActionBlock you can then track if the active profile is one that you should handle and if so, prep the default (or selected) distro for debugging.
from concordextensibilitysamples.
@NCarlsonMSFT I really appreciate the additional information. That should give us a good starting point.
from concordextensibilitysamples.
Related Issues (20)
- How to change the value of an argument at a breakpoint?
- Breaking changes HOT 1
- How to enable debugging client code in Blazor
- "IEnumerable Visualizer" support for our language HOT 6
- Instructions in code are not correct. HOT 1
- Debugging instructions may need clarification with the latest VS 2022 & Child Process Power Tool since I couldn't get it to work HOT 1
- IEnumerable Visualizer shows properties that are marked with attribute to hide them in the debugger HOT 1
- Obtaining debug symbol paths from options HOT 3
- Is it possible to run certain threads when Debug Engine stopped in "break mode"? HOT 1
- .Net 8 problems HOT 1
- Extending call-stack window with full ReturnStackFrame HOT 1
- Custom breakpoints, inactive when set before module loads
- Feature request - add Interfaces for all DKM for easier testing and mocking
- Recent VsDbg versions missing System.Threading.Tasks.dll assembly HOT 4
- Announcement: New releases of C# vsdbg HOT 7
- Unable to load custom VsDbg extensions in linux/WSL using VS 17.7 Preview HOT 6
- Debugger UI integration
- Unable to use IrisExtension following the wiki HOT 3
- $CALLSTACK and $CALLER in Debugger Trace points HOT 4
- Feature request: Allow other .NET languages to participate in Edit and Continue/Hot Reload HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from concordextensibilitysamples.