-
Notifications
You must be signed in to change notification settings - Fork 676
Remote Debugging On Linux Arm
This is a beta release feature
The extension supports remote debugging netcoreapp 2.1 on linux-arm
. Debugging does not support netcoreapp 2.0. The extension has been tested against Raspbian 8 and 9
. Please let us know if you run into issues with other distributions.
If you run into any problems, please file an issue and note in the text that this is related to linux-arm
.
Choose one of the following deployment methods:
-
Framework Dependent Deployment: Compile the application locally. Deploy the binary to
linux-arm
. Requires the .NET Core Runtime to be installed onlinux-arm
. -
Self Contained Deployment: Compile and publish the application locally. Deploy the standalone application to
linux-arm
.
- Install a daily build of dotnet SDK 2.2.0 beta locally.
- Ensure that .NET Command Line Tools v2.2 or higher is installed
-
Run
dotnet --info
to verify.Example:
$ dotnet --info .NET Command Line Tools (2.2.0-preview1-007582) Product Information: Version: 2.2.0-preview1-007582 ...
-
- Install the native dependencies of .NET Core. On Raspbian, the only thing missing is libunwind8.
- Run the following command on
linux-arm
(installs to ~/vsdbg):
curl -sSL https://aka.ms/getvsdbgshbeta | bash /dev/stdin -r linux-arm -v latest -l ~/vsdbg
Framework-dependent deployments are when the application is deployed without a copy of .NET Core itself, so the application depends on the shared .NET Core Framework being installed. See docs.microsoft.com for more information.
-
On the target computer, install a
linux-arm
daily build of .NET Core Runtime v2.1 preview.Example (installs to ~/dotnet):
mkdir ~/dotnet & curl -sSL https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-linux-arm.tar.gz | tar xvzf /dev/stdin -C ~/dotnet
On the IDE computer:
- Run
dotnet new console -n MyConsoleApp
. This will create a new netcoreapp v2.1 console application calledMyConsoleApp
.-
The restoring of the NuGet packages may fail with an error. To download the NuGet packages that match the daily build, you can choose either option below:
- Create a
nuget.config
file with the following block:
<configuration> <packageSources> <add key="dotnet-myget" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" /> </packageSources> </configuration>
- Run
dotnet restore --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json
.
- Create a
-
The restoring of the NuGet packages may fail with an error. To download the NuGet packages that match the daily build, you can choose either option below:
On the IDE computer:
- In your application's root folder, run
dotnet build
- Copy all the files under
bin/Debug/netcoreapp2.1/
to yourlinux-arm
device.- To test run your application, on
linux-arm
, run the entrypointMyConsoleApp.dll
withdotnet
.$ ~/dotnet/dotnet MyConsoleApp.dll
- To test run your application, on
Reference the sample launch.json
below.
- The
"program"
field is set to thedotnet
executable and the first"args"
item is the application.dll
relative to the current working directory ("cwd"
) onlinux-arm
. - Update the fields under
"pipeArgs"
to include the IP address of thelinux-arm
device and the ssh keyfile. - The
"debuggerPath"
points to the location where you installed the debugger to onlinux-arm
.
{
"name": ".NET Core Remote Launch - Framework Dependent (console)",
"type": "coreclr",
"request": "launch",
"program": "~/dotnet/dotnet",
"args": [
"./MyConsoleApp.dll"
],
"cwd": "~/MyConsoleApp",
"stopAtEntry": false,
"console": "internalConsole",
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "/usr/bin/ssh",
"pipeArgs": [
"-T", "-i", "mysshkeyfile",
"pi@10.10.10.10"
],
"debuggerPath": "~/vsdbg/vsdbg"
}
}
Self-contained deployments are when all of an applications' dependencies are carried with the deployment. So the only thing that must be installed on the target computer is the native dependencies of .NET Core. See docs.microsoft.com for more information.
On the IDE computer:
- Run
dotnet new console -n MyConsoleApp
. This will create a new netcoreapp v2.1 console application calledMyConsoleApp
.-
The NuGet package restoral may fail to get the necessary packages. To download the NuGet packages that match the daily build, you can choose either option below:
- Create a
nuget.config
file with the following block:
<configuration> <packageSources> <add key="dotnet-myget" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" /> </packageSources> </configuration>
- Run
dotnet restore --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json
.
- Create a
-
The NuGet package restoral may fail to get the necessary packages. To download the NuGet packages that match the daily build, you can choose either option below:
On the IDE computer:
- Run
dotnet publish -r linux-arm
- Copy all the files under
bin/Debug/netcoreapp2.1/linux-arm/publish/
tolinux-arm
. - Test your application by running the standalone executable
MyConsoleApp
.$ ./MyConsoleApp
Reference the sample launch.json
below.
- The
"program"
field is the standalone executable relative to the current working directory ("cwd"
) onlinux-arm
. - Update the fields under
"pipeArgs"
to include the IP address of thelinux-arm
device and the ssh keyfile. - The
"debuggerPath"
points to the location where you installed the debugger to onlinux-arm
.
{
"name": ".NET Core Remote Launch - Standalone Application (console)",
"type": "coreclr",
"request": "launch",
"program": "MyConsoleApp",
"args": [],
"cwd": "~/MyConsoleApp",
"stopAtEntry": false,
"console": "internalConsole",
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "/usr/bin/ssh",
"pipeArgs": [
"-T", "-i", "mysshkeyfile",
"pi@10.10.10.10"
],
"debuggerPath": "~/vsdbg/vsdbg"
}
}
Configuration
- Configuring Snap installs of dotnet-sdk
- Configuring Arch Linux for Unity development
- Configuring Arch Linux for Razor development
- Installing the .NET Core Debugger on Arch Linux
Debugger
- Overview
- launch.json Help
- Feature List
- Enable Logging
- Portable PDBs
- Troubleshoot Breakpoints
- Attaching to remote processes
- Remote Debugging On Linux-Arm
- Windows Subsystem for Linux
- Diagnosting 'Debug adapter process has terminated unexpectedly'
- Testing libicu compatibility on Linux
- Debugging into the .NET Runtime itself
- Debugging x64 processes on an arm64 computer
Documentation
- Change Log
- Branches and Releases
- Installing Beta Releases
- Installing without internet connectivity
- Linux Support
- Run/Debug Unit Tests
- Troubleshooting: 'The .NET Core SDK cannot be located.' errors
Developer Guide