/code/ Debug Server. Вывод отладочной информации из EXE, DLL

Раздел посвящен программированию с использованием Power Basic.
Dark Machine
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 26.05.2004 (Ср) 13:12

/code/ Debug Server. Вывод отладочной информации из EXE, DLL

Сообщение Dark Machine » 21.12.2006 (Чт) 14:34

Идея очень древняя: Отладка приложений с возможностью вывода отладочной информации (ОИ) из EXE, DLL и других модулей.
Есть много вариантов вывода ОИ.
Наиболее часто используемый вариант - это написать маленькую процедуру вывода прямо внутри программы. Задача отладки может усложниться, если программа внезапно вылетит (а за ним и закроется само окошко) или же может возникнуть необходимость отладить DLL файл.
Конечно, можно использовать ф-цию OutputDebugString и программу DbgView, но я решил написать свою, со своими функциями.

Проект состоит из двух частей.
DebugServer.Exe
DebugClient.Dll

Сервер играет роль приемника сообщений от клиента, а клиент получает эти сообщения из программы. Таким образом, удалось сделать вариант универсального приемника сообщений.

Сервером можно управлять двумя способами:
1. Через элементы управления GUI сервера
2. Через програмный интерфейс.

Клиент можно использовать практически из любых языков програмирования, которые могут вызывать DLL процедуры.

Перечень возможностей.
1. Элементы управления GUI сервера.
1.1. Установка/Отмена окна поверх всех. (On Top)
1.2. Зафиксировать положение окна. (Lock)
1.3. Вкл/Выкл автоскроллинга. (Scroll)
1.4. Вкл/Выкл времени вывода информации. (Timer)
1.5. Очистить окно. (Clear)
1.6. Сохранить в файле. (Save To ...)

2. Програмный интерфейс
2.0. Вывод строки
2.1. Вывод нескольких строк (несколько параметров)
2.2. Все ф-ции GUI сервера.
2.3. Изменить размер шрифта
2.4. Изменить позицию окна

Описание команд:
DEBUG sStr - Выводит строку и добавляет возврат каретки
DEBUGV vPar1, vPar2, Vpar3,.... - Выводит переменное количество строк, чисел (любой тип). Маск. кол-во = 8
DEBUGSETCMD lCmd [, sValue] - Програмное управление сервером

Использование и установка.
- Рекомендую копировать сервер и клиент в папку с установленным компилятором. Так легче будет запустить сам сервер.
- Скопировать DebugConst.ini в папку WinApi
- Запустить Debugserver.exe

Простой пример:
Код: Выделить всё
#COMPILE EXE
#INCLUDE "DebugConst.inc"

FUNCTION PBMAIN
       DEBUG "Hello DebugServer!"
END FUNCTION


Архив содержит исходники и скомпилированные слиент, сервер и демонстрационная программа.

Проект вначале был написан используя 7-ую версию компилятора.
Позднее было сделано несколько изменений и был скомпилирован версией 8.03.
Вложения
Debugserver.jpg
Скриншот работы сервера на фоне PBIDE
Debugserver.jpg (163.4 Кб) Просмотров: 1642
DebugServer.zip
(55.85 Кб) Скачиваний: 145
Последний раз редактировалось Dark Machine 21.12.2006 (Чт) 15:14, всего редактировалось 1 раз.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 21.12.2006 (Чт) 15:10

Прикольный пример! Спасибо! Думаю пригодиться :D
Последний раз редактировалось jangle 21.12.2006 (Чт) 15:18, всего редактировалось 1 раз.

Dark Machine
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 26.05.2004 (Ср) 13:12

Сообщение Dark Machine » 21.12.2006 (Чт) 15:17

Вовремя приметил!

Свои утилиты написанные на РВ я поместил в папку \\PBWIN80\TOOLS
и добавил путь в переменную PATH. Наверно старый вариант остался в инклюде.

Теперь всё исправлено.

Dark Machine
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 26.05.2004 (Ср) 13:12

Сообщение Dark Machine » 21.12.2006 (Чт) 15:21

Иногда я его использую для вывода соодщений из VB и VC6.
Особенно пригодился при изучении работы некоторых С-ных примеров.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 21.12.2006 (Чт) 15:28

Кстати, тоже самое можно сделать из самого приложения, открыть консольное окно и писать в него логи.


Вернуться в Power Basic

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList