创建 mdb 文件以在 Unity 中调试托管 DLL

use*_*807 3 scripting batch-file unity-game-engine visual-studio

我正在尝试在 Unity 中调试我的托管 DLL。它曾经在 Unity 2018.x 上运行良好

现在我有 Unity 2019.3 并且我无法再调试(我的 DLL 工作正常,我只是无法调试它们)。

我的 DLL 及其 pdb 文件位于 Assets 文件夹中。这曾经足以调试它们。

阅读此文档:https : //docs.unity3d.com/Manual/UsingDLL.html,我正在尝试创建 mdb 文件。

第一个问题,文档说我必须将 .pdb 文件作为参数传递,而谷歌上的大多数链接都说要传递 .dll

此链接还指出我应该更改 .bat 文件的工作目录才能使用 pdb2mdb.exe:https ://answers.unity.com/questions/294195/pdb2mdb-usage-error-from-command-line .html

这是我的代码:

set PathToLib="Libraries\"
if exist Libraries\LibBDD.dll  (
    echo Before switching directory for my lib %CD%
    cd %PathToLib% 
    echo new directory %CD%
    @pause
    "C:\Program Files\Unity\Editor\Data\Mono\lib\mono\2.0\pdb2mdb.exe" LibBDD.dll

    @pause
    cd ..\..\..\..\..\
    echo LibBDD done, new directory %CD%
    )
Run Code Online (Sandbox Code Playgroud)

首先,我不确定我的 CD 命令是否有效,因为路径保持不变。但我没有任何例外。

有了这个代码,我得到:

致命错误:Microsoft.Cci.Pdb.PdbDebugException:未知的自定义元数据项种类:6 à Microsoft.Cci.Pdb.PdbFunction.ReadCustomMetadata(BitAccess bits) à Microsoft.Cci.Pdb.PdbFunction..ctor(String module, ManProcSym proc, BitAccess bits) à Microsoft.Cci.Pdb.PdbFunction.LoadManagedFunctions(String module, BitAccess bits, UInt32 limit, Boolean readStrings)à Microsoft.Cci.Pdb.PdbFile.LoadFuncsFromDbiModule(BitAccess bits, DbiModuleInfo info, IntHashTable names, Boolean ArrayList funcList readStrings, MsfDirectory dir, Dictionary`2 nameIndex, PdbReader reader) à Microsoft.Cci.Pdb.PdbFile.LoadFunctions(Stream read, BitAccess bits, Boolean readAllStrings) à Pdb2Mdb.Driver.Convert(AssemblyDefinition assembly, Stream pdb, MonoSymbolWriter mdb)

没有CD我得到:

Mono pdb 到 mdb 调试符号存储转换器用法:pdb2mdb 程序集

我正在使用 Visual Studio 2019 社区。

我不确定我做错了什么以及为什么我不能在 Unity 中调试了。我尝试将 csproj 添加到 VS 中的解决方案中,但它不再起作用,符号未加载。

Bob*_*les 8

看起来 2019.3 中发生了一些变化,出于某种原因,Unity 不再自动生成 mdb 文件。

解决方案是将您的 pdb 设置为可移植的而不是完整的,默认情况下您可以按照此处的说明执行此操作。在此之后,您不再需要 mdb 文件。

上面链接中的分步说明:

  1. 在解决方案资源管理器中,选择项目。

  2. 选择“属性”图标(或按Alt+Enter)。

  3. 在侧窗格中,选择Build(或在 Visual Basic 中编译)。

  4. 配置列表中,选择调试发布

  5. 选择“高级”按钮(或Visual Basic 中的“高级编译选项”按钮)。

  6. 调试信息列表(或Visual Basic 中的生成调试信息列表)中,选择Portable

  7. 构建您的项目。

编译器在与可执行文件或主输出文件相同的文件夹中创建符号文件。

你也可以在这里这里阅读它