Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21287 / 8312 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30

Окно с отладочной печатью

25.04.2009, 14:34. Показов 4898. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочется сделать трассировку работы программы через отладочные печати

Сначала опишу то, как бы я это сделал в консольной программе. Сделал бы себе интерфейс Debug с прототипом printf'а, а внутри него под опцией через vfprintf слил бы всё в файл (или вывалил на экран). Таким образом вся трасса работы программы перед глазами и если она фатально умрёт, то трассу можно проанализировать

Хочется сделать такое в окошечном приложении. Т.е. создать отдельное окошко и интерфейс аналогичный вышенаписанному Debug. А потому вопросы:
- Какой элемент использовать, куда вся печать будет сваливаться? Т.е. фактически в отладочном окне мы имеем текстовый редактор. При этом нужно, чтобы содержимое окна можно было бы скопировать в буффер (условно говоря, отдаю пользователю программу, а он в процессе работы сообщает мне об ошибках, которые он наблюл визульно и при этом присылает всю трассу из окна). Хотелось бы, чтобы можно было наваять интерфейс, аналогичный printf'у, который внутри себя уже использует va_list, который можно было бы куда-нибудь подать. Но на крайний случай можно обойтись и без этого
- Необходимость второго порядка. Нужно сохранить это окно на тот случай, если задача фатально кердыкнется (обращение по кривому указателю, появление эксепшна, который нигде не отловился). Т.е. фактически написать некий обработчик фатальной ситуации, который создаст окошко с текстом, что программе кердык, а потому скопируйте содержимое отладочного окна, потому что сейчас программа умрёт
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.04.2009, 14:34
Ответы с готовыми решениями:

Создать окно произвольного размера, скрыть окно, показать окно, удалить окно.
Создать окно произвольного размера, скрыть окно, показать окно, удалить окно. Для создания окна необходимо произвести следующие...

Проект отладочной платы
http://cs9575.vkontakte.ru/u101444220/125315991/x_188299b1.jpg процесс сборки ...

Выбор отладочной платы
Всем привет. Решил глубоко вникнуть в МК и захотел себе приобрести отладочную плату, но проблема в том что по деньгам ограничен, но и...

30
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
30.04.2009, 00:10
Студворк — интернет-сервис помощи студентам
C++
1
2
3
//вниз Memo до упора
{
    SendMessage(MemoEnm->Handle, EM_LINESCROLL, 0, MemoEnm->Lines->Count);
Прокрутка к последней линии.

SendMessage() - неотлагаемое сообщение.

Добавлено через 2 минуты 6 секунд
EM_LINESCROLL <==> 182;
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21287 / 8312 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
30.04.2009, 17:22  [ТС]
Мде... как всё сложно. Попробуем

Добавлено через 6 часов 24 минуты 56 секунд
Однако работает
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21287 / 8312 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
03.05.2009, 14:49  [ТС]
Вопрос далее.
У меня есть основное окно и несколько доплнительных (типа отладочного)
Какое событие основного окна соотвествует тому, что все окна и элементы уже построены и это событие вызовется единственный раз на всю программу?

Конструктор - не то (ещё не все формы построены), OnActivate - в моём случае оказалось, что StringGrid ещё не проинициализирован. OnShow вызывается постоянно
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
08.05.2009, 14:35
Evg,



Цитата Сообщение от Evg Посмотреть сообщение
Какое событие
Вложения
Тип файла: rar EndBuildingForms.rar (19.8 Кб, 10 просмотров)
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21287 / 8312 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
08.05.2009, 15:51  [ТС]
mirso, и так какой ответ на вопрос?
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
08.05.2009, 16:57
Evg!

Ответ - динамический таймер!
С оповещением.
TTrayIcon - визуально!(Y/N - TrayIcon1->IconIndex = 0 or 1 TImageList)

и

C++
1
2
3
4
if(SecondaryForm && 
       AdditionalForm->yes )
     {ShowMessage("Все построено, таймер удален");//наглядно
     MessageBeep(MB_OK);}//сигнал
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21287 / 8312 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
08.05.2009, 17:27  [ТС]
Э... ну это всё-таки вариант из разряда "через задницу". А "штатного" варианта нет чтоли?
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
08.05.2009, 22:06
Evg,
Цитата Сообщение от Evg Посмотреть сообщение
А "штатного" варианта нет чтоли?
Штатный вариант
C++
1
Application->OnIgle = &(твой обработчик);
//вычисления закончены



Цитата Сообщение от mirso Посмотреть сообщение
if(SecondaryForm != NULL) ... ;
//форма создана
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21287 / 8312 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
08.05.2009, 22:15  [ТС]
Application->OnIgle вызовется перед Application->Run();?
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
08.05.2009, 22:28
C++
1
2
3
4
5
6
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{Application->OnIgle = &Button1Click;//любой обработчик
}
//---------------------------------------------------------------------------
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21287 / 8312 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
14.05.2009, 20:39  [ТС]
Цитата Сообщение от mirso Посмотреть сообщение
C++
1
2
3
4
5
6
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{Application->OnIgle = &Button1Click;//любой обработчик
}
//---------------------------------------------------------------------------
Чуть более подробно вот
http://cppbuilder.ru/articles/0162.php

Для себя сделал так. В конструкторе установил обработчик события OnIdle, а в самом обработчике сделал действия, которые необходимо сделать после инициализации всех форм, после чего сделал "Application->OnIdle = NULL;" чтобы больше в этот обработчик не попадать (он мне уже не нужен)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.05.2009, 20:39

Вывод отладочной информации
Добрый день Есть консольная программа которую пишу давольно давно и ее размер уже перевалил за несколько тыс строк. Она изобилует...

Удаление отладочной информации
Как удалить отладочную информацию в Code Blocks?

Проблемка с отладочной платой CCM001V2
Имеется плата STEVOT-CCM001V2 с сенсорной клавиатурой и дисплеем: http://www.st.com/st-web-ui/static/acti ... pe=keyword Проблема в том,...

отладка без отладочной платы?
скачал последнюю Code Composer Studyo. Отладочных плат у меня нет. Создаю демку мигания светодиодом, выбираю в коннекшен &quot;Data...

Вопросы по отладочной плате Atmega32L.
Привезли из Китая отладочную плату за 900руб. http://item.taobao.com/item.htm?id=7639640541 Схема: Schematic.pdf Есть пара...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Опции темы

Новые блоги и статьи
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru