50

C# Interactive seems a lot more powerful than the Immediate Window (at least it handles lambda expressions that are often used in LINQ - see Visual Studio debugging "quick watch" tool and lambda expressions), but it looks like it can't be used as a replacement as it doesn't know about the debugger context. Is there a way to have access to the debugger context?

I've seen Getting debugger context in F# interactive and it might require the same things, but maybe there are new/different things available.

http://extendedimmediatewin.codeplex.com/ could be useful but looks quite dead, although someone said on Oct 18 2011 that he was planning to port it to VB.Net ( http://extendedimmediatewin.codeplex.com/discussions/75589 ).

1
  • 1
    Great question! This is the most important application of Roslyn IMO. Commented Nov 20, 2011 at 0:41

3 Answers 3

53

Disclaimer: I work for Microsoft on the Roslyn team.

Unfortunately, we don't have a way to get the debugger context right now. We are aware that it would useful, and as we get more of the core deliverables for Roslyn completed we hope to investigate more and see what can be done.

Sign up to request clarification or add additional context in comments.

7 Comments

Good to know that it may happen someday. Thanks for the insider comment.
Years later, has this ever been addressed?
Web, Rails, all things have interactive console. I'm surprised this isn't adopted across all platforms.
C# could be a greater programming language in the modern era like Python and many others, if the team were more interested in the state-of-the-art use/features of programming. So many years later, in order to debug a simple small piece of code, I still need to create a whole console project. That is one reason why people in the field of AI, machine learning, data mining are not choosing C# as the primary language.
Yep going for python next project
|
52

Not a complete solution, but in VS2015, after you've run Initialize Interactive with Project, you can use Debug > Attach to Process to connect to the InteractiveHost.exe process.

You can then debug functions from your project. You won't be able to debug one-off functions in the Interactive window, though, as Kevin explained.

As as side note, https://stackoverflow.com/a/40650343/467110 points out that you may have to have a C# Interactive window open before you open your solution in order to successfully Initialize Interactive with Project

4 Comments

Just did this in VS2017 and it's amazing. Kudos!
Works in 2019 too. BTW if you "lose" the interactive window after VS switches to debug mode - just go to View - Other windows - C# Interactive
DAMN !!! Attach to process is an exceptional feature I didn't know for past 10 years!! Now I can control any program on Windows with C# Interactive !!!
I don't see this option on my Visual Studio 2022 installation
4

Inside C# Interactive you can run

System.Diagnostics.Debugger.Launch();

to request a debuger, whereby you will get a window asking you to choose one of the open Visual Studio instances or a new instance to attach. Assuming you used "Load Interactive with the Project" option of Visual Studio - any breakpoints in the open Solution will now be hit when code is ran by Interactive.

If you need the debugger without pre-existing code - you can now insert

System.Diagnostics.Debugger.Debug();

calls into the code you put into Interactive (but it does have to go in one 'chunk', i.e. one press of 'enter'), and you will be able to examine local vars via 'locals' window and run code against interactive context via 'immediate' window.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.