Как отладить статические проблемы с загрузкой зависимостей? - PullRequest
2 голосов
/ 27 апреля 2011

Как можно отладить сценарий, в котором приложение Visual C ++ 2010 SP1 не может полностью загрузить свои зависимости и преждевременно завершает работу, не показывая свой пользовательский интерфейс?

Меня интересуют хорошие руководства по журналам Fusion, средству обхода зависимостей и удаленному отладчику, если вы считаете, что они актуальны. Это то, что можно легко проверить с помощью WinDbg? А как насчет Process Explorer?

Можно ли запустить процесс на удаленной машине с подключенным удаленным отладчиком?

Можно ли проверить, установлена ​​ли надлежащая среда выполнения Visual C ++ 2010 SP1?

Одно ограничение: приложение отлично работает на коробке разработчика с установленной Visual Studio. Проблему можно наблюдать только на чистой целевой машине. Это означает, что проблема может исчезнуть при установке цепочки инструментов.

Ответы [ 3 ]

5 голосов
/ 28 апреля 2011

Я всегда проверяю проблему dll-зависимостей с помощью DependencyWalker , а затем с помощью редактора глобальных флагов gFlags.exe на вкладке "Файл изображения" настройте программу и проверьте " Показать оснастку загрузчика".

Когда ваши программы запускаются, WinDbg.exe должен выводить из них множество сообщений о загрузке DLL, с помощью зависимостей вместе с вашим исходным кодом (если вы используете LoadLibrary), вы сможете найти, где что-то идет не так.

2 голосов
/ 27 апреля 2011

Проверьте, может ли ключ / VERBOSE помочь вам узнать, какую зависимость компоновщик пытается загрузить и запустить при сборке и запуске отладки кода.

Если вы используете ключ / VERBOSE, в основном компоновщик запишет в окно вывода сообщения о библиотеках, которые загружает компоновщик, что также доступно в журнале сборки, чтобы вы могли просмотреть его для справки. Таким образом, если есть ошибка при загрузке определенной зависимости МОЖЕТ БЫТЬ , это может вам помочь.

Я пытался / VERBOSE, когда у меня были ошибки связи и я знал, какая зависимость вызвала проблему в моем коде.

См. http://msdn.microsoft.com/en-us/library/wdsk6as6(v=vs.80).aspx, чтобы проверить, может ли это помочь вам.

1 голос
/ 27 апреля 2011

Можно ли запустить процесс на удаленной машине с подключенным удаленным отладчиком?

Конечно, можно.Например, в Visual Studio 2008 щелкните правой кнопкой мыши проект -> Свойства -> Свойства конфигурации -> Отладка, выберите «Удаленный отладчик Windows» в раскрывающемся списке «Отладчик для запуска».Затем введите полный путь к вашему EXE-файлу на удаленной машине и, если есть, укажите соответствующие аргументы.

Перед этим вам необходимо сначала запустить монитор удаленной отладки на удаленной машине.Скопируйте \ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ Remote Debugger \ x86 (или другую платформу) на удаленный компьютер и запустите msvsmon.exe.

Обычно, если приложение закрывается из-за отсутствияДля некоторой статической зависимости вы можете использовать средство обхода зависимостей, чтобы проверить, какая из них отсутствует.

...