Использование дебаггера
+5
ShenZN
justar
Замабувараев
Eric-S
tux
Участников: 9
FreeBasic :: Программирование :: Общее
Страница 1 из 2
Страница 1 из 2 • 1, 2
Использование дебаггера
Ктонить поьзовался в FB дебагером, если да, то каким?
Встроенным я чета пытался нефига полезного чета не добился, говорять вроде сторонние какието мона использовать, ктонить слышал про такое?
Встроенным я чета пытался нефига полезного чета не добился, говорять вроде сторонние какието мона использовать, ктонить слышал про такое?
Re: Использование дебаггера
Я не пользовался. Туплю конкретно на этот счёт.
Стараюсь проги писать так, чтобы без дебагера выживать.
А ты вообще его как запускаешь? Как я понял, там утилитка консольная gd.exe. И программу нужно компилить с ключём -g. Больше ничего не понял.
Стараюсь проги писать так, чтобы без дебагера выживать.
А ты вообще его как запускаешь? Как я понял, там утилитка консольная gd.exe. И программу нужно компилить с ключём -g. Больше ничего не понял.
Re: Использование дебаггера
Вот и я также))
Походу там по проге еще надо какието метки прям в исходнике раскидывать, я так и не вкупил как конкретно.
Я обычно тоже както не пользовался особо ими, но всегда понимал, что на поиск ошибок с ним уйдет куда меньше времени.
Едиственный дебагер который я использовал, ето в асме для контроллеров, так там удобно можно отслеживать по ходу программы значение каждого регистра, те переменной.
Интересно есть ли ченить подобное и во FB чтобы мона было прям значения переменных видеть, было бы удобно...
Походу там по проге еще надо какието метки прям в исходнике раскидывать, я так и не вкупил как конкретно.
Я обычно тоже както не пользовался особо ими, но всегда понимал, что на поиск ошибок с ним уйдет куда меньше времени.
Едиственный дебагер который я использовал, ето в асме для контроллеров, так там удобно можно отслеживать по ходу программы значение каждого регистра, те переменной.
Интересно есть ли ченить подобное и во FB чтобы мона было прям значения переменных видеть, было бы удобно...
Re: Использование дебаггера
Угу. И чтобы можно было по шагам выполнять программу. Пропуская или заходя в функции.
В vb6 мне дебагер как-то не очень.
А единственным, которым я пользовался это debug.exe.
Так, что знаний, на сей счёт у меня кране мало.
В vb6 мне дебагер как-то не очень.
А единственным, которым я пользовался это debug.exe.
Так, что знаний, на сей счёт у меня кране мало.
Re: Использование дебаггера
Касательно freepascal, но на русском
http://exefox.com/showarticle.php?id=1114802201
Кажись этот gdb очень мощная штука!
http://exefox.com/showarticle.php?id=1114802201
Кажись этот gdb очень мощная штука!
Re: Использование дебаггера
Кстати, а ты заглядывал в examples/manual/debug/
Там есть три простеньких примера.
Компилишь их с ключём
fbc -g assert.bas
потом
bin\win32\gdb assert.exe
r
А чё дальше не понял.
Но прога запускаеться.
И заодно касперыч ругаеться, что типа внедрение в процесс.
По идеи должны были выскочить дополнительные сообщения, но где? Я так и не увидел.
Там есть три простеньких примера.
Компилишь их с ключём
fbc -g assert.bas
потом
bin\win32\gdb assert.exe
r
А чё дальше не понял.
Но прога запускаеться.
И заодно касперыч ругаеться, что типа внедрение в процесс.
По идеи должны были выскочить дополнительные сообщения, но где? Я так и не увидел.
Re: Использование дебаггера
Сейчас копался и случайно наткнулся на русское руководство. Если оно поможет и ты разберёшься, поделись пожалуйста впечатлением и опытом!
http://mitya.pp.ru/gdb/
И вот ещё
http://ru.wikipedia.org/wiki/GDB
http://mitya.pp.ru/gdb/
И вот ещё
http://ru.wikipedia.org/wiki/GDB
Re: Использование дебаггера
Это тот же самый отладчик, что входит и во FreeBASIC (лежит в папке FreeBASIC\bin\win32). Читайте эту статью, многое будет понятно, как пользоваться отладчиком.Eric-S пишет:Касательно freepascal, но на русском
http://exefox.com/showarticle.php?id=1114802201
Кажись этот gdb очень мощная штука!
Re: Использование дебаггера
А про gdb.exe мы по этому и говорим, что он прилагаеться.
Но там в статье именно паскаль!
Не знаю, я пробовал. Команда "r" Прогу запускает, но ничего дополнительного не выводит и на точках не останавливаеться.
А как запустить отдельно функцию или посмотреть значение переменной вообще неясно. Или тоже нужно все имена в верхнем регистре писать?
Но там в статье именно паскаль!
Не знаю, я пробовал. Команда "r" Прогу запускает, но ничего дополнительного не выводит и на точках не останавливаеться.
А как запустить отдельно функцию или посмотреть значение переменной вообще неясно. Или тоже нужно все имена в верхнем регистре писать?
Использование дебаггера
Eric-S пишет:А про gdb.exe мы по этому и говорим, что он прилагаеться.
А как запустить отдельно функцию или посмотреть значение переменной вообще неясно. Или тоже нужно все имена в верхнем регистре писать?
Просмотр значения произвольной переменной: print имя_переменной
Мониторинг состояния переменной: display имя_переменной (автоматически показываются все переменные из всех команд display при любой остановке)
Изменение значения переменной: set имя_переменной := новое_значение
Имена переменных надо писать в верхнем регистре только в командах GDB, в исходнике они могут быть в любом регистре.
Практически выяснил один нюанс: все команды работы с переменными видят их только после команды run (если попробуешь поставить watchpoint или display до run то получишь сообщение об отсутствии такого имени). Поэтому я всегда ставлю break 1, потом запускаю прогу и после остановки ввожу необходимые watch и display. Затем continue - и пошла работа
justar- Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 49
Откуда : Кишинёв, Республика Молдоа
GDB
Можно воспользоваться специальной утилитой, которая является GUI над GDK.
GDB Insight:
http://sources.redhat.com/insight/
Очень удобная и полезная
GDB Insight:
http://sources.redhat.com/insight/
Очень удобная и полезная
Re: Использование дебаггера
привет. есть такая замечательная штука OllyDBG. можно делать все что угодно, но надо знать ассемблер, и реальных названий переменных вы в нем не увидите, надо смотреть по коду. можно ходить по шагам, залезать в функции, просматривать значения регистров, отискивать текст, лазить по виндовым окнам, если приложение графическое, и т.д. скажу вам сразу, если вы хотите просматривать непосредственно свой код, смело можете пропускать первые шесть килобайт кода, так как перед нашим кодом, FreeBasic подготавливает почву для работы, параметры командной строки и т.д. FreeBasic компилится в Native code- натуральный код. FreeBasic- это не интерпретатор, а реальный код. интерпретатором называется PCode(pseudo code) псевдокод, так что кто вам скажет что FreeBasic интерпретатор, плюньте ему в лицо. запускайте дебагер, и наслаждайтесь истинным машинным кодом!
electrik- Сообщения : 391
Дата регистрации : 2008-09-02
Возраст : 43
Откуда : галактика Млечный путь, система Солнечная, планета Земля, страна россия, город Санкт Петербург
Re: Использование дебаггера
С этой ссылки скачать у меня не получилось - похоже, там лежит только линуксовая версия... Зато нашёл любопытный инсталлятор под Винду AllInOne: cодержит FB 0.20, FBEdit, GDB и InsightShenZN пишет:Можно воспользоваться специальной утилитой, которая является GUI над GDK.
GDB Insight:
http://sources.redhat.com/insight/
Очень удобная и полезная
http://www.allbasic.info/forum/index.php?topic=88.0
justar- Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 49
Откуда : Кишинёв, Республика Молдоа
Re: Использование дебаггера
Может быть немного запоздало, но думаю будет полезно, тем кто еще не знал.
Сразу скажу что у меня компилятор под Дос, не знаю как с виндосовским компилятором, может также...Ну в общем:
1) Заходим в папку с FreeBasic'ом
2) Находим там fbc.exe
3) Правая клавиша на значке fbc.exe -> свойства
4) Нажимаем вкладку "Программа", снимаем галочку "Закрыть после завершения приложения"
5) Теперь идем пишем сразу с ошибкой программу, компилируем, при компиляции открывается окно, с указанием ошибок, и по-моему даже с указателем на линию с ошибкой.
Сразу скажу что у меня компилятор под Дос, не знаю как с виндосовским компилятором, может также...Ну в общем:
1) Заходим в папку с FreeBasic'ом
2) Находим там fbc.exe
3) Правая клавиша на значке fbc.exe -> свойства
4) Нажимаем вкладку "Программа", снимаем галочку "Закрыть после завершения приложения"
5) Теперь идем пишем сразу с ошибкой программу, компилируем, при компиляции открывается окно, с указанием ошибок, и по-моему даже с указателем на линию с ошибкой.
Andrew- Сообщения : 45
Дата регистрации : 2008-09-23
Возраст : 35
Откуда : Киев
Re: Использование дебаггера
ну вобщемто дебагер используется немного для другова, а именно чтобы мона было отследить значения каких либо переменных во время выполнения программы, или чтобы мона было приостанавливать прогу в некоторых местах, или выполнять по шагам...
Re: Использование дебаггера
По моему опыту из PureBasic-a главная задача дебагера была как раз в том чтобы искать ошибки в коде. Ну может быть я не прав...
При компиляции с дебагером - снизу писались ошибки с указанием на строку. Если дебагер выключить - то валазила табличка типа иди с отчетом в майкрософт.
Правда там еще можно было вывести какую-нибудь переменную, делалось это так:
Debug(A*)
Но я считаю что тот же вывод переменной (раз он так необходим) при исполнении самой программы можно легко написать самому.
При компиляции с дебагером - снизу писались ошибки с указанием на строку. Если дебагер выключить - то валазила табличка типа иди с отчетом в майкрософт.
Правда там еще можно было вывести какую-нибудь переменную, делалось это так:
Debug(A*)
Но я считаю что тот же вывод переменной (раз он так необходим) при исполнении самой программы можно легко написать самому.
Andrew- Сообщения : 45
Дата регистрации : 2008-09-23
Возраст : 35
Откуда : Киев
Re: Использование дебаггера
Хм. Ща немного почитал статью, ссылку на которую приводил здесь раньше.
А потом заюзал gdb.exe. Всё плавненько и аккуратненько пошло.
Но... Вот такой вопрос, кто-нибудь может мне сказать, как отследить освобождаеться ли память или нет?
Я в проге запутался. Не могу понять, когда память освобождаеться, а когда нет.
Мне хотябы нужно просто получить сколько сейчас памяти используеться. Чтобы можно было сравнить до и после операции. Оно не должно измениться.
И ещё вопрос. Можно ли в самой проге, поставить точки останова?
А потом заюзал gdb.exe. Всё плавненько и аккуратненько пошло.
Но... Вот такой вопрос, кто-нибудь может мне сказать, как отследить освобождаеться ли память или нет?
Я в проге запутался. Не могу понять, когда память освобождаеться, а когда нет.
Мне хотябы нужно просто получить сколько сейчас памяти используеться. Чтобы можно было сравнить до и после операции. Оно не должно измениться.
И ещё вопрос. Можно ли в самой проге, поставить точки останова?
Re: Использование дебаггера
точки останова удобно делать через сам дебагер, команды правда непомню, но там просто указываеш имя функции, допустим, а потом от нее мона по шагам дальше ехать и просматривать значения переменых... удобно
А на счет памяти, то в линухе есть отдельная утилитка утилитка (опенсурсная, следовательно и на венду портировали, наверно), она какраз предназначена для отслеживания утечек памяти, вот тока как называется, опять не помню(( но мона погуглить (так я ее и нашел)
А на счет памяти, то в линухе есть отдельная утилитка утилитка (опенсурсная, следовательно и на венду портировали, наверно), она какраз предназначена для отслеживания утечек памяти, вот тока как называется, опять не помню(( но мона погуглить (так я ее и нашел)
Re: Использование дебаггера
Возможно gprof.exe?
Там во фрибэйсике для него даже есть некии ключики.
Ладно я потом как-нибудь попробую разобраться.
Сейчас уже башка не варит. А потом буду занят.
Там во фрибэйсике для него даже есть некии ключики.
Ладно я потом как-нибудь попробую разобраться.
Сейчас уже башка не варит. А потом буду занят.
Re: Использование дебаггера
Кстати на счёт точек... Из самого gdb.exe это понятно. Просто может из исходника тоже можно это сделать.
Re: Использование дебаггера
Да... Удобного дебаггера, хотя бы как у ВБ, для ФБ нам еще долго не видать. Во всяком случае, не раньше, чем стандартную ИДЕ. Для тех, кто знает асм, лучше Олли ничего нет. Лично я просто раскидываю по коду точки останова вроде
asm
int 3
end asm
потом в олю и там, где нужно, останавливаешься и смотришь.
asm
int 3
end asm
потом в олю и там, где нужно, останавливаешься и смотришь.
DiG. GeRR- Сообщения : 101
Дата регистрации : 2009-01-30
Возраст : 32
Откуда : Рудный, Казахстан
Re: Использование дебаггера
Не.. В принципе gdb он достаточно мощен. Но к нему нужно приспособиться.
А ведь всё довольно просто.
Кстати буквально вчера вечером, лестая readme.txt у freebasic обнаружил подробное, пошаговое руководство, как пользовать gdb. Лаконично, без размазни, и при этом всё что действительно нужно.
Но gdb... Не знаю, я всё равно блужу в своих проектах с ним. У меня бырают такие выкрутасы. Функции вызывают друг друга рекурсивно. И если отдельный участок кода я ещё понимаю. То прокрутить в мозгу всю работу я просто не в силах.
Для этого я написал несколько своих макросов. Причём они вставляються в код, когда я компилю прогу только в отладочном режиме, с ключём -g.
Ну а потом, раскидываю по ключевым местам эти макросики, и проверяю, что и куда у меня выходит.
И не знаю, что медленнее пользовать эти макросы или отладчик. Мне проще с макросами.
А ведь всё довольно просто.
Кстати буквально вчера вечером, лестая readme.txt у freebasic обнаружил подробное, пошаговое руководство, как пользовать gdb. Лаконично, без размазни, и при этом всё что действительно нужно.
Но gdb... Не знаю, я всё равно блужу в своих проектах с ним. У меня бырают такие выкрутасы. Функции вызывают друг друга рекурсивно. И если отдельный участок кода я ещё понимаю. То прокрутить в мозгу всю работу я просто не в силах.
Для этого я написал несколько своих макросов. Причём они вставляються в код, когда я компилю прогу только в отладочном режиме, с ключём -g.
Ну а потом, раскидываю по ключевым местам эти макросики, и проверяю, что и куда у меня выходит.
И не знаю, что медленнее пользовать эти макросы или отладчик. Мне проще с макросами.
Re: Использование дебаггера
Я ГДБ использую, но хотелось бы что постабильнее. Самый убитый глюк - когда происходит обращение к невыделенной памяти у меня даже комп виснет.
vbman- Сообщения : 52
Дата регистрации : 2008-11-19
Возраст : 42
Откуда : Украина, Кировоград
Re: Использование дебаггера
Насчет отслеживания занятой памяти.... Диспетчер задач не катит? Или ты в линухе ?
Andrew- Сообщения : 45
Дата регистрации : 2008-09-23
Возраст : 35
Откуда : Киев
Re: Использование дебаггера
Упс. А ведь точно. Диспетчер задач должен немного помочь.
Об этом-то я и не подумал.
Хотя хочеться всё же более точного инструмента.
Но меня бы устроила просто функция, которая скажет, сколько памяти сейчас пользует моя софтина.
Об этом-то я и не подумал.
Хотя хочеться всё же более точного инструмента.
Но меня бы устроила просто функция, которая скажет, сколько памяти сейчас пользует моя софтина.
Страница 1 из 2 • 1, 2
FreeBasic :: Программирование :: Общее
Страница 1 из 2
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|