ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
13 июля
470826
ig_z (05.12.2013 15:40, просмотров: 3263) 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 на данном сообщении. И что то типа выводов: В результате имеем возможность представлять дебажный вывод в виде древовидной структуры, что облегчает анализ по сравнению с линейной структурой. Возможность сворачивать/разворачивать ветви позволяет оперировать бОльшим объемом трассировочной информации. Возможность быстрого позиционирования трассировочного сообщения в коде позволяет ускорить анализ кода. И в заключение стандартная просьба: если кто либо встречал подобные проекты, доведенные до возможности использования в повседневной работе, не сочтите за труд дайте ссылки.