Отступ (и обтекание) строк отладки, выводимых printf () / fprintf () в C-программе - PullRequest
0 голосов
/ 08 января 2011

Я использую вывод отладки, используя printf() в своих функциях, но вывод идет на консоль, начиная с 1-го столбца. Я хотел бы различать уровень вложенности функций, делая отступы их выходных строк каждый раз, когда я погружаюсь в функцию (это легко реализуется с помощью переменной static int indentlevel;, которая увеличивается в начале функции, используемой в качестве заполнителя пространства -счет и уменьшается в конце). Но недостатком является то, что как только выходная строка становится слишком длинной для переноса по краю консоли, обернутые части строк начинаются с колонки 1 консоли. Должен ли я позаботиться об этом, поскольку после перенаправления вывода в файл строки, скажем, имеют длину в одну строку, а ширина строк зависит только от настроек средства просмотра текстового файла?

Ответы [ 2 ]

1 голос
/ 08 января 2011

Если вы используете gcc, вы можете использовать опцию компилятора -finstrument-functions, чтобы вызывать функцию инструментария при входе и выходе каждой функции.

      void __cyg_profile_func_enter (void *this_fn,
                                     void *call_site);
      void __cyg_profile_func_exit  (void *this_fn,
                                     void *call_site);

Вы можете определить эти функции дляотслеживать уровень вложенности.

ПРЕДУПРЕЖДЕНИЕ: Я на самом деле не пробовал это (еще одна из тех вещей, с которыми я не совсем дошел до!).Один очевидный GOTHCA - не прибегайте к инструментальным функциям !!!

http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Code-Gen-Options.html

0 голосов
/ 08 января 2011

Поскольку вы пишете в текстовый файл, вам не следует заботиться о переносе строк и позволить текстовому зрителю принять решение.

Подход, который я использовал, - писать в HTML, а затем в браузере.заботится о переносе строк.Единственный недостаток в том, что вам нужно следить за тем, чтобы теги open / end были правильно сбалансированы, но вам также нужно это для вашей переменной indentlevel.

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