Читать книгу 📗 "Linux программирование в примерах - Роббинс Арнольд"
6$ <b>factorial -#t 1 2 3</b>/* Вывести трассировку вызовов функций, обратите внимание на вложенность */| >factorial| <factorial1 /* Обычный вывод в stdout */| >factorial| | >factorial| | <factorial /* Вывод отладки в stderr */| <factorial2| >factorial| | >factorial| | | >factorial| | | <factorial| | <factorial| <factorial6<?func?$ <b>factorial -#d 1 2</b>/* Показать отладочные сообщения DBUG_PRINT() */?func?: args: argv[2] = 1factorial: find: find 1 factorialfactorial: result: result is 11?func?: args: argv[3] = 2factorial: find: find 2 factorialfactorial: find: find 1 factorialfactorial: result: result is 1factorial: result: result is 22Опция
-#dbugDBUG_PUSH()-#DBUG_PUSH()getopt()optargУправляющая строка состоит из набора опций и аргументов. Каждая группа опций и аргументов отделяется от других символом двоеточия. Каждая опция представлена одной буквой, а аргументы этой опции отделяются от нее запятыми. Например:
$ myprog -#d,mem,ipc:f,check_salary,check_start_date -f infile -o outfileОпция
dDBUG_PRINT()memipcDBUG_PRINT()fcheck_salary()check_start_date()Следующий список опций и аргументов воспроизведен из руководства библиотеки
dbugd [,ключевые слова]Разрешает вывод от макросов с указанными ключевыми словами. Пустой список ключевых слов предполагает, что выбраны все ключевые слова.
FПомечает каждую строку вывода отладки именем исходного файла, содержащего макрос, осуществляющий вывод.
iИдентифицирует процесс, выводящий каждую отладочную или трассировочную строку номером ID для этого процесса.
LПомечает каждую строку вывода отладчика номером строки исходного файла, в котором находится осуществляющий вывод макрос.
о[,файл]Перенаправляет поток вывода отладчика в указанный файл. Потоком вывода по умолчанию является
stderrstdoutt[,N]Включает трассировку потока управления функций. Максимальная глубина вложения определяется
NДля завершения нашего обсуждения вот остальные макросы, определенные библиотекой
dbugDBUG_EXECUTE(строка, код)Этот макрос похож на
DBUG_PRINT()dDBUG_EXECUTE("abort", abort());DBUG_FILEЭто значение типа
FILE*<stdio.h>DBUG_LONGJMP(jmp_buf env, int val)Этот макрос заключает в оболочку вызов
longjmp()dbugDBUG_POP()Этот макрос выталкивает из стека один уровень сохраненного состояния отладки, созданный макросом
DBUG_PUSH()DBUG_SETJMP(jmp_buf env)Этот макрос заключает в оболочку вызов
setjmp()dbugВ другом воплощении, в первой начинающей компании, для которой мы работали [177], мы использовали в своем продукте библиотеку
dbug-DDBUGЧтобы извлечь максимальную выгоду от библиотеки
dbugawk