|
Вопросы по Eclipse, CDT, Zylin embedded CDT, предлагаю обсуждать тут, может потом FAQ выжмем |
|
|
|
Apr 4 2008, 10:43
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Чтобы не создавать по отдельной ветке на каждый мелкий вопрос, предлагаю обсуждать здесь всякие вопросы, касаемые работы в среде Eclipse. В крайнем случае можно будет при необходимости что-то "отпочковать" в отдельную ветку.
Вопрос первый - как в перспективе Debug расположить окно с переменными, регистрами и т.д. вдоль всего правого края экрана сверху вниз?
Вопрос второй - как заставить его показывать в окне регистров содержимое SPSR (для ARM), а также "затененных" регистров SP и LR (IAR их как-то показывает)?
Вопрос третий - как поставить точку останова на конкретный адрес не перезапуская отладку? Про break *addres в Debug dialog->commands->'Run' commands я знаю, но это требует перезапуска отладки. На строку в исходнике поставить можно, а если мне надо поставить на конкретную команду, причем не дожидаясь пока эта команда попадет в окно дизассемблера?
Вопрос четвертый - как его заставить показать в окне дизассемблера кусок с произвольного адреса или как "пролистать" дизассемблированный текст дальше вверх-вниз? Попутный вопрос - можно ли его заставить в этом окне показывать команды по порядку адресов - мне он часто показывает команды с пропусками или в причудливо перемешанном порядке.
Вопрос пятый - (ARM) можно ли как-то сбросить ядро не перезапуская сеанс отладки? Т.е. легким движением перевести его в ARM, SYSTEM, записать в PC 0 и остановить его на нулевом адресе.
Вопрос шестой - как его заставить запомнить, что в окне memory я хочу всегда видеть шестнадцатиричные цифры и не спрашивать об этом после каждого перезапуска отладки? При добавлении адреса в окно он этого дурацкого вопроса не задает.
Вопрос седьмой - где ставится галочка "открывать преспективу Debug при запуске отладки"? Оно спросило когда-то при создании не то проекта, не то воркспейса, я ответил неправильно а теперь не могу найти где это изменить.
Вопрос восьмой - работа с системой контроля версий. Что из каталога .metadata надо хранить в репозитории, а что создается само при старте среды? Хранить весь каталог не подходит - в нем после каждого старта среды создается куча новых файлов. Не хранить его тоже неудобно. Как я понял, в нем живут настройки Debug. Во всяком случае при переносе только проекта (без workspace) на другую машину настройки отладки пропадают (кто это придумал?? ведь в этих настройках указывается конкретный проект и выходной файл, т.е. эти настройки больше привязаны к конкретному проекту а не к workspace.)
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
 |
Ответов
(330 - 344)
|
Dec 14 2010, 09:31
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 8-11-10
Пользователь №: 60 727

|
можно поподробнее? что то не нашел Цитата(sangre @ Dec 14 2010, 12:28)  можно поподробнее? что то не нашел и еще, я так полагаю под linux zylin плагин не нужен? ну и еще для кучи вопрос, когда я завожу на arm gdbserver, он слухает порт, слухает и слухает, как его выгнать из этого состояния? ни на что не реагирует! а перегружать всю платку как то не комфортно
|
|
|
|
|
Dec 15 2010, 02:53
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 8-11-10
Пользователь №: 60 727

|
не, нету такой галки. есть: - non-stop mode - enable reverse debugging at startup - force thread list update on suspend
а в консоли вообще ничего не говорит. даже команды задавать не хочет
|
|
|
|
|
Dec 15 2010, 07:26
|
Знающий
   
Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960

|
У меня эклипс время от времени перестает собирать проект с маловразумитеьной ошибкой, уже начинает доставать. В консоль выдает такое: Код **** Rebuild of configuration Debug for project sourcerey1 ****
**** Internal Builder is used for build **** arm-none-eabi-gcc -I/home/user/workspace/sourcerey1/include -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns=$@.lst -c -fmessage-length=0 -mcpu=arm926ej-s -g3 -gdwarf-2 -osrc/imx-serial.o ../src/imx-serial.c Internal Builder: Cannot run program "/home/user/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-eabi-gcc": Unknown reason Build error occurred, build is stopped Time consumed: 234 ms. Лечится это только перезапуском эклипса, после чего он работает какое-то время а потом снова дурит. Из консоли руками компилятор вызывается без проблем это похоже Internal Builder дурит.
|
|
|
|
|
Dec 15 2010, 08:03
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 8-11-10
Пользователь №: 60 727

|
это в виндах что ли?
|
|
|
|
|
Dec 15 2010, 09:42
|
Знающий
   
Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960

|
Цитата(sangre @ Dec 15 2010, 14:03)  это в виндах что ли? Ubuntu 10.04 (32-bit) Eclipse IDE for C/C++ Developers Version: Helios Service Release 1 Build id: 20100917-0705
|
|
|
|
|
Dec 16 2010, 04:27
|
Знающий
   
Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960

|
Цитата(IgorKossak @ Dec 15 2010, 17:47)  _3m, проапдейтить CDT пробовали? Вам нужен 7.0.1 Стоит Eclipse C/C++ Development Tools Version: 7.0.1.201009241320 Build id: 201009241320
|
|
|
|
|
Jan 12 2011, 22:00
|

Участник

Группа: Участник
Сообщений: 44
Регистрация: 10-03-09
Из: Всея Руси
Пользователь №: 45 907

|
Доброго всем... Пишу сюда из уважения к автору темы Но, вынужден добавить свою ложку дегтя к хваленому Eclipse. Нахожусь в состоянии поиска и тестирования халявных IDEшек для работы с LPC2478 (на замену IAR). Итак недостатки (кроме, разумеется, тяжеловесности и не простой настройки, об этом понаписано уже немало): 1. При импорте проекта с ассемблерными файлами *.s (или просто при открытии), то вместо русских комментов получите крокозябры:
Выход конечно был найден - копипастить через блокнот. Но тут Вас подстерегает засада №2: 2. После сохранения в Eclipse блокнотом уже пользоваться не удастся, т.е. если вдруг понадобится скопипастить кусок кода из Makefile, ххх-rom.ld, Startup.s или из *.h файлов - придется грузить воркспейс с проектом и копировать из окна Eclipse-вского редактора. 3. Мне так и не удалось настроить привычную для меня расцветку синтаксиса typedef-ов если Eclipse не "видит" stdint.h Я это обнаружил когда вместо CodeSoursery подключил IAR-овский тулчейн и Eclipse вдруг засветил синтаксис:
Не поленился, стал разбираться. Так вот Eclipse почему-то видит IAR-овский stdint.h, который х.з. где зарыт, а вот в автоматом подключаемых инклюдах от CodeSoursery не видит:
При попытке открыть Open Declaration (F3) пишет вот что:  Экспортировать свою боевую расцветку синтаксиса в файл для переноса на др. комп. не удастся, а только лишь стиль:
4. Плагин от IAR, как я понял, есть интерфейс Eclipse к установленному IAR-овскому воркбенчу, т.е. тогда это не халява! Кроме того так и не понял как из выходной кучи объектников *.o собрать elf и hex. Попытка запустит постпроцессом GCC-шный -objcopy отказал за несовместимость, сильно надеюсь на помощь сообщества 5. Это проблемы GCC ARM тулчейнов: при спользовании sprintf с форматированием чисел типа такого: if(sprintf(s, "Cont2/10 = %i.%u", cont2/10, cont2%10) > 0) str_to_lcd_xy(s, font10x7, 200, 480 - 6*16, use_fcolor, use_bcolor); else str_to_lcd_xy("Ошибочка2!", font10x7, 200, 480 - 6*16, DKGREY, BLACK); почему-то жалуется, что параметры i и u должны быть unsigned int, а задан тип long int. Как обойти проблему пока не знаю, опять надеюсь на помощь сообщества  Ну и последнее: Ни CodeSoursery Lite ни WinARM ни Yagartu ни kgp сборка уважаемого Klen'а не понимают команду sed в Makefile. Например: %.d: %.c set -e; $(CC) -MM $(addprefix -I,$(SOURCEDIRS)) $< | sed 's/\.o[ :]*/\.o $(subst /,\/,$@) : /' | sed 's/^\(.*\.o\)/$(subst /,\/,$(dir $<))\1/' > $@ Я где-то видел, что это вроде как для редактирования текста, типа заменить одни крокозябры на другие. Мне эта команда попалась в демке от Terra вместе с платой TE-LPC2478LCD56. Разбираться не стал - закомментил эти две строки, в результате компилится и работает, но обида осталась. Всем удачи, жду советов...
Сообщение отредактировал AndOr - Jan 12 2011, 22:08
--------------------
Чужие ошибки ничему не учат, гораздо интереснее наделать своих.
|
|
|
|
|
Jan 13 2011, 05:43
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Цитата(AndOr @ Jan 13 2011, 03:00)  1. При импорте проекта с ассемблерными файлами *.s (или просто при открытии), то вместо русских комментов получите крокозябры Дя начала разберитесь в какой кодировке Вы эти файлы создавали. Затем проверьте, в какой пытаетесь их смотреть. Window->Preferences->General->Workspace->Text file encoding Цитата(AndOr @ Jan 13 2011, 03:00)  Так вот Eclipse почему-то видит IAR-овский stdint.h, который х.з. где зарыт, а вот в автоматом подключаемых инклюдах от CodeSoursery не видит В системной переменной PATH должен быть путь к папке, где лежат arm-none-eabi-... файлы. Project->Properties->C/C++->Discovery Options->Clear discovered entries now: Clear Там же: Compiler invocation command: arm-none-eabi-gcc(или g++) Запустите компиляцию и посмотрите обнаруженные инклуды. Кроме того, в контекстном меню проекта (правой кнопкой по названию проекта) есть пункт Index. Иногда полезно делать Index->Rebuild, Index->Search for unresolved includes Ещё одна полезная вещь: Window->Show View->Include Browser. Перетаскиваете в этот вид файл исходника из вида проекта и смотрите всю иерархию инклудов.
|
|
|
|
|
Jan 13 2011, 07:12
|

Участник

Группа: Участник
Сообщений: 44
Регистрация: 10-03-09
Из: Всея Руси
Пользователь №: 45 907

|
Цитата Дя начала разберитесь в какой кодировке Вы эти файлы создавали. Затем проверьте, в какой пытаетесь их смотреть. Это я пробовал, поверьте, перебрал фсе 7 вариантов. Мне как пользователю пофиг, Cp1251 там было или что то еще, это же просто текст а не Word-овый документ. К стати виндовозный блокнот и CodeBlocks открывают правильно, а Eclipse нет. Я даже пробовал текст с крокозябрами из окна Eclipse скопипастить и распознать с помощью SHTIRLITZ'а - тоже не вышло. Цитата В системной переменной PATH должен быть путь к папке, где лежат arm-none-eabi-... файлы. Project->Properties->C/C++->Discovery Options->Clear discovered entries now: Clear Там же: Compiler invocation command: arm-none-eabi-gcc(или g++) Все так и настроено, причем автоматом при установке плагинов от CodeSourcery и инсталяции тулчейна CodeSourcery Lite. Сейчас попробовал по-переключась профайлы Discovery - без результатно в части расцветки, но код компилится нормально. Может надо тут поковырять?!
Цитата Кроме того, в контекстном меню проекта (правой кнопкой по названию проекта) есть пункт Index. Иногда полезно делать Index->Rebuild, Index->Search for unresolved includes Ещё одна полезная вещь: Window->Show View->Include Browser. Перетаскиваете в этот вид файл исходника из вида проекта и смотрите всю иерархию инклудов. первое не помогло... второе засветило проблему:
последнее тоже хорошая весч - засвечивает проблемные места, спасибо!
однако результата пока нет - синтаксис не расцветает, растет один бамбук Жду дальнейших рекомендаций...
--------------------
Чужие ошибки ничему не учат, гораздо интереснее наделать своих.
|
|
|
|
|
Jan 13 2011, 07:39
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Покажите, что у Вас в папке проекта Includes после дискаверинга получилось. Посмотрите также Project->Properties->C/C++->Paths and Symbols->Includes (по языкам). Второе. Что у Вас за проект? Чистый makefile или Вы каким-то визардом типа arm-eclipse пользовались? Цитата(AndOr @ Jan 13 2011, 12:12)  Может надо тут поковырять?! Не надо, у меня так же.
|
|
|
|
|
Jan 13 2011, 08:27
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (AndOr @ Jan 13 2011, 03:00)  5. Это проблемы GCC ARM тулчейнов: при спользовании sprintf с форматированием чисел типа такого:
if(sprintf(s, "Cont2/10 = %i.%u", cont2/10, cont2%10) > 0) str_to_lcd_xy(s, font10x7, 200, 480 - 6*16, use_fcolor, use_bcolor); else str_to_lcd_xy("Ошибочка2!", font10x7, 200, 480 - 6*16, DKGREY, BLACK);
почему-то жалуется, что параметры i и u должны быть unsigned int, а задан тип long int. Как обойти проблему пока не знаю Как объявлены переменная cont2? Если она (unsigned)long int, то надо писать %il.%ul. И GCC ARM тут не при чем.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jan 13 2011, 08:30
|

Участник

Группа: Участник
Сообщений: 44
Регистрация: 10-03-09
Из: Всея Руси
Пользователь №: 45 907

|
После дискаверинга происходит исчезновение инклюдов из дерева проекта. Перепробовал разные варианты этого пункта, типа Discovery Profiles Scope -> Configuration Wide / Per Language.  После Clean и Build в дереве появляются инклюды:
В Path and symbols все пути к CodeSourcery прописаны и символы в таблице наблюдаются. Проект - это GCC демка скачанная с сайта Terraelectronica, там стартап рамконфиг мейкфайл и т.д. присутствовало, я только sed закоментил. Импортировал в Eclipse в соответствии с рекомендациями от Yagartu. Результат - компилится и на плате работает, т.е. точка за пальцем бегает и след на ЖКД оставляет... Что-бы не терять время, я уже развил эту же самую демку, но под IAR-ом и скоро упрусь в кикстартовое ограничение... срочно нужна рабочая халява... Цитата Как объявлены переменная cont2? Если она (unsigned)long int, то надо писать %il.%ul. И GCC ARM тут не при чем. int main() { uint32_t cont1, cont2; uint16_t use_fcolor = GREEN; Тоже самое в IAR не вызывает недоразумений. В stdin.h нашел следующее: CODE #if __have_long32 typedef signed long int32_t; typedef unsigned long uint32_t; #define __int32_t_defined 1 #elif __STDINT_EXP(INT_MAX) == 0x7fffffffL typedef signed int int32_t; typedef unsigned int uint32_t; #define __int32_t_defined 1 #elif __STDINT_EXP(SHRT_MAX) == 0x7fffffffL typedef signed short int32_t; typedef unsigned short uint32_t; #define __int32_t_defined 1 #elif __STDINT_EXP(SCHAR_MAX) == 0x7fffffffL typedef signed char int32_t; typedef unsigned char uint32_t; #define __int32_t_defined 1 #endif
т.е. мне нужно для совместимости _STDINT_EXP(INT_MAX) == 0x7fffffffL где-то указать ???
Сообщение отредактировал AndOr - Jan 13 2011, 08:39
--------------------
Чужие ошибки ничему не учат, гораздо интереснее наделать своих.
|
|
|
|
|
  |
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|