VS.Net 2008 Windows 7 Debug Environment - PullRequest
1 голос
/ 24 марта 2011

Я конвертирую все свои производственные приложения для Windows XP в Windows 7, и у меня возникла пара проблем.

1: Каждый раз, когда я получаю сообщение об ошибке, на машинах XP он прерывает выполнение и останавливаетсяна строке кода с проблемой.В Windows 7 он просто генерирует общее исключение, и я понятия не имею, где произошла строка кода с ошибкой.Очень расстраивает.

2: В XP я могу редактировать изменения на лету, пока я выполняю код, если я ставлю точки останова или следую по коду.Если я попробую это сделать в Windows 7, он скажет, что это не разрешено для 64-битных приложений.Опять же, очень расстраивает.

Есть какие-нибудь идеи по исправлению этих проблем или хотя бы обойти их?

Ответы [ 2 ]

1 голос
/ 26 марта 2011

Вообще говоря, не должно быть различий в поведении отладчика между этими двумя платформами. Вот мои предложения:

  1. Из вашего описания я не могу установить, действительно ли отладчик сломался при первом случайном исключении, и он не нашел источник (возможно, символы не были найдены / были не совпадают?) Или если он не сломался вообще. Если первое, проверьте «Отладка -> Windows -> Модули» и убедитесь, что символы были загружены для рассматриваемого модуля. Если последнее, возможно, отладчик в Windows XP был настроен на разрыв при первом исключении, а отладчик в Windows 7 - нет? Сравните параметры в разделе «Отладка -> Исключения», чтобы увидеть, есть ли различия. Обратите внимание, что если вы включили «Просто мой код» в «Инструменты -> Параметры -> Отладка -> Общие», это также может повлиять на поведение отладчика при поломке при исключениях первого шанса.

  2. Функция редактирования и продолжения не поддерживается для 64-разрядных процессов, поэтому отладчик уведомит вас, когда вы попытаетесь изменить исходный код при отладке 64-разрядного процесса. Скорее всего, это результат запуска приложения AnyCPU (по-моему) или x64. Единственный способ редактирования и продолжения работы - отладка 32-битного процесса; это можно сделать, изменив целевую платформу на «x86» в «Build -> Configuration Manager» (добавьте платформу, если ее нет в списке). Это, конечно, предполагает, что ваше приложение не зависит от 64-битных модулей.

0 голосов
/ 26 марта 2011

Знаете ли вы примерно, откуда исходит ошибка? Если это так, и еще не сделано, бросьте общую попытку поймать его и сломать на улове; затем просмотрите трассировку стека, чтобы увидеть, какая строка вызывает ошибку.

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

...