There's been a lot of folks, myself included, who have tried to install VS Code on the Raspberry Pi. In fact, there's a lovely process for this now. However, we have to ask ourselves is a Raspberry Pi really powerful enough to be running a full development environment and the app being debugged? Perhaps, but maybe this is a job for remote debugging. That means installing Visual Studio Code locally on my Windows or Mac machine, then having Visual Studio code install its headless server component (for ARM7) on the Pi.
In January I blogged about Remote Debugging with VS Code on a Raspberry Pi using .NET Core on ARM. It was, and is, a little hacked together with SSH and wishes. Let's set up a proper VS Code Remote environment so I can be productive on a Pi while still enjoying my main laptop's abilities.
- First, can you ssh into your Raspberry Pi without a password prompt?
- If not, be sure to set that up with OpenSSH, which is now installed on Windows 10 by default.
- You know you've got it down when you can "ssh pi@mypi" and it just drops you into a remote prompt.
- Next, get Visual Studio Code Insiders plus
- Remote Development Extension
- Uninstall the "Remote - SSH" Extensions, disabling them isn't enough because you want to replace them with...
- Important - Remote - SSH Nightly Builds
- Remote Development Extension
From within VS Code Insiders, hit Ctrl/CMD+P and type "Remote-SSH" for some of the choices.
I can connect to Host and VS Code will SSH into the PI and install the VS Code server components in ~./vscode-server-insiders and then connect to them. It will take a minute as its downloading a 25 meg GZip and unzipping it into this temp folder. You'll know you're connected when you see this green badge as seen below that says "SSH: hostname."
Then when you go "File | Open Folder" from the main menu, you'll get the remote system's files! You are working and editing locally on remote files.
Note here that some of the extensions are NOT installed locally! The Python language services (using Jedi) are running remotely on the Raspberry Pi, so when I get intellisense, I'm getting it remoted from the actual machine I'm developing on, not a guess from my local box.
When I open a Terminal with Ctrl+~, see that I'm automatically getting a remote terminal and I've even running htop in it!
Check this out, I'm doing a remote interactive debugging session against CrowPi samples running on the Raspberry Pi (in Python 2) remotely from VS Code on my Windows 10 machine! I did need to make one change to the remote settings as it was defaulting to Python3 and I wanted to use Python2 for these samples.
This has been a very smooth process and I remain super impressed with the VS Remote Development experience. I'll be looking at containers, and remote WSL debugging soon as well. Next step is to try C#, remotely, which will mean making sure the C# OmniSharp Extension
Sponsor: Suffering from a lack of clarity around software bugs? Give your customers the experience they deserve and expect with error monitoring from Raygun.com. Installs in minutes, try it today!
© 2018 Scott Hanselman. All rights reserved.