Russian Qt Forum
Ноябрь 22, 2024, 19:23
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Qt-инструментарий
>
Точка останова на участок памяти
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Точка останова на участок памяти (Прочитано 6828 раз)
qtnoob1k
Гость
Точка останова на участок памяти
«
:
Сентябрь 29, 2010, 13:36 »
Всем привет! Как в Qt Creator можно пометить участок памяти при изменении которого срабатывает точка останова?
Записан
b-s-a
Гость
Re: Точка останова на участок памяти
«
Ответ #1 :
Сентябрь 29, 2010, 13:57 »
ставишь обычную точку останова. Запускаешь, дожидаешься пока программа на нее встанет. Открываешь вкладку "точки останова", щелкаешь правой кнопкой на переменной (или на пустом месте) и выбираешь соответствующий пункт.
Записан
qtnoob1k
Гость
Re: Точка останова на участок памяти
«
Ответ #2 :
Сентябрь 29, 2010, 21:49 »
b-s-a, что-то я там не нашёл как это можно сделать. Может я плохо сформулировал, что же мне надо. Попробую написать яснее. Есть например глобальный int arr[10]; Где-то в программе, в каком-то потоке, не известно где в общем, значения элементов этого массива затираются, тоесть кто-то портит память. Хотелось бы остановиться в момент порчи памяти, чтобы узнать кто же это сделал. В отладчике windbg есть такая возможность и в Visual C++ тоже, мне интересно можно ли это сделать в Qt Creator.
«
Последнее редактирование: Сентябрь 29, 2010, 21:52 от qtnoob1k
»
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Точка останова на участок памяти
«
Ответ #3 :
Сентябрь 30, 2010, 08:20 »
не уверен что gdb это вообще умеет.
вы уверены что у вас программа правильно спроектирована? если есть доступ к переменным из разных потоков, обычно делают геттеры/сеттеры, защищая мьютексами переменную.
а поставить брейкпоинт в ф-ию труда не составляет. можно тупо подвенить массив и перегрузить operator[], но это уже из области шаманства
Записан
b-s-a
Гость
Re: Точка останова на участок памяти
«
Ответ #4 :
Сентябрь 30, 2010, 09:44 »
Я ошибся, надо жать на раздел "переменные", затем правой кнопкой на переменной и выбрать пункт "Останов при изменении по адресу объекта..."
Записан
qtnoob1k
Гость
Re: Точка останова на участок памяти
«
Ответ #5 :
Октябрь 01, 2010, 15:48 »
Цитата: Авварон от Сентябрь 30, 2010, 08:20
вы уверены что у вас программа правильно спроектирована? если есть доступ к переменным из разных потоков, обычно делают геттеры/сеттеры, защищая мьютексами переменную.
а поставить брейкпоинт в ф-ию труда не составляет. можно тупо подвенить массив и перегрузить operator[], но это уже из области шаманства
Например ошибка в арифметике с указателем при которой он портит память какого-то объекта к данным которого можно обратиться только с помощью get/set.
Цитата: b-s-a от Сентябрь 30, 2010, 09:44
Я ошибся, надо жать на раздел "переменные", затем правой кнопкой на переменной и выбрать пункт "Останов при изменении по адресу объекта..."
Странно, у меня такого пункта нет. Пользуюсь Qt Creator из SDK с gcc
«
Последнее редактирование: Октябрь 01, 2010, 16:04 от qtnoob1k
»
Записан
navrocky
Гипер активный житель
Offline
Сообщений: 817
Погроммист
Re: Точка останова на участок памяти
«
Ответ #6 :
Октябрь 01, 2010, 16:17 »
gdb умеет точки ставить на память. Так что смотрите свежий creator или другие среды, ну или напрямую используйте gdb...
пруф -
http://stackoverflow.com/questions/58851/can-i-set-a-breakpoint-on-memory-access-in-gdb
Записан
Гугль в помощь
b-s-a
Гость
Re: Точка останова на участок памяти
«
Ответ #7 :
Октябрь 03, 2010, 21:29 »
Цитата: qtnoob1k от Октябрь 01, 2010, 15:48
Странно, у меня такого пункта нет. Пользуюсь Qt Creator из SDK с gcc
А какая версия? Не забывай, что это все обновляется периодически
Записан
qtnoob1k
Гость
Re: Точка останова на участок памяти
«
Ответ #8 :
Октябрь 05, 2010, 15:38 »
Цитата: b-s-a от Октябрь 03, 2010, 21:29
А какая версия? Не забывай, что это все обновляется периодически
Последния версия 4.7, я скачал неделю назад с сайта qt.nokia.com.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...