вторник, 21 февраля 2012 г.

Второй - пошёл! Add support for C++11 range-based 'for' loops

Второй коммит (поддержка range-based for loops) лёг в апстрим QtC.

C++: Add support for C++11 range-based 'for' loops:

In qt-creator/qt-creator.git:master


А вот с лямбдами будет сложнее. Основной косяк в том, что автоформатирование для них не работает.

10 комментариев:

  1. Кстати, не знаю связано ли это с вашими коммитами, но при попытках отладки когда содержащего лямбды и range for qtcreator регулярно говорит, что gdb process crashed. Причем если при заходе в какую-то функцию он падает, то падает стабильно. Причем видно, что остановился на breakpoint, видно, что начал выводить local watch - и через мгновение crash. При этом gdb из консоли и qtcreator 2.4.0 отлаживает нормально. Ощущение, что идут какие-то дополнительные команды в gdb, которые его и роняют. Вы вроде по коду лазили, есть мысли из-за чего это может быть и куда копать?

    ОтветитьУдалить
    Ответы
    1. Хм... Мыслей куда копать - пока нету. Но посмотреть - посмотрю. Тут ещё надо смотреть на python-скрипты, которые занимаются визуализацией переменных. Возможно, они что-то не так обрабатывают. Не исключаю, что вот здесь:
      http://forum.sources.ru/index.php?showtopic=337722&view=findpost&p=3084668
      проблема из той же серии.

      Удалить
    2. Про python-скрипты была первая мысль, пробовал отключать в настройках - так же падает. Происходит это кстати все под убунтой 10.04 с нативным gdb, в котором поддержка python есть.

      Удалить
    3. Значит, надо будет покопаться в исходниках cpplibrary. Кстати, вопрос. А если for (a : cont) заменить на аналогичный родной, Qt'шный foreach(a, cont) - что будет?

      Удалить
    4. Кстати, минут 5 назад обнаружил, что иногда падает даже в cpp-файлых, в которых никаких лямбд, auto и for нет, так что похоже проблема в чем-то другом. И похоже дело не python-скриптах, потому что там, где отладчик не падает - содержимое STL-контейнеров в watch показывается в нормально. Но разобраться все равно было бы интересно.

      Удалить
    5. У меня cdb время от времени тупит, видимо, похожим образом (с поправкой на ветер).

      Удалить
    6. Ну, из под нового qtcreator gdb падает достаточно часто, чтобы проект невозможно было отлаживать. Т.е. в 80% кода. Посмотрел исходники - там какая-то печаль. Сообщение о том, что gdb crashed выскакивает из обработчика выхода из процесса gdb, т.е. по call stack поймать что вызвало такую реакцию не получится. Покопался немного на багтрекере - бага этого не нашел, но увидел, что некоторые прилагают логи gdb. Как их вытащить - пока не нашел, как найду - думаю все должно проясниться :)

      Удалить
    7. Вместе мы сделаем QtC лучше. :) Судя по логам gitorous'а последнее время во взаимодействии QtC и отладчика было много фиксов, может какой-то из них и зааффектил таким странным образом...

      Удалить
    8. Еще немного поковырялся, и открыл баг. Если интересно:
      https://bugreports.qt-project.org/browse/QTCREATORBUG-7003

      Удалить
    9. Нда, информации в багрепорте не густо. :)

      Удалить