无法在Visual Studio代码中调试Azure函数,调试器停止

rhfm7lfc  于 2023-05-23  发布在  其他
关注(0)|答案(5)|浏览(194)

我正在使用HTTP触发器Azure函数。当我运行我的应用程序(按F5),点击http://localhost:7071/api/HttpTrigger1后,我在浏览器中得到响应,但代码不会在断点处停止。
经过仔细观察,我看到调试器启动0.5秒,然后自动关闭。
我已经发布了视频here。在第5秒,我们可以看到调试器启动,但立即关闭(橙子屏幕在第5秒)。
有一个similar question on Stackoverflow,但这并没有解决我的问题。

tvokkenx

tvokkenx1#

我也经历过同样的情况,在Mac上调试VS代码中的Azure函数。我在Omnishark GitHub上发现了这个关于这个问题的开放问题:
https://github.com/OmniSharp/omnisharp-vscode/issues/4903
最后,basilfx的解决方法最终帮助了我:
我是被上面日志中关于代码签名的一行日志触发的。因此,我尝试了以下方法:

  • 创建自签名代码签名证书:https://stackoverflow.com/a/58363510/1423623
  • 导航到调试器文件夹(在我的例子中,是~/.vscode/extensions/ms-dotnettools.csharp-1.24.4-darwin-x64/.debugger/x86_64)
  • 运行codesign --remove-signature vsdbg-ui && codesign --remove-signature vsdbg
  • 运行codesign -s my-codesign-cert vsdbg-ui && codesign -s my-codesign-cert vsdbg

我现在可以从VS Code附加到一个正在运行的./vsdbg-ui --server --consoleLogging --engineLogging示例,该示例在断点处停止。这是一种变通方法,但它显示vsdbg和/或vsdbg-ui的代码签名有问题。
2022-04-20:可以使用OmniSharp 1.24.4确认这仍然有效。

pw9qyyiw

pw9qyyiw2#

在Visual Studio代码中运行/调试Azure函数的先决条件:

  1. Azure Tools Extension
  2. Azure Functions核心工具
    1.此外,确保系统上安装了Storage Emulator,即使它已弃用,但仍用于本地环境调试和测试目的
  3. VS代码扩展菜单上的Azurite Extension

local.settings.json

  1. {
  2. "IsEncrypted": false,
  3. "Values": {
  4. "AzureWebJobsStorage": "UseDevelopmentStorage=true",
  5. "FUNCTIONS_WORKER_RUNTIME": "dotnet"
  6. }
  7. }

.csproj文件:

  1. <Project Sdk="Microsoft.NET.Sdk">
  2. <PropertyGroup>
  3. <TargetFramework>net6.0</TargetFramework>
  4. <AzureFunctionsVersion>v4</AzureFunctionsVersion>
  5. </PropertyGroup>
  6. <ItemGroup>
  7. <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.0.1" />
  8. </ItemGroup>
  9. <ItemGroup>
  10. <None Update="host.json">
  11. <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  12. </None>
  13. <None Update="local.settings.json">
  14. <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  15. <CopyToPublishDirectory>Never</CopyToPublishDirectory>
  16. </None>
  17. </ItemGroup>
  18. </Project>

调试结果:

在Run方法中的某个代码行处放置断点并开始调试。
所有的代码文件和调试视频都可以在GitHub Repositorydebugging video中找到,请将每个文件与您的代码进行比较。
如本VS Code Official Documentation中所述,需要安装用于调试目的的语言运行时扩展,如C# for .NET,Python,Java,JavaScript,PowerShell等。
例如,对于上面的.NET Azure Functions项目,我在VS Code中安装了此扩展:

安装这些扩展的链接在先决条件和超链接格式中给出。

调试Azure函数的VS Code参考:

  1. Debugging Azure Functions Locally in VS Code
  2. Microsoft Azure Functions在VS Code中调试的官方文档
展开查看全部
9cbw7uwe

9cbw7uwe3#

我也有类似的问题。
我有多个python azure函数库,我在vs-code中工作。如果在编辑器中打开的文件有错误(lint错误,mypy错误等),每当我试图启动调试会话时,函数都会启动,但最终会从调试会话中分离。在此日志打印之后:
INFO: Detaching console logging.然后它不会在断点处停止并记录调试日志。
不幸的是,我还没有一个解决方案。我有一个工作的解决方法你可以试试:
关闭任何打开的有错误的文件(你可以关闭所有的文件),并启动调试会话(f5),我发现它是这样工作的,在断点处停止,而不是分离调试器。
如果你(或任何人)找到了一个有效的解决方案,请分享。

v64noz0r

v64noz0r4#

在我的情况下,我在Mac上运行。这个答案奏效了https://github.com/OmniSharp/omnisharp-vscode/issues/4900
我把launch.json改成了:

  1. {
  2. "version": "0.2.0",
  3. "configurations": [
  4. {
  5. "name": "Attach to .NET Functions",
  6. "type": "coreclr",
  7. "request": "attach",
  8. "processId": "${command:azureFunctions.pickProcess}"
  9. }
  10. ]
  11. }

对此:

  1. {
  2. "version": "0.2.0",
  3. "configurations": [
  4. {
  5. "name": "Attach to .NET Functions",
  6. "type": "coreclr",
  7. "request": "attach",
  8. "processId": "${command:azureFunctions.pickProcess}",
  9. "targetArchitecture": "x86_64"
  10. }
  11. ]
  12. }
展开查看全部
vddsk6oq

vddsk6oq5#

**打开用户设置(JSON)**文件,添加下面的条目。这对我很有效,希望对其他人也有效。
“azureFunctions.pickProcessTimeout”:180
**注意:**默认超时为60,我们将其更改为180。

相关问题