int i = 2; // что вы используете в качестве одноразовой строки, когда вам просто нужно что-то для точки останова? - PullRequest
8 голосов
/ 13 марта 2009

Всякий раз, когда я хочу, чтобы точка останова где-то, где нет ничего, что могло бы сломаться просто (внутри цикла и т. Д.), Я склонен автоматически опускать:

int i = 2;

Мне любопытно, что используют другие.

Ответы [ 22 ]

0 голосов
/ 26 мая 2009

Давайте рассмотрим желаемые свойства. Код должен

  1. быть в состоянии точки останова
  2. четко объясните, что это только для точек останова.
  3. не будет сразу виден пользователю, который его запускает.
  4. не влияет на поведение во время выполнения (включая время выполнения).

В зависимости от того, какой оптимизатор вы используете, наилучший код точки останова может отличаться.

Я не очень люблю добавлять сборки. Он не переносимый и портит анализ окружающего кода компилятором. Даже если это не работает, это может повлиять на производительность.

Печать видна пользователю. Когда вы разговариваете с отладчиком, вы чувствуете, что делаете что-то не так. Я слышал истории о том, как ошибки в потоке исчезали, когда код запускался в отладчике (и именно так отладчики получили свое имя: D). Я бы сказал, что этого следует избегать, и проблемы, которые он решает, должны решаться с помощью лучшего отладчика (возможно, простого в использовании обезьяньего патчера?).

Я думаю, что лучший код - bool breakpoint_dummy = /* the value means nothing */ false;. Он вписывается в 80 столбцов, объясняет, что это такое, и если ваш оптимизирующий компилятор не может справиться с неиспользуемыми переменными, он (надеюсь?) Скомпилируется в xorl eax, eax, быстрый и маленький фрагмент кода (я бы предположил ). В общем, нули дешевле, чем; -)

0 голосов
/ 13 марта 2009

String foo = "bar";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...