16+
Понедельник
18 ноября
Вход |Карта сайта |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

Средства и методы разработки

 
Новая темаПравила РегистрацияСтатистика Архив
Вернуться в конференциюТопик полностью
fk0  (08.11.2019 20:14, ссылка, просмотров: 115)
Использование gdb для распечатки значений в контрольных точках. Демонстрация концепции по ссылке. 
См. внимательно командную строку. Идея в том, что можно не делать некий "логгер" и не добавлять его в рантайм. Можно расставить в исходном коде некие аннотации, на основании которых отладчик получит возможность расставить в нужных местах точки останова и выполнить в этих точках заданные программистом действия (распечатать значения переменных). Перекомпиляция при этом не требуется, как и модификация кода программы. Что очень хотелось бы, но непонятно как реализовать: 1) распечатка таймштампа в каждой строке (gdb умеет в каких-то непонятных случаях его печатать, но видимо в данном случае никак) без модификации кода (с нацелом на использование в embedded, где функций ОС может не быть); 2) распечатка переменных оптимизированных компилятором: из-за этого нужно добавлять -O1 и перекомпилировать, потенциально может быть решено через макросы изменяющие код (присваивающие переменные другим, временным, но для чего так же нужен typeof() от gcc); 3) распечатка имени функции (класса) -- видимо, невозможно без модификации кода; 4) ассерты проверяемые на стороне отладчика (break __FILE__:__LINE__ if confition...) -- вроде всё просто; 5) сохранение значений переменных, захваченных в определённой точке программы, в отдельный файл (сейчас, потенциально, их можно достать из вывода gdb, но при обработке аудио-файлов, например, это гигантские объёмы данных); 6) заданные пользователем функции распечатки сложных классов (структур), заданные на стороне gdb -- непонятно как сделать без инжекции кода в момент исполнения (опять же можно парсить вывод gdb...) Может можно как-то использовать gdb с питоном? Или таймштампы проставить уже на выводе gdb (перенаправленном в свою программу). Последнее кажется осмысленной идеей. Там же можно вывод gdb разделить на разные потоки, визуализировать и т.п.
[ZX]
 [x][x][x][x][x][x] [x][x][x][x][x][x][x][x]

Тема выделяется по переводу строки или автоматом

 

Имя


Регистрация позволит вам редактировать и перемещать ваши сообщения и прикреплять к ним файлы.
 
Символы: á é ó ú ý « »
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7528 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXIX