【问题标题】:problem loading Microsoft.DiaSymReader.Native.arm.dll on dotnetcore3.1 running on 32 bit Raspbian在 32 位 Raspbian 上运行的 dotnetcore3.1 上加载 Microsoft.DiaSymReader.Native.arm.dll 时出现问题
【发布时间】:2020-10-18 07:56:38
【问题描述】:

我正在尝试在以 Raspbian 作为操作系统的 Raspberry PI 4 上运行 dotnetcore3.1 的 Visual Studio 解决方案。发布到 Windows 并在 Windows 上运行完全没有问题。 此外,该应用程序在 Raspberry 上启动时没有问题,但很快就会崩溃,并显示无法加载 dll 或其依赖项的消息。使用 LD_DEBUG=libs,很明显 加载问题 发生在 Microsoft.DiaSymReader.Native.arm.dll 上。这个 dll 附带一个 Nuget 包到我的解决方案中,它也可以在 lib 搜索路径中的 Raspberry 上找到。将 dll 从 windows 复制到搜索路径并不能解决问题。 有什么建议吗?

【问题讨论】:

    标签: linux .net-core arm raspberry-pi4


    【解决方案1】:

    Microsoft.DiaSymReader.Native.*.dll 是原生 windows dll。它需要windows才能运行,源代码不可用。 Microsoft.DiaSymReader.Native 存在于 x86/x64/arm(全部用于 windows)。 https://www.nuget.org/packages/Microsoft.DiaSymReader.Native

    来自描述: PDB 文件读取器和写入器的本机实现。 支持的平台:

    • Windows x86
    • Windows amd64
    • 窗臂

    对于 Windows arm64 (Surface Pro X) 现在不可用 https://github.com/dotnet/diagnostics/issues/324

    DiaSymReader 依赖于 Windows COM 和 MS Dia https://docs.microsoft.com/en-US/visualstudio/debugger/debug-interface-access/debug-interface-access-sdk?view=vs-2019

    对于解析 pdb,您可以尝试使用开源 MS pdb 解析器,例如生锈https://github.com/willglynn/pdb

    pdb 可以在任何地方读取 PDB。不依赖于 Windows、DIA SDK 或目标的本机字节顺序。

    Sentry 符号应用程序https://github.com/getsentry/symbolic 使用 pdb crate 来解析不同的符号格式。还具有 C ABI,因此您可以使用 dllimport 创建 .net 包装器。

    基于哨兵符号创建的伟大 mozilla 堆栈修复(符号化)实用程序: https://blog.mozilla.org/nnethercote/2020/04/15/better-stack-fixing-for-firefox/ https://github.com/mozilla/fix-stacks

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-18
      • 2016-09-26
      • 2014-12-31
      • 1970-01-01
      • 2011-05-29
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多