Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Embarcadero 2010 Builder. Баги IDE.


Автор: ZVano 12.3.2011, 10:34
Предлагю сваливать сюда баги, обнаруженые при работе с IDE.




1. Автофроматирование кода (CTRL+D)
1.1 После форматирования курсор смещается фиг знает куда. Начинаеш писать код, а он пишется в произвольном месте модуля.
1.2 Ломает форматирование, если нет закрывающей скобки ")"
1.3 ЖУТЬ. Ломает код, если при форматировании нет парной двойной кавычки.
Код

//Было
myStr = "Петя;
if (myVar == "Вася")

//станет
myStr = " Петя;
if (myVar == " Вася ")

И попробуй потом все эти места найти в большом коде.


2. При отладке показываются неверные значения struct-переменной в Local Variables и WatchList.
Скриншот прилеплен.


Автор: oldcode 13.3.2011, 22:51
нечего на зеркало пенять, коль рожа крива - может, от тебе еще и код сочинять будет ?

Автор: _Dimon_ 14.3.2011, 00:17
Цитата(oldcode @ 13.3.2011,  22:51)
нечего на зеркало пенять, коль рожа крива - может, от тебе еще и код сочинять будет ?

 smile Правильно, а то так и до холивара дойдет smile 

Автор: ZVano 14.3.2011, 12:15
Цитата(oldcode @  13.3.2011,  22:51 Найти цитируемый пост)
нечего на зеркало пенять, коль рожа крива - может, от тебе еще и код сочинять будет

Цитата(_Dimon_ @  14.3.2011,  00:17 Найти цитируемый пост)
Правильно, а то так и до холивара дойдет


Моя цель - собрать перечень багов, с которыми при ходится сталкиваться.
Насчет ломания при  автоформатировании кода, пусть будет не баг, но это явная недоработка.
Парсер сначала должен проверять верен ли синтаксически код, и если верен - то форматировать его.
Например, в Visual Studio такой проблеммы нет.

На этом предлагаю закрыть флуд.
Нашли баг и есть желание поделиться с общественностью - пишем, иначе МОЛЧА ПРОХОДИМ МИМО и не засираем тему.

Добавлено через 6 минут и 43 секунды
Баг.
При попытке переименовать переменную во всем проекте <CTRL+SHIFT+E> IDE иногда выводи сообщение следущего содержания.

Автор: Лена 14.3.2011, 14:25
Конечно не по теме, т.к. речь идет о версии 2010 но на всякий случай отпишу: мне не удалось воспроизвести эти проблемы в новой С++ Builder XE: http://www.embarcadero.com/products/cbuilder

Автор: ZVano 15.3.2011, 13:07
Цитата(Лена @  14.3.2011,  14:25 Найти цитируемый пост)
мне не удалось воспроизвести эти проблемы в новой С++ Builder XE

Причины отсутсвия багов у Вас могут быть самыми различными(багов нет в XE; баги есть, но не сошлись звезды чтобы они повторились; описаннык баги существуют только у меня; и т.д. )



Новый баг.
Иногда возникает исключение если открыто 3 или более страниц, при попытке перетянуть какую либо(изменить порядок) .
Скрин приложен

Автор: mrbrooks 16.3.2011, 16:43
Цитата(ZVano @  14.3.2011,  12:15 Найти цитируемый пост)
Моя цель - собрать перечень багов, с которыми при ходится сталкиваться.

Проблема в том камрад, что Билдер это сам один большой баг smile

Проверено временем.

Автор: ZVano 11.7.2011, 11:52
Цитата(mrbrooks @  16.3.2011,  16:43 Найти цитируемый пост)
Проблема в том камрад, что Билдер это сам один большой баг

С удовольствием пересел бы на C# (MS Visual Studio; SharpDevelop; MonoDevelop), но начальство не пущает :(

Новый баг. При редактировании кода автоподстановщик задумался... и поломал мне код.
Попытка отменить изменения завесила IDE.
Скрин "художества" IDE прилагаю.

Автор: Dem_max 11.7.2011, 12:22
Цитата

и поломал мне код.

Ctrl+Z - спасет отца русской демократии  smile 

Автор: ZVano 11.7.2011, 12:50
Цитата(Dem_max @  11.7.2011,  12:22 Найти цитируемый пост)
Ctrl+Z - спасет отца русской демократии

Вот, вот. Он и завесил мне Builder.  smile 

Автор: Bodro 26.6.2012, 18:27
Баг подробно описан http://forum.vingrad.ru/forum/topic-353482/anchor-entry2500501/0.html. Обнаружен в Embarcadero Builder 2010. Так же воспроизведён в Builder 5.0.

Суть проблемы: Access Violation при инициализации параметров по-умолчанию у методов с помощью статических констант класса, объявленного с директивой __declspec(package).

Пути обхода проблемы:
  • не использовать инициализацию аргументов конструктора значениями по-умолчанию статическими переменными;
  • без необходимости не использовать PACKAGE (или __declspec(package), что одно и то же по-сути);
  • инициализировать значения статических констант сразу (не факт что на всех компиляторах будет работать);
  • передавать значения по ссылке.
Минимальный код, воспроизводящий проблему:
Код

#pragma hdrstop

#define PACKAGE __declspec(package)

class PACKAGE TestClass { // Вариант №1. Не работает (AV)
//class TestClass { // Вариант №2. Работает
  private:
    static const int defaultValue;
  public:
    explicit TestClass(const int value = TestClass::defaultValue) throw();
};

const int TestClass::defaultValue = 0x00FF00;

TestClass::TestClass(const int value) throw() {
}

#pragma argsused

int main() {
  new TestClass; // Access Violation reading of address 0x0000FF00
  return 0;
}

Вариант №1:
Код

mov       edx,dword ptr [@@TestClass@defaultValue]
push      dword ptr [edx]

Вариант №2:
Код

push      dword ptr [@@TestClass@defaultValue]


Возможности использования: подмена адреса переменных (спрятанные указатели).

Баг был обнаружен: 5 июня 2012 года (у Романа программа упала с Access Violation по неизвестной причине).

Выявлен и формализован: 25 июня 2012 года (причина ошибки выявлена и написан код, воспроизводящий проблему).

Баг нашли: Ugly и Bodro, впервые с проблемой столкнулся Роман.

Мы не претендуем на оригинальное открытие бага, просто я не нашёл описание этого бага в Интернете и столкнулся с ним впервые.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)