Создать файл MDB для отладки управляемой DLL в Unity - PullRequest
1 голос
/ 03 апреля 2020

Я пытаюсь отладить мою управляемую DLL в Unity. Раньше он работал нормально на Unity 2018.x

Теперь у меня Unity 2019.3, и я больше не могу отлаживать (мои DLL работают нормально, я просто не могу их отладить).

Мой DLL и ее файл pdb находятся в папке Assets. Раньше этого было достаточно для их отладки.

Читая эту документацию: https://docs.unity3d.com/Manual/UsingDLL.html, я пытаюсь создать файл mdb.

Первый выпуск В документации сказано, что я должен передать файл .pdb в качестве параметра, в то время как большинство ссылок в Google говорят, что передают .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%
    )

Прежде всего, я не уверен, что моя команда CD работает поскольку путь остается прежним. Но я не получаю никаких исключений.

С этим кодом я получаю:

Неустранимая ошибка: Microsoft.Cci.Pdb.PdbDebugException: неизвестный тип элемента пользовательских метаданных: 6 à Microsoft .Cci.Pdb. BitAccess биты, предел UInt32, Boolean readStrings) à Microsoft.Cci.Pdb.PdbFile.LoadFuncsFromDbiModule (BitAccess бит, DbiModuleInfo информации, IntHashTable имена, ArrayList funcList, булевы readStrings, MsfDirectory реж, Dictionary`2 nameIndex, PdbReader читателя) à Microsoft.Cci .Pdb.PdbFile.

Конвертер хранилища символов отладки Mono pdb в mdb Использование: сборка pdb2mdb

I'm usi ng Visual Studio 2019 Community.

Я не уверен, что я делаю неправильно и почему я больше не могу отлаживать в Unity. Я пытался добавить csproj к решению в VS, но это больше не помогает, символы не загружаются.

1 Ответ

1 голос
/ 24 апреля 2020

Похоже, что-то изменилось в 2019.3, и по какой-то причине Unity больше не генерирует файлы mdb автоматически.

Решение состоит в том, чтобы установить для ваших pdb значение portable вместо full по умолчанию вы можете сделать это, следуя инструкциям из здесь . После этого вам больше не нужны файлы mdb.

Пошаговые инструкции по ссылке выше:

  1. В обозревателе решений выберите проект .

  2. Выберите значок Свойства (или нажмите Alt + Enter ).

  3. In на боковой панели выберите Сборка (или Компиляция в Visual Basi c).

  4. В Конфигурация выберите Debug или Release .

  5. Выберите кнопку Advanced (или Advanced Compile Options Кнопка в Visual Basi c).

  6. В списке Отладочная информация (или Создать отладочную информацию список в Visual Basi c), выберите Portable .

  7. Создайте свой проект.

Компилятор создает файл (ы) символов в той же папке, что и исполняемый файл или основной выходной файл.

Вы также можете прочитать об этом здесь и здесь

...