Использование встроенных символов с WinDbg

Я скомпилировал свою сборку со встроенными символами:

namespace SymbolsTest
{
    static class Program
    {
        private static void Main()
        {
            var now = System.DateTime.Now;
            System.Console.WriteLine($"Now:  {now}");
        }
    }
}
csc SymbolsTest.cs /target:exe /platform:x64 /debug+ /debug:embedded /out:SymbolsTest_x64.exe

Когда я пытаюсь загрузить символы в WinDbg, я получаю ошибку при загрузке символа:

0:000> !CLRStack
OS Thread Id: 0x21e4 (0)
        Child SP               IP Call Site
0000000000dfe940 00007ffa7a0b6004 [PrestubMethodFrame: 0000000000dfe940] SymbolsTest.Program.Main()
0000000000dfee30 00007ffa7a0b6004 [GCFrame: 0000000000dfee30] 
0:000> .reload
Reloading current modules
................................
0:000> .reload /f
Reloading current modules
.*** WARNING: Unable to verify checksum for SymbolsTest_x64.exe
*** ERROR: Module load completed but symbols could not be loaded for SymbolsTest_x64.exe
...........*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\Program Files\Avecto\Privilege Guard Client\PGHook.dll - 
....................

************* Symbol Loading Error Summary **************
Module name            Error
SymbolsTest_x64        0x80190194 - Not found (404). : srv*c:\symbols*http://msdl.microsoft.com/download/symbols
PGHook                 0x80190194 - Not found (404). : srv*c:\symbols*http://msdl.microsoft.com/download/symbols

You can troubleshoot most symbol related issues by turning on symbol loading diagnostics (!sym noisy) and repeating the command that caused symbols to be loaded.
You should also verify that your symbol search path (.sympath) is correct.

sympath настроен правильно (что я считаю правильным):

0:000> .sympath
Symbol search path is: srv*C:\Symbols*http://msdl.microsoft.com/download/symbols
Expanded Symbol search path is: srv*c:\symbols*http://msdl.microsoft.com/download/symbols

************* Path validation summary **************
Response                         Time (ms)     Location
Deferred                                       srv*C:\Symbols*http://msdl.microsoft.com/download/symbols

Как я могу сообщить отладчику, что символы встроены в файл?

вы пробовали: полный и работает ли вы получаете pdb

blabb 08.10.2018 15:32

Откуда у вас опция /debug:embedded? По крайней мере, недокументированный здесь.

Thomas Weller 08.10.2018 23:45

@thomas do csc /? и посмотрите справку по параметрам отладки, там должно быть 4 варианта, включая встроенный default is full

blabb 09.10.2018 04:45

@blabb Да, если я создам файл отладки и добавлю его на сервер символов, все в порядке.

BanksySan 09.10.2018 12:31

тогда возможно встроенное имеет проблему, похоже, это полу / неофициальная функция, на некоторых досках rosalyn есть ссылка на его использование с функцией исходной ссылки, которую вам, возможно, придется посмотреть в предварительных просмотрах инсайдеров

blabb 09.10.2018 15:38

@blabb может и все, я думал, это будет меньше хлопот, чем постоянно добавлять символы локально.

BanksySan 09.10.2018 15:45

@BanksySan: обычно символы не вставляются. Они могут вырасти на несколько МБ, что может повлиять на размер развертывания и время загрузки DLL, а также память, используемую библиотеками DLL (впрочем, ничего плохого для 64-битной версии). Кроме того, для приложений с закрытым исходным кодом вы не хотите отправлять символы.

Thomas Weller 09.10.2018 19:45

@ThomasWeller Это просто для того, чтобы покопаться в отладчиках, я подумал, что встроенные символы могут избавить меня от необходимости добавлять файл символов в локальное хранилище символов. Я бы никогда не встраивал их в приложение настоящий.

BanksySan 09.10.2018 19:58
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
8
200
0

Другие вопросы по теме