AWS Serverless 如何使用 "sam local start-api" 调试 .net core 3.1 应用程序
AWS Serverless how to use "sam local start-api" to debug .net core 3.1 applications
我想在本地启动无服务器应用程序,然后使用 Visual Studio 对其进行调试。我看到命令行参数 --debug-port、--debugger-path、--debug-args 和 --debug-function,但没有关于这些如何用于 .net 核心的示例。
这就是我用于 Visual Studio 代码的内容。我正在 Windows 使用 dotnetcore3.1。
首先,我必须下载 Linux vsdbg 调试文件(是的,Linux,因为这些文件将安装在 SAM docker容器)
https://vsdebugger.azureedge.net/vsdbg-17-0-10712-2/vsdbg-linux-x64.tar.gz
将它们解压缩到一个文件夹中,例如C:\vsdbg
我有一个启动 SAM 的任务。我的 tasks.json 看起来像:
{
"version": "2.0.0",
"tasks": [{
"label": "sam local api",
"type": "shell",
"command": "sam",
"args": [
"local",
"start-api",
"-d", "5858",
"--template", "${workspaceFolder}/template.yaml",
"--debugger-path", "C:\vsdbg",
"--warm-containers", "EAGER"
],
}]
}
重要提示:
** --debugger-path
指向 linux 调试文件文件夹。 sam cli 将为您装载文件。
** 我必须使用 --warm-containers EAGER
来防止容器在每次请求后关闭
launch.json
看起来像这样:
{
"name": "sam local api attach",
"type": "coreclr",
"processName": "dotnet",
"request": "attach",
"pipeTransport": {
"pipeCwd": "${workspaceFolder}",
"pipeProgram": "powershell",
"pipeArgs": [
"-c",
"docker exec -i $(docker ps -q -f publish=5858) ${debuggerCommand}"
],
"debuggerPath": "/tmp/lambci_debug_files/vsdbg",
"quoteArgs": false
},
"sourceFileMap": {
"/var/task": "${workspaceFolder}"
}
},
这一位:$(docker ps -q -f publish=5858)
通过在您正在使用的端口上进行过滤来获取您的 docker 容器的 ID。
这花了很多时间才开始工作,我很惊讶它并不容易,或者至少有一些像样的文档。
我想在本地启动无服务器应用程序,然后使用 Visual Studio 对其进行调试。我看到命令行参数 --debug-port、--debugger-path、--debug-args 和 --debug-function,但没有关于这些如何用于 .net 核心的示例。
这就是我用于 Visual Studio 代码的内容。我正在 Windows 使用 dotnetcore3.1。
首先,我必须下载 Linux vsdbg 调试文件(是的,Linux,因为这些文件将安装在 SAM docker容器)
https://vsdebugger.azureedge.net/vsdbg-17-0-10712-2/vsdbg-linux-x64.tar.gz
将它们解压缩到一个文件夹中,例如C:\vsdbg
我有一个启动 SAM 的任务。我的 tasks.json 看起来像:
{
"version": "2.0.0",
"tasks": [{
"label": "sam local api",
"type": "shell",
"command": "sam",
"args": [
"local",
"start-api",
"-d", "5858",
"--template", "${workspaceFolder}/template.yaml",
"--debugger-path", "C:\vsdbg",
"--warm-containers", "EAGER"
],
}]
}
重要提示:
** --debugger-path
指向 linux 调试文件文件夹。 sam cli 将为您装载文件。
** 我必须使用 --warm-containers EAGER
来防止容器在每次请求后关闭
launch.json
看起来像这样:
{
"name": "sam local api attach",
"type": "coreclr",
"processName": "dotnet",
"request": "attach",
"pipeTransport": {
"pipeCwd": "${workspaceFolder}",
"pipeProgram": "powershell",
"pipeArgs": [
"-c",
"docker exec -i $(docker ps -q -f publish=5858) ${debuggerCommand}"
],
"debuggerPath": "/tmp/lambci_debug_files/vsdbg",
"quoteArgs": false
},
"sourceFileMap": {
"/var/task": "${workspaceFolder}"
}
},
这一位:$(docker ps -q -f publish=5858)
通过在您正在使用的端口上进行过滤来获取您的 docker 容器的 ID。
这花了很多时间才开始工作,我很惊讶它并不容易,或者至少有一些像样的文档。