Исходный код не найден visual studio
Вам когда-нибудь нужно было отлаживать или профилировать исполняемый файл (файл .exe), для которого у вас нет исходного кода или вы не можете его собрать? Тогда наименее известный тип проекта Visual Studio, проект EXE, для вас!
В Visual Studio вы можете открыть любой EXE-файл как «проект». Просто перейдите в Файл -> Открыть -> Проект/Решение и перейдите к файлу .exe . Как если бы это был файл .sln . Visual Studio откроет этот EXE-файл как проект. Эта функция существует уже давно. Она работает на всех поддерживаемых в настоящее время версиях Visual Studio, и документация по ней находится на странице Отладка приложения, которое не является частью решения Visual Studio.
Отладка
Как и в обычном проекте, вы можете начать отладку с помощью F5, которая запустит EXE и подключит отладчик. Если вы хотите отладить запуск, вы можете запустить с помощью F11, который запустит EXE и остановится на первой строке пользовательского кода. Оба эти параметра доступны в контекстном меню для проекта EXE в окне Solution Explorer, как показано ниже:
Для отладки понадобятся символы, файлы PDB, для EXE и любых DLL, которые нужно отладить. Visual Studio будет следовать тому же процессу и попытается получить символы также, как и при отладке обычного проекта. Поскольку маловероятно, что файлы PDB были распространены вместе с EXE-файлом, возможно, вы захотите найти их в сборке или, что еще лучше, на сервере символов. Дополнительную информацию и рекомендации по использованию символов можно найти в этом блоге.
Для эффективной отладки вам также понадобится исходный код, который использовался для сборки EXE, или даже для нескольких файлов, которые вас интересуют. Вам нужно найти эти файлы и открыть их в Visual Studio. Если исходный код не совпадает с исходным кодом, который был собран, EXE Visual Studio предупредит вас, когда вы попытаетесь вставить точку останова, и точка останова не будет привязана. Это поведение может быть изменено в окне Settings peek window. В окне просмотра параметров щелкните текст ссылки Must match source, а затем установите флажок, чтобы разрешить несоответствующий источник, как показано ниже. Конечно, с несоответствующим источником вы никогда не знаете, что произойдет, так что используйте это только на свой страх и риск.
Если EXE был собран с SourceLink, то информация об источнике будет включена в PDB, и Visual Studio попытается загрузить источник автоматически. Это действительно хорошая причина использовать SourceLink с вашими проектами. Даже если у вас есть локальный набор, у вас может не быть той версии, которая использовалась для сборки двоичного файла. SourceLink — ваш надежный способ убедиться, что правильный источник связан с правильным двоичным файлом.
Если вы не можете получить исходный код, у вас еще есть несколько вариантов:
Профилирование
Заключение
Вот и все. Краткий обзор того, как вы можете использовать Visual Studio для отладки и профилирования приложений, которые вы не создаете и которые могут даже не иметь исходного кода. В следующий раз, когда вам понадобится отладить или профилировать EXE-файл, не забудьте, что вы можете открыть его как решение в Visual Studio!
Создание исходного кода
Символы не загружены
Исходный код не найден
Создание и внедрение исходного кода для сборки
Извлечение и просмотр внедренного исходного кода
Исходные файлы, внедренные в файл символов, можно извлечь с помощью команды Извлечь исходный код в контекстном меню окна Модули.
Извлеченные исходные файлы добавляются в решение как прочие файлы. В Visual Studio функция "Прочие файлы" по умолчанию отключена. Чтобы включить эту функцию, установите флажок Инструменты > Параметры > Среда > Документы > Показывать прочие файлы в Обозревателе решений. Без включения этой функции вы не сможете открыть извлеченный исходный код.
Извлеченные исходные файлы отображаются в разделе прочих файлов в Обозревателе решений.
Известные ограничения
Требуется режим прерывания выполнения
Создание исходного кода с помощью декомпиляции возможно только в том случае, если отладчик находится в режиме прерывания выполнения и приложение приостановлено. Например, Visual Studio переходит в режим прерывания, попадая в точку останова или в исключение. Вы можете легко активировать прерывание выполнения Visual Studio при следующем запуске кода с помощью команды Прервать все ().
Ограничения декомпиляции
Отладка оптимизированных сборок или сборок выпуска
При отладке кода, декомпилированного из сборки, которая была скомпилирована с использованием оптимизаций компилятора, вы можете столкнуться со следующими проблемами:
- точки останова могут не всегда быть привязаны к соответствующим исходным расположениям;
- при пошаговом выполнении шаг может не всегда переходить в правильное место;
- имена локальных переменных могут быть неточными;
- некоторые переменные могут быть недоступны для оценки.
Дополнительные сведения можно найти в описании проблемы GitHub Интеграция ICSharpCode.Decompiler с отладчиком VS.
Надежность декомпиляции
Относительно небольшой процент попыток декомпиляции может привести к сбою. Это происходит из-за ошибки пустой ссылки точки последовательности в ILSpy. Мы устранили этот сбой путем перехвата таких проблем и корректного завершения попытки декомпиляции.
Дополнительные сведения можно найти в описании проблемы GitHub Интеграция ICSharpCode.Decompiler с отладчиком VS.
Ограничения при работе с асинхронным кодом
Результаты декомпиляции модулей с шаблонами кода async/await могут быть неполными или неудачными в целом. Шаблоны кода async/await и машины состояния yield state-machine в ILSpy реализованы только частично.
Дополнительные сведения можно найти в описании проблемы GitHub Состояние генератора PDB.
Только мой код
Параметры режима Только мой код (JMC) позволяют Visual Studio выполнять шаг с обходом системы, платформы, библиотеки и других вызовов непользовательского кода. Во время сеанса отладки в окне Модули отображаются модули кода, которые отладчик воспринимает как "Мой код" (т. е. пользовательский код).
При декомпиляции оптимизированных модулей или модулей выпуска создается непользовательский код. Если отладчик прерывается в декомпилированном непользовательском коде, появляется окно Отсутствует источник. Чтобы отключить режим "Только мой код", перейдите в раздел Инструменты > Параметры (или Отладка > Параметры) > Отладка > Общие и снимите флажок Включить только мой код. .
Извлеченный исходный код
Исходный код, извлеченный из сборки, имеет следующие ограничения.
- Имена и расположение созданных файлов нельзя настроить.
- Файлы являются временными и будут удалены Visual Studio.
- Файлы помещаются в одну папку без использования какой-либо иерархии, которая была в оригинальных исходных файлах.
- Имя каждого файла содержит хэш контрольной суммы файла.
привет. я использую Microsoft Visual C++ 2010 Express.
я хочу разогнать эмулятор nestopia. но у меня не получается построить эмулятор из исходного кода (построение - построить решение). в сам код я пока что не вносил никаких изменений, он просто не собирается у меня на компе. поначалу при сборке было очень много ошибок. я спросил совета у знакомого, он сказал поставить Microsoft DirectX SDK (June 2010). я поставил, затем в программе в опциях каталогов VC++ подключил каталоги включения из папки Include и каталоги библиотек из папки Lib\x86. больше никаких настроек не менял. ошибок при сборке стало намного меньше, но все равно в итоге эмулятор не собирается. а у того знакомого все собирается без ошибок, значит сам исходник в порядке, но он не знает в чем у меня дело. а я тем более не знаю, я только начинаю во все это вникать.
помогите, пожалуйста. может надо в настройках что-то поменять, или еще что-нибудь.
прикрепляю лог сборки и сам исходник, который по идее специально был подогнан под VS 2010 (Converted solution and projects to Visual Studio 2010).
nestopia.sln находится в common 1.47\projects.
Synapse: не получается получить исходный код страницы
Всем привет. Не могу понять, почему не получается получить исходный код страницы. делаю так: .
Переделать исходный код. Код в Паскале,а нужно сделать его в Фортране
program arab_to_roman; uses crt; var n : word; ch : char; procedure.
привет. я использую Microsoft Visual C++ 2010 Express.
я хочу разогнать эмулятор nestopia. но у меня не получается построить эмулятор из исходного кода (построение - построить решение). в сам код я пока что не вносил никаких изменений, он просто не собирается у меня на компе. поначалу при сборке было очень много ошибок. я спросил совета у знакомого, он сказал поставить Microsoft DirectX SDK (June 2010). я поставил, затем в программе в опциях каталогов VC++ подключил каталоги включения из папки Include и каталоги библиотек из папки Lib\x86. больше никаких настроек не менял. ошибок при сборке стало намного меньше, но все равно в итоге эмулятор не собирается. а у того знакомого все собирается без ошибок, значит сам исходник в порядке, но он не знает в чем у меня дело. а я тем более не знаю, я только начинаю во все это вникать.
помогите, пожалуйста. может надо в настройках что-то поменять, или еще что-нибудь.
прикрепляю лог сборки и сам исходник, который по идее специально был подогнан под VS 2010 (Converted solution and projects to Visual Studio 2010).
nestopia.sln находится в common 1.47\projects.
Приносим извинения. Запрошенное содержимое было удалено. Вы будете автоматически перенаправлены через 1 секунду.
Лучший отвечающий
Вопрос
- Изменен тип Maksim Marinov Microsoft contingent staff, Moderator 17 августа 2015 г. 6:47 тема не активна
- Изменен тип Maksim Marinov Microsoft contingent staff, Moderator 17 августа 2015 г. 6:47 ошибка
Ответы
Приложение Windows начинает исполнение кода не с главной функции Вашей программы. Главная функция вызывается средой .net после некоторых подготовительных операций. Запуск отладки клавишами F10-F11, предназначенными для пошаговой отладки останавливают программу именно в этом "подготовительном" коде, исходный код которого, действительно, отсутствует. И символы здесь не помогут. Отладку следует начинать с установки точек прерывания в своем коде, а запускать клавишей F5.
А это предупреждение говорит о том, пошаговая отладка аксессоров get и set свойств отключена (по умолчанию, действительно, так и есть) и предлагает ее включить.
Все ответы
Приложение Windows начинает исполнение кода не с главной функции Вашей программы. Главная функция вызывается средой .net после некоторых подготовительных операций. Запуск отладки клавишами F10-F11, предназначенными для пошаговой отладки останавливают программу именно в этом "подготовительном" коде, исходный код которого, действительно, отсутствует. И символы здесь не помогут. Отладку следует начинать с установки точек прерывания в своем коде, а запускать клавишей F5.
А это предупреждение говорит о том, пошаговая отладка аксессоров get и set свойств отключена (по умолчанию, действительно, так и есть) и предлагает ее включить.
Спасибо. Вы мне помогли разобраться. Но у меня возник вопрос другой. Как отладку делать клавишей F11? Сначала точки останова, потом F5, а потом F11?
Я думал, что шаг с заходом я делаю по своему коду. В предыдущих версиях студии всё работало, я шагал по своему коду. А тут и в настройках отладки поменял параметры, всё равно не шагает. Иногда спрашивает файл appdomain.cs и указывает путь, по которому ищет этот файл, не существующий на моем компьютере.
Что работало? Что Вы вкладываете в понятие "шаг с заходом"? Заход осуществляется в функцию (метод). Если метод Ваш, Вы увидите исходный код, в противном случае - нет. Что может быть не понятно?
По-моему шаг с заходом после нажатия F11 это когда можно передвигаться по коду, заходить в процедуры, например в процедуру клика по кнопке, пошагово выполнять каждый оператор и при наведении курсора мышки показываются значения переменных. Сейчас это доступно, когда установлена точка останова, нажата клавиша F5, а уже после этого можно нажимать F11. Раньше было достаточно F11 только, чтобы посмотреть как выполняется программа.
Здравствуйте, Вы разобрались в проблеме? Пожалуйста для тех кто в танке помогите решить аналогичную, в комментариях подытожено кем то ". что еще не понятно", остается только сказать ". ну не понятно" чуть подробней плиз
для примера создал небольшой новый проект winForms в нем форма и таймер. При отладке (точка останова), клавишей F11 (шаг с заходом) добирается до первого условия и выдает также исходный код не найден пытается найти int32.cs в ДРУГИХ случаях другой потерянный файл и так все время(
в данном случае точка останова возле if (ids>2), три нажатия F11 и выходит ЗЛОСТНОЕ непреодолимое препятствие: "файл не найден"
При отладке (точка останова), клавишей F11 (шаг с заходом) добирается до первого условия и выдает также исходный код не найден пытается найти int32.cs в ДРУГИХ случаях другой потерянный файл и так все время(
в данном случае точка останова возле if (ids>2), три нажатия F11 и выходит ЗЛОСТНОЕ непреодолимое препятствие: "файл не найден"
Во-первых, не могу понять, почему нужно пытаться обязательно делать ШАГ С ЗАХОДОМ в метод (в Вашем случае в операцию сравнения "больше" структуры Int32), не принадлежащий Вашей программе и исходного кода которого точно нет на локальной машине?
Во-вторых, не знаю в какой версии VS Вы работаете, а у меня в VS 2017 Community описанное Вами поведение студии не наблюдается. Отладчик благоразумно обходит отсутствующий исходный код (даже по F11) и переходит к следующей строке.
Посмотрите настройки отладки (особенно, отмеченные на рисунке пункты):
Если у Вас есть какие-либо проблемы, пожалуйста, для начала убедитесь что Вы выполнили все шаги. В ТОЧНОСТИ как написано у нас. Если все же ничего не помогает, обратите внимание на секцию FAQ в конце документа. Если и это не заработает, пишите Ваши комментарии, мы будем решать их все вместе.
Основная настройка
Для начала отмечу, что если у Вас установлена MS VS 2008 Express Edition, то у Вас это работать не будет.
1) Установите Visual Studio QFE. Это исправление просто обновляет DLL, которые являются частью отладчика Visual Studio, который выбирает исходные файлы. Все подробности оп исправлениям читайте на странице загрузки.
2) Запустите Visual Studio и выберите Tools > Options > Debugging > General. Если Вы работаете над Visual Basic Profile, Вам необходимо установить флажок в нижней части диалога Options Dialog, «Show All Settings» перед тем как продолжить.
- Выключите «Enable Just Me Code (Managed only)»
- Включите «Enable source server support»
Все, установка произведена!
Отладка внутри исходного кода Framework
Запускаем отладку решения. Когда работа программы остановится в поставленной нами точке останова, перейдите в окно Call Stack. В стеке вызовов щелкните правой кнопкой мыши по строке, начинающейся с System.Windows.Forms.dll и выберите Load Symbols. Надеемся что у Вас хороший Интернет канал. В противном случае запаситесь заранее булочками и чаем. Файлы, подлежащие загрузке весят порядка 10 мегабайт. Обратите внимание, что Visual Studio не будет отвечать все это время (минус им в карму. Хороший тон — индикатор загрузки. А вдруг висит? Тогда убить процесс. А если не висит? Убивать — время жалко). Однако такая загрузка производится лишб однажды и будет храниться у Вас на компьютере в каталоге с кэшем, указанным Вами выше.
Эти действия позволят загрузить символы из DLL с севрера, и Вы увидете что все строки, обозначающие вызовы внутри System.Windows.Forms.dll станут черными, т.е. доступными. Также станут доступными и номера строк. Помните, что каждый раз, когда Вам понадобится посмотреть на символы, нужно будет щелкнуть правой клавишей мыши и выбрать Load Symbols.
Итак, с этого момента загружены все символы для System.Windows.Forms.dll и теперь можно смотреть его код. Код вы можете просматривать совершенно также как и во время обычной отладки своего кода. Для этого, как обычно, щелкните дважды по строке CallStack либо зайдите внутрь методов сборки по (F11). Когда Вы в первый раз попробуете просмотреть код, то Вам предложат лицензию, на основани которой Вам разрешено его читать, и если Вы согласны с ней, нажмите Accept, после чего исходный код будет загружен.
Теперь для всех сборок, в которых Вы захотите отлаживаться, просто повторите все те шаги, которые описаны выше. Если Вам понадобилось отладки тех сборок, которых нет в Call Stack, откройте окно Modules и загрузите символы оттуда.
Теперь Вы можете в примере выше зайти в код DrawRectangle по F11.
Для продвинутых пользователей
Как правило, при каждом сеансе отладки, Visual Studio пытается загрузить символы для каждой DLL, которая загружается в отлаживаемый процесс. Чтобы найти информацию по символам, она порсматривает все пути, указанные в Options > Debugging > Symbols. Но есть проекты, которые используют очень много библиотек DLL, для которых нет никакой информации по символам. В этих случаях процесс запуска отладки будет очень долгим. Это основная причина, из-за которой мы советуем Вам использовать загрузку символов по требованию пользователя.
Существует, однако, способ сделать загрузку символов автоматически (что по сути, избавляет от шага «Load Symbols»), что увеличивает общую производительность. Этот флажок имеет смысл устанавливать только продвинутым пользователям системы, поскольку потом Вам придется довольно часто возвращаться в этот диалог. Кстати, для того чтобы быстро в него зайти, выберите «Symbol Settings. » в контекстном меню на изображении повыше.
Основа этого — получить все символы, скачать их и храниьб локально. Для этого отключите флажок «Search the above locations. ».
После этого запустите свой проект в отладчике. Да, кстати, извините, совсем забыл сказать. Наберитесь терпения, чаем и булочками. В зависимости от соединения скачивать студия будет либо долго, либо очень долго. Всего понадобится скачать порядка 50 мегабайт. И т.к. все это будет закешировано, то эот будет единовременно.
Как только этот процесс завершится, можно остановить отладчик и снять источник с адресом сервера и нажать OK:
После этих шагов все символы будут загружаться автоматичсеки, и Вы будете иметь возможность вмешиваться в стек вызовов без ранних ограничений. Обратите внимание, что если Вы будете работать над другим проектом, в котором не будет информации по загруженным символам, порсто повторите все эти шаги ;)
Также проверьте ваш «C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE» (или то место, куда Вы установили Visual Studio) файл с именем symsrv.no. Если этот файл существует, переименуйте его в symsrv.yes.
2) Когда я пытаюсь зайти отладчиком внутрь исходного кода, то получаю диалог «Source is not available for this location»
Во-первых посмотрите пункт (2) в FAQ. чтобы убедиться что все символы были загружены успешно. В этом можно убедиться, посмотрев в окно Modules, в колонку статуса символов. Если символы загружены, проверьте следующее:
Если Вы настроили Microsoft Symbol Server в прошлом, и Вы загрузили символы для этой DLL, которые не содержат исходных кодов. Попробуйте указать другое положение кэша либо удалите существующий кэш, после чего поврите команду «Load Symbols». Посмотрите также FAQ (3) для получения дополнительной информации.
Убедитесь лишний раз в том что Вы включили флажок «Enable Source Server» в окне Tools > Options > Debugging > General.
Убедитесь что папка, которая настроена на сбор кэша символов, имеет разрешения на чтение и запись
Если у Вас установлена _NT_SYMBOL_PATH, она будет переопределять все эти настройки. За подробностями сюда
3) Я также использую Microsoft Symbol Server для загрузки символов. В чем разница?
Microsoft Symbol Server обеспечит Вас символами без предоставления какой-либо информации в них. Эта информация будет удалена перед публикацией. Чтобы использовать и Reference Source path и Micrososft Symbol Server это расположение Reference Source path первым в списке
Однако если у Вас Microsoft Symbol Server настраивается через _NT_SYMBOL_PATH, помните, что _NT_SYMBOL_PATH перекрывает эти настройки.
4) Есть ли поддержка 64-разрядной ОС?
Да, при условии наличия 64-разряднных версий PDB. Здесь стоит отметить что есть DLL, которые работают на различных архитектурах. Потому для них понадобится всего одна PDB.
5) Как мне установить точки останова в коде Framework?
Изначально, Visual Studio требует чтобы код в точности соответствовал PDB файлу. Хотя довольно часто PDB файлы изменены не значительно. Например, автор добавил строки с авторскими правами. Но код по-прежнему можно легко отлаживать. Просто установите точку останова (появится не полностью закрашенная точка) и укажите расположение PDB файла (контекстное меню от точки останова, позиция Location. )
Затем установите флажок, указанный ниже:
После этих действий Вы сможете спокойно продолжить работу.
6) Почему такие функции как «Go To Defenition» не работают?
Потому что эта информация создается на периоде работы с кодом, а не во время исполнения.
7) Почему некоторые члены или локальные переменные не доступны? Почему я не могу заходить внутрь некоторых методов или ходить по некоторым строчкам кода?
8) Почему так долго загружаются PDB файлы?
Потому что их много, и среди них есть файлы под 1 мегабайт.
9) Можно ли открыть и посмотреть их через браузер?
Предназначен для скачивания всех символов и исходных кодов. Работает из командной строки и доступен в исходных кодах.
Читайте также: