ig_z (05.12.2013 15:40, просмотров: 3511) Evgeny_CD
2 SciFi. Возможно вам будет интересено взглянуть на результаты одной "исследовательской" работы. Эта работа в определенной мере имеет отношение к Source Insight. http://caxapa.ru/upload/files/bcc99c2c681278e3a9cf30f648c1b1a7249422d1/tt_test.zip
На данный момент этот исследовательский проект закрыт и пока еще не все детали проекта выветрились из головы, я решил продемонстрировать небольшую демку.
Итак сразу ключевые слова:
отладочная трассировка, тестовая трассировка,
динамический анализ кода,
Source Insight,
статический анализ кода,
Небольшое вступление:
Предположим у нас есть некий проект. Проект компилится и как то работает, но имеет некоторые баги.
Предположим, что это некий коммуникационный проект и отладчиком в нем ходить затруднительно или вообще невозможно.
В этом случае классический вариант отладки глубоко реактивной системы - использовать трассировочный выхлоп из девайса.
В наипростейшем случае этот подход выливается в тривиальный принтф в какой нибудь терминал.
Этот подход имеет определенные недостатки, наиболее неприятные (с моей точки зрения):
1) неформатированной или примитивно форматированной информации на выходе.
2) неловкое движение и на выходе может оказаться невменяемый объем информации. Для управления дебажным выводом приходится (рас)коментарить или добавлять удалять исходники и перекомпиливать их снова и снова.
3) при большом кол-ве исходников и/или дебажных сообщений тратится существенное время на сопоставление дебажного выхлопа и соответствующей позиции в файле.
В ходе дискуссий с коллегами, я обнаружил, что SI дает возможность решить задачу пункта №3, тем самым добавив к измерениям "откуда могли вызвать" и "кого вызывали" возможность навигации
"как вызывали (во времени) в данном тесте".
Оценить вживую можно на примере небольшой демки. Архив tt_test.zip залит в файлообменник.
Содержимое:
-TT_Client.exe Трейс тул клиент для рассматривания трассировочного выхлопа от таргета.
-settings.ini Сетинги для TT_Client.exe
-ДЛЛ для работы TT_Client.exe.
icuin51.dll
icudt51.dll
icuuc51.dll
libgcc_s_dw2-1.dll
libstdc++-6.dll
libwinpthread-1.dll
Qt5Core.dll
Qt5Gui.dll
Qt5SerialPort.dll
Qt5Widgets.dll
-usbcore.c, tt_test.c
Часть проекта USB Audio Device, построенного на базе хорошо известого юсб стека от Кейла
-Keil_USB_ADC_Ploytec.ttt
трассировочный выхлоп USB enumeration для аудио девайса. Со стороны хоста используется драйвер плойтек.
-USBAudio_compact. Проект SourceInsight.
USBAudio_compact.CF3
USBAudio_compact.IAB
USBAudio_compact.IAD
USBAudio_compact.IMB
USBAudio_compact.IMD
USBAudio_compact.PFI
USBAudio_compact.PO
USBAudio_compact.PR
USBAudio_compact.PRI
USBAudio_compact.PS
USBAudio_compact.WK3
После первого пуска необходимо настроить ТТ_С.
1) Меню - SI - Set exec установить путь к SI. Это связанно с тем, что SI может быть проинсталирован в не дефолтную папку
2) Меню - SI - Set proj установить путь к проекту USBAudio_compact.PR. Это связанно с тем, что SI сохраняет абсолютные пути к проектным файлам
3)Теперь можно запустить SI с проектом (Если SI не был запущен вручную): Меню - SI - Run
4)После этого можно загрузить файл трассы (если файл не загрузился автоматом) Keil_USB_ADC_Ploytec.ttt Меню - File - Open
Теперь можно анализировать выхлоп в виде tree view. Ветви дерева - это скопы, которые могут быть свернуты/развернуты в режиме анализа (т.е. в данный момент)
Листья дерева - это сообщения.
Клик по скопу будет позиционировать SI на начале данного скопа.
Цтрл + клик по скопу будет позиционировать SI в конце данного скопа.
Клик по сообщению будет позиционировать SI на данном сообщении.
И что то типа выводов:
В результате имеем возможность представлять дебажный вывод в виде древовидной структуры, что облегчает анализ по сравнению с линейной структурой.
Возможность сворачивать/разворачивать ветви позволяет оперировать бОльшим объемом трассировочной информации.
Возможность быстрого позиционирования трассировочного сообщения в коде позволяет ускорить анализ кода.
И в заключение стандартная просьба:
если кто либо встречал подобные проекты, доведенные до возможности использования в повседневной работе, не сочтите за труд дайте ссылки.