Отладка Лучших практик для STL/повышения C++ с gdb

<script type="text/javascript">

    var UsersList = @Html.Raw(Json.Encode(Model.AllUsers))

    for (var i = 0; i < UsersList.length; i++) {
        alert(UsersList[i].Id);
        alert(UsersList[i].Name);

    } 
 </script>
46
задан 3 revs 12 January 2009 в 09:37
поделиться

3 ответа

Возможно, не вид "подсказки", которую Вы искали, но я должен сказать что мой опыт после нескольких лет перемещения от C++ & STL к C++ & повышение & STL - то, что я теперь трачу партия меньше времени в GDB, чем я привык для. Я подавил это ко многим вещам:

  • интеллектуальные указатели повышения (особенно "совместно использованный указатель" и контейнеры указателя, когда производительность необходима). Я не могу помнить прошлый раз, когда я должен был записать, что явное удаляет (удалите, "goto" C++, по моему скромному мнению). Там идет много времени GDB, разыскивая недопустимые и протекающие указатели.
  • повышение полно доказанного кода для вещей, из которых Вы, вероятно, взломали бы вместе нижнюю версию иначе. например, boost::bimap является большим для общего шаблона LRU кэширующаяся логика. Там идет другая "куча" времени GDB.
  • Принятие unittesting. boost::test АВТОМАТИЧЕСКИЕ макросы означают, что это - абсолютный пустяк для установки тестовых сценариев ( легче, чем CppUnit). Это ловит много материала задолго до того, как он встроен во что-либо, к чему необходимо было бы присоединить отладчик.
  • Связанный с этим, инструменты как boost::bind облегчают дизайну для теста. например, алгоритмы могут быть более универсальными и менее связаны с типами, на которые они воздействуют; это делает включение их в тестовые контейнеры/прокси/фиктивные объекты и т.д. легче (это и то, что воздействие шаблону-tasticness повышения поощрит Вас "сметь обрабатывать по шаблону" вещи, которые Вы никогда не рассматривали бы прежде, приводя к подобным преимуществам тестирования).
  • boost::array. "C выстраивают" производительность, с проверкой диапазона в сборках отладки.
  • повышение полно большого кода, который Вы не можете не изучить от [1 111]
15
ответ дан 2 revs, 2 users 83% 8 November 2019 в 00:30
поделиться

Я думаю, самое легкое и большая часть опции должны использовать вход (хорошо, я на самом деле использую печать отладки, но я думаю, что это не точка). Самое большое преимущество состоит в том, что можно осмотреть любой тип данных, много раз на выполнение программы и затем искать его с текстовым редактором для поиска интересных данных. Обратите внимание, что это очень быстро. Недостаток очевиден, необходимо предварительно выбрать данные, которые Вы хотите регистрировать и места, где зарегистрироваться. Однако это не такая серьезная проблема, потому что Вы обычно знаете, где в коде плохие вещи происходят (и в противном случае Вы просто добавляете проверки работоспособности тут и там и затем, Вы будете знать).

библиотеки Checked/debug хороши, но они лучше как инструмент тестирования (например, выполните его и посмотрите, делаю ли я что-то не так), и не как хороший в отладке конкретного вопроса. Они не могут обнаружить дефект в пользовательском коде.

Иначе, я использую простой GDB. Не то, чтобы плохо, поскольку это звучит, хотя это могло бы быть, если Вы боитесь" print x" печать экранного из спама. Но, если у Вас есть отладочная информация, вещи как печать члена std::vector работа и если что-нибудь перестало работать, все еще можно осмотреть необработанную память эти x команда. Но если я знаю то, что я ищу, я использую опцию 1 - вход.

Примечание, что "трудный осмотреть" структуры не только STL/повышение, но также и из других библиотек, как Qt/KDE.

3
ответ дан jpalecek 8 November 2019 в 00:30
поделиться
5
ответ дан 2 revs 8 November 2019 в 00:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: