Как подключиться к процессу и отладить код, который не собирается?

Я работаю над проектом и пытаюсь исправить ошибку, обнаруженную в системе. Код, к которому у меня есть доступ, не собирается (это огромный проект с большим количеством dll-файлов, некоторые из которых отсутствуют в моем рабочем пространстве). У меня есть доступ к той части кода, которую я пытаюсь отладить, но не могу ее собрать. Поэтому я запустил скомпилированный файл .exe и прикрепил к нему в VS. Когда я устанавливаю точку останова в коде, она отключается и говорит No symbols have been loaded for this document. Итак, мой вопрос: какую дополнительную информацию/файлы ищет отладчик? Я предполагаю, что он ищет файл pdb для этой конкретной сборки, которой нет на моей машине.

Когда я пытаюсь подключиться к exe-файлу, я получаю это предупреждение:

введите здесь описание изображения


person PoweredByOrange    schedule 10.05.2013    source источник
comment
Если у вас нет соответствующего файла pdb, вам не повезло.   -  person Janick Bernet    schedule 10.05.2013
comment
Ваше приложение должно быть скомпилировано с информацией об отладчике. Короче говоря в режиме DEBUG (или что там у вас настроено). :)   -  person gustavodidomenico    schedule 10.05.2013


Ответы (3)


какую дополнительную информацию/файлы ищет отладчик? Я предполагаю, что он ищет файл pdb для этой конкретной сборки, которой нет на моей машине.

Ваше предположение верно.

Вот несколько способов решить вашу проблему:

  • Получите расположение сервера символов, на котором находится ваша PDB, и настройте VS для автоматической загрузки PDB.
  • Получите PDB другими способами.
  • Выясните, как построить его самостоятельно; создать свою собственную PDB.
  • Попросите того, кто его построил, отладить проблему для вас. Вероятно, это их ошибка, так что заставьте их работать.
  • Отладьте проблему, читая исходники и моделируя выполнение программы в голове. Когда вы сталкиваетесь с кодом, который не делает то, что должен делать в симуляции, это ваша ошибка.
  • Отладьте проблему в отладчике, читая ассемблерный код вместо исходников.
person Eric Lippert    schedule 10.05.2013
comment
Я должен иметь возможность получить файлы pdb с основной машины сборки. Куда мне их вставить? Та же папка, что и файл .exe? - person PoweredByOrange; 10.05.2013

Он ищет файл pdb, без него вы не сможете отлаживать. Я не знаю подробностей вашей ситуации, но создание ее на вашей системе, вероятно, является лучшим подходом. По моему опыту, такая ситуация обычно возникает из-за того, что узел в исходном дереве находится слишком глубоко. При работе над более крупными проектами использование более мелкого узла в системе управления версиями значительно упростило мою жизнь. Когда вы работаете над таким проектом, вы должны быть в состоянии построить его, иначе вы, вероятно, ничего не добьетесь.

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

person evanmcdonnal    schedule 10.05.2013

Я не понимаю, что вы будете делать, запустив любой исполняемый файл. Вы сказали, что ваш код не собирается. Поэтому запуск любого исполняемого файла не может вам помочь. Вы код не можете скомпилировать, это то, с чем вы сталкиваетесь, чем делиться ошибками сборки или ошибками компиляции? Для отсутствующих сборок — удалите из ссылки на проект и закомментируйте код в своем проекте, который может ссылаться на любую такую ​​сборку. Можете ли вы построить свой код после этого?

Как только вы сможете создать код, вы можете приступить к отладке или присоединению любого исполняемого файла.

Надеюсь это поможет!

person bhavik shah    schedule 10.05.2013
comment
Вы по-прежнему можете отлаживать исполняемый файл, если у вас есть соответствующий файл pdb. И нет, я не могу просто все комментировать, как я уже сказал, это ОГРОМНЫЙ проект. - person PoweredByOrange; 10.05.2013
comment
Я имел в виду код, который не компилируется, его нельзя отлаживать, не так ли? Исполняемые файлы / библиотеки могут быть устаревшими или ссылаться на устаревшие или другие файлы pdb. - person bhavik shah; 10.05.2013