Почему Visual Studio не может загрузить символы, хранящиеся ранее? - PullRequest
0 голосов
/ 14 мая 2018

У меня следующая странная (по крайней мере для меня) ситуация:

  1. Я создал простое консольное приложение в папке D:\Test.Код следующий

    static void Main(string[] args)
    {
        Console.WriteLine("Dumps hello world !");
        int i = 5 + 5;
        Console.ReadLine();
    }
    
  2. Постройте решение и скопируйте exe-файл в другую папку D:\Test2.Запустите приложение из этой папки, создайте файл дампа (с помощью диспетчера задач), откройте этот дамп в Visual Studio, нажмите «Отладка с помощью Mixed».Visual Studio может загружать символы, и я могу анализировать файл дампа из Visual Studio.Все хорошо

Теперь я хочу следующее а) изменить текущий исходный код в папке D:\Testб) уметь анализировать файлы дампа для старого exe-файла в папке D:\Test2.Итак, чтобы сделать это, я сделал резервную копию старого файла .pdb.Я скопировал его в D:\StoredSymbols папку

Измените исходный код на следующий

static void Main(string[] args)
{
    Console.WriteLine("Dumps hello world !");
    Console.WriteLine("Some minor changes");
    int i = 5 + 5;
    Console.ReadLine();
}

Запустите старый exec-файл из D:\Test2, создайте дамп процесса, откройте его в Visual Studio, нажмите «Отладить с помощьюMixed».Как и ожидалось, Visual Studio пытается загрузить символы из папки D:\test и не может это сделать, поскольку файл .pdb уже соответствует новому exe-файлу, а не старому.

Поэтому я установил новый путь дляФайл .pdb - D:\StoredSymbols, но Visual Studio все еще не может проанализировать файл дампа!ЗАЧЕМ ??И что я должен сделать, чтобы выполнить мои задачи ?Это скриншот

enter image description here

Вот мой скриншот отладки -> Модулиenter image description here

1 Ответ

0 голосов
/ 14 мая 2018

На прикрепленном скриншоте написано, что пропущены символы загрузки для mscorlib.dll, и указана причина («Просто мой код»).

Я не думаю, что вы просите эти символы.Вы хотите загрузить свой.Если вы проверите Debug->Modules и Symbol Load Information (в контекстном меню), вы, вероятно, увидите информацию о том, что «PDB не соответствует изображению».Насколько я знаю, VS требует, чтобы символы происходили из той же сборки, что и изображение, поэтому нет способа преодолеть это, если только вы не подделаете символы.Это можно сделать с помощью R # (платно) или dotPeek (бесплатно).dotPeek поставляется с сервером символов, который обслуживает PDB по требованию.

По сути, вы добавляете сервер символов dotPeek в качестве сервера символов в VS, и он будет генерировать PDB по мере необходимости.

Я записал краткий рассказ о том, как это можно сделать: Отладка без исходного кода с помощью сервера символов dotPeek

...