VS2008 Debug WEC7 Application - Точка останова в настоящее время не будет достигнута. В этой функции в настоящее время не загружен исполняемый код.

Мне нужно перенести консольное приложение C ++ Win32 на WEC7. После того, как я исправил некоторые ошибки сборки и связывания, я смог создать исполняемый файл, который запускается на целевой машине. Но я не мог отладить это приложение с помощью Visual Studio, потому что точки останова не были достигнуты, хотя соответствующие строки были определенно выполнены.

Для дальнейшего изучения моей проблемы я создал 2 новых проекта:

  1. Проект Win32

  2. Проект смарт-устройства Win32

Оба включают следующий код:

#include "stdio.h"
void main(void)
{
    int i=0;
    while(1)
    {
        printf("i=%d\n",i);
        i++;
    }
}

На этом этапе я могу отлаживать оба проекта, один из которых работает на моем ноутбуке с Windows 7, а другой - на моей цели на WEC7. Теперь я изменил платформенное решение с проекта 1 (проект Win32) на свою цель:

  • скопировал настройки с платформы Win32

  • установите формат отладочной информации с 4 на / Zi (не знаю, откуда взялось 4)

  • добавлены некоторые определения препроцессора WEC7

  • развернул программу на цель, и она работает нормально (счетчик напечатан в консоли), без разницы для проекта 2

  • пытался отладить программу, но точки останова на счетчике и printf не были достигнуты

Я проверил следующие настройки:

  • Конфигурация решения установлена ​​на отладку

  • Оптимизация отключена

  • Для параметра "Создать отладочную информацию" установлено значение "Да".

  • сравнил командную строку компоновщика между проектом 1 (моя "преобразованная" версия) и проектом 2 (проект Win32 Smart Device), но они идентичны -> Обновление: На самом деле они совсем не идентичны. Не знаю, что сравнивал в первый раз, но после обновления настроек все заработало.

Я установил следующие обновления Visual Studio:

Мне нужно изменить конкретную настройку? Или мне нужно изменить свой подход?

В основном я занимался проектированием программного обеспечения на основе моделей (Mathworks Embedded Coder, dSPACE Targetlink), поэтому я не знаком с особенностями Visual Studio и WEC7. Буду очень признателен за любую помощь.


person Christian Rießland    schedule 08.08.2014    source источник
comment
После некоторых ошибок сборки и компоновки я смог создать исполняемый файл ... Мне это не подходит. Если вы получаете ошибки сборки и связывания, вы не собираетесь создавать исполняемый файл. Вы имеете в виду, что вы исправили ошибки?   -  person Cody Gray    schedule 08.08.2014
comment
В любом случае, если у вас есть бесконечный цикл с точкой останова вне этого цикла, тогда нет - точка останова никогда не будет достигнута. Это должно быть очевидно, поскольку цикл никогда не завершается! Код там тоже никогда не запускается. Нарушаются не только точки останова. Чего именно вы пытаетесь достичь?   -  person Cody Gray    schedule 08.08.2014
comment
Я бы создал новый проект (используя шаблон) для платформы WCE и проверил, работает ли на нем отладка. Затем проверьте, какие параметры следует использовать в вашем реальном проекте. Самый простой способ - заглянуть в «Командную строку» для компилятора и компоновщика в свойствах проекта. Может дело в пути к pdb файлу?   -  person marcinj    schedule 08.08.2014
comment
@CodyGray Извините за мой плохой английский, конечно, я имел в виду ... после того, как я кое-что исправил ... Кроме того, счетчик и printf находятся внутри цикла, и код выполняется, но точка останова не будет достигнута.   -  person Christian Rießland    schedule 11.08.2014
comment
@marcin_j Я создал новый проект для WCE, и отладка работает нормально, но командная строка для компилятора и компоновщика идентична преобразованной версии.   -  person Christian Rießland    schedule 11.08.2014


Ответы (2)


Это решило мою проблему:

  1. Я создал новый проект (используя шаблон) для платформы WCE и проверил, работает ли отладка.
  2. Затем я проверил, какие параметры следует использовать в моем реальном проекте, сравнив «Командную строку» для компилятора и компоновщика в свойствах проекта.

Было несколько отличий, и после того, как я их убрал, мой проект заработал нормально.

Спасибо @brightstar

person Christian Rießland    schedule 23.10.2014

Есть несколько обновлений для VS2008, позволяющих выполнять отладку в Windows Embedded Compact 7. Вы их устанавливали?

Например, есть http://www.microsoft.com/en-us/download/details.aspx?id=11935

person Fabian    schedule 11.08.2014
comment
Он дает ответ на вопрос таким образом, что указывает на наличие известной ошибки с конкретным отладчиком (VS2008) в конкретной системе (Windows Embedded Compact 7), выполняющим именно то, что описывается как ошибка (не попадание в точки останова), даже предоставляя ссылку для скачивания. Так почему вы хотите его удалить? И у меня недостаточно репутации, чтобы разместить это в качестве похвалы под основным постом. - person Fabian; 12.08.2014
comment
@Fabian Я уже установил это конкретное обновление, которое вы связали, но я не смог найти других, связанных с моей проблемой. - person Christian Rießland; 12.08.2014
comment
@ ChristianRießland Вы уверены, что у вас правильный exe? Если две сборки имеют одинаковое имя, возможно, выполняется неправильная сборка с правильным выводом, но без попадания в точки останова. - person Fabian; 12.08.2014
comment
Где в ответе говорится об известной ошибке? Он просто говорит, что есть некоторые обновления; вот ссылка. Мало того, что ответы только по ссылке категорически не рекомендуются, этот ответ не отвечает на вопрос. Он дает только потенциальный ответ. Возможно, полезный совет, но не ответ. Вместо этого их следует публиковать как комментарии. - person Cody Gray; 13.08.2014
comment
@CodyGray Хорошо. Итак, скажите мне, что такое протокол при попытке опубликовать потенциальный андер или, возможно, полезный совет, но быть новым в stackoverflow, чтобы разрешить публиковать комментарии? - person Fabian; 13.08.2014
comment
Протокол - оставить комментарий. Если у вас недостаточно репутации для публикации комментария, вы не можете его опубликовать. Это так просто. Как указано на странице О программе, цель этого сайта - получить ответы. Чтобы не получить потенциально полезный совет. Это не веб-форум, это сайт вопросов и ответов. Если вы не можете ответить на вопрос или в вопросе недостаточно информации для ответа, вы не можете на него ответить. Вам просто нужно двигаться дальше, отвечая на другие вопросы, пока не получите права комментирования. Это не займет так много времени; оценка 50 - это всего лишь 5 голосов за ответы. - person Cody Gray; 13.08.2014