Что проще, писать или отлаживать...
Модератор: Модераторы разделов
-
Ryba
- Сообщения: 12
Что проще, писать или отлаживать...
Привет народ.
Поставил Linux c KDevelop 3.0.4
Написал кусок проги на С++(c Qt) даже скомпилировал кое-как...
Неплохо бы и отладить, в KDevelop отладчик отмороженный напрочь, выдает одну ересь. Попробовал запустить исполняемый файл в kdbg вроде файл открывается и даже исполняется, только исходного текста проги не видно даже брекпойнт некуда поставить. Что сделать, чтоб отладчик нормально заработал?
Поставил Linux c KDevelop 3.0.4
Написал кусок проги на С++(c Qt) даже скомпилировал кое-как...
Неплохо бы и отладить, в KDevelop отладчик отмороженный напрочь, выдает одну ересь. Попробовал запустить исполняемый файл в kdbg вроде файл открывается и даже исполняется, только исходного текста проги не видно даже брекпойнт некуда поставить. Что сделать, чтоб отладчик нормально заработал?
В моем аквариуме установлен: Linux Mandrake 10.1 + KDE 3.2
-
Ryba
- Сообщения: 12
Re: Что проще, писать или отлаживать...
В мэйкфайле для компилятора стоят такие флаги
CFLAGS = -pipe -Wall -W -O2 -fomit-frame-pointer -pipe -march=i586 -mtune=pentiumpro -DQT_NO_DEBUG -DQT_SHARED -DQT_THREAD_SUPPORT
CXXFLAGS = -pipe -Wall -W -O2 -fomit-frame-pointer -pipe -march=i586 -mtune=pentiumpro -DQT_NO_DEBUG -DQT_SHARED -DQT_THREAD_SUPPORT
меня смущает -DQT_NO_DEBUG хотя если его убрать лучше не становится
CFLAGS = -pipe -Wall -W -O2 -fomit-frame-pointer -pipe -march=i586 -mtune=pentiumpro -DQT_NO_DEBUG -DQT_SHARED -DQT_THREAD_SUPPORT
CXXFLAGS = -pipe -Wall -W -O2 -fomit-frame-pointer -pipe -march=i586 -mtune=pentiumpro -DQT_NO_DEBUG -DQT_SHARED -DQT_THREAD_SUPPORT
меня смущает -DQT_NO_DEBUG хотя если его убрать лучше не становится
В моем аквариуме установлен: Linux Mandrake 10.1 + KDE 3.2
-
aLexx programmer
- Сообщения: 985
- Статус: Турук-Макто
- ОС: Gentoo -> Ubuntu
Re: Что проще, писать или отлаживать...
добавить флаг -g и заменить -O2 на -O0 (минус о ноль)
-
Ryba
- Сообщения: 12
Re: Что проще, писать или отлаживать...
Пробовал добавлять в опции компилятора -ggdb не помогает.
Пишет, что: "Нет исходного кода"
aLexx: Пробовал и так, ответ один "Нет исходного кода"
Пишет, что: "Нет исходного кода"
aLexx: Пробовал и так, ответ один "Нет исходного кода"
В моем аквариуме установлен: Linux Mandrake 10.1 + KDE 3.2
-
polachok
- Бывший модератор
- Сообщения: 2199
- Статус: главный форумный маргинал
- ОС: gnu/linux
-
Ryba
- Сообщения: 12
Re: Что проще, писать или отлаживать...
Попробовал убрать -format-frame-pointer не помогает...
В моем аквариуме установлен: Linux Mandrake 10.1 + KDE 3.2
-
Hvzh
- Сообщения: 711
- Статус: Gone with Linux
- ОС: Linux Mint 18.1
Re: Что проще, писать или отлаживать...
Можешь проект твой прислать в зипе?
HP 255 G4 A6-6310 + Linux Mint 18.1 + Windoze7 under VmWare + OS X Mavericks under VmWare
-
Ryba
- Сообщения: 12
Re: Что проще, писать или отлаживать...
Могу. Куда слать?
В моем аквариуме установлен: Linux Mandrake 10.1 + KDE 3.2
-
Hvzh
- Сообщения: 711
- Статус: Gone with Linux
- ОС: Linux Mint 18.1
Re: Что проще, писать или отлаживать...
HP 255 G4 A6-6310 + Linux Mint 18.1 + Windoze7 under VmWare + OS X Mavericks under VmWare
-
Ryba
- Сообщения: 12
Re: Что проще, писать или отлаживать...
Hvzh: Отправил
В моем аквариуме установлен: Linux Mandrake 10.1 + KDE 3.2
-
Hvzh
- Сообщения: 711
- Статус: Gone with Linux
- ОС: Linux Mint 18.1
Re: Что проще, писать или отлаживать...
HP 255 G4 A6-6310 + Linux Mint 18.1 + Windoze7 under VmWare + OS X Mavericks under VmWare
-
Hvzh
- Сообщения: 711
- Статус: Gone with Linux
- ОС: Linux Mint 18.1
Re: Что проще, писать или отлаживать...
Ну, раз ты пропал, то пишу, что у меня получилось. Под KDevelop все отлаживается нормально. Правда, версия у меня 3.3.2. В Kdbg тоже все работает, но это отстой. Посмотри, есть ли у тебя в дистре DDD. Это вполне приличный отладчик, с ним тоже все нормально пашет
HP 255 G4 A6-6310 + Linux Mint 18.1 + Windoze7 under VmWare + OS X Mavericks under VmWare
-
elide
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: Что проще, писать или отлаживать...
отвечу на сабж (:
очень сложно писать так, чтоб было легко отлаживать (:
очень сложно писать так, чтоб было легко отлаживать (:
слава роботам!
-
nerezus
- Сообщения: 525
- Статус: Вселенский отказник
- ОС: windoze
Re: Что проще, писать или отлаживать...
Что проще, писать или отлаживать...
Мне отлаживать проще, т.к. пишу небольшими кусками "снизу вверх", и их отлаживаю. Это на пхп )
ICQ 547097
-
sdk
- Бывший модератор
- Сообщения: 210
Re: Что проще, писать или отлаживать...
Ryba, попробуй отладчик запускать из директории с исходниками.
Если отвечать на сабж, то так:
Смотря как писать и смотря как отлаживать
.
Если отвечать на сабж, то так:
Смотря как писать и смотря как отлаживать
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
-
Mutex
- Сообщения: 22
Re: Что проще, писать или отлаживать...
Подниму старую тему.
Есть Debian 4.0, KDE 3.5.5, KDevelop 3.3.5 и QT3.3.7
Проблема в отладке в КДевелопере. Даже просто создаю стандартный проект С++ -> QMake приложение. Собираю (тут все ОК).
Делаю "наблюдение" за несколькими переменными в исходнике, делаю точку отсанова - и запускаю старт дебага.
Вот выдает лог:
Вопрос - в чем проблема? Очень хочется таки наблюдать построчный дебаг, работу точек останова и содержание нужных переменных...
Есть Debian 4.0, KDE 3.5.5, KDevelop 3.3.5 и QT3.3.7
Проблема в отладке в КДевелопере. Даже просто создаю стандартный проект С++ -> QMake приложение. Собираю (тут все ОК).
Делаю "наблюдение" за несколькими переменными в исходнике, делаю точку отсанова - и запускаю старт дебага.
Вот выдает лог:
Код: Выделить всё
/usr/bin/gdb /home/mutex/testqt/./bin/testqt -fullname -quiet
(gdb) set edit off
(gdb) set confirm off
Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".
(gdb) (gdb)
(gdb) set print static-members off
(gdb) tty /dev/pts/3
(gdb) set width 0
(gdb) set height 0
(gdb) set stop-on 1
(gdb) handle SIG32 pass nostop noprint
(gdb) handle SIG41 pass nostop noprint
(gdb) handle SIG42 pass nostop noprint
(gdb) handle SIG43 pass nostop noprint
(gdb) set print asm-demangle on
(gdb) set output-radix 10
(gdb) cd /home/mutex/testqt/./bin
(gdb) break /home/mutex/testqt/src/testqt.cpp:177
No source file named /home/mutex/testqt/src/testqt.cpp.
(gdb) run
Failed to read a valid object file image from memory.
(gdb) backtrace
[Thread debugging using libthread_db enabled]
[New Thread -1222011200 (LWP 3997)]
Stopped due to shared library event
#0 0xb7fc2010 in _dl_debug_state () from /lib/ld-linux.so.2
#1 0xb7fb8c35 in ?? () from /lib/ld-linux.so.2
#2 0xb7fcc1e0 in _rtld_global () from /lib/ld-linux.so.2
#3 0xb7fcc6a4 in ?? ()
#4 0x00000000 in ?? ()
(gdb) info thread
1 Thread -1222011200 (LWP 3997) 0xb7fc2010 in _dl_debug_state () from /lib/ld-linux.so.2
(gdb) info args
No symbol table info available.
(gdb) info local
No symbol table info available.
(gdb) print QString
No symbol "QString" in current context.
(gdb) print ts
No symbol "ts" in current context.
(gdb) break /home/mutex/testqt/src/testqt.cpp:177
No source file named /home/mutex/testqt/src/testqt.cpp.
(gdb) frame 0
#0 0xb7fc2010 in _dl_debug_state () from /lib/ld-linux.so.2
(gdb) info args
No symbol table info available.
(gdb) info local
No symbol table info available.Вопрос - в чем проблема? Очень хочется таки наблюдать построчный дебаг, работу точек останова и содержание нужных переменных...
-
GRS
- Сообщения: 236
- Статус: C++ Pro
- ОС: Suse10.2/XP
Re: Что проще, писать или отлаживать...
У К,К. хорошо написано про это дело в его книге про отладку без исходных текстов.
Просто у программистов Linux и Windows разный подход к отладке. У Windows это бряки, trace и остальные новороты Visual Studio и Bounce Cheker, в Linux все решают логи.
Собственно когда я устроился на 2-ую работу, где я начал писать под nix меня к логам быстренько приучили.
еще так же научили делать дамп через ulimit и через gdb смотреть его.
вначале мне логи показались не удобными, но со временем я заметил что нахождение ошибок что под Windows что под nix у меня уходит практически одинакавое количество времени.
Просто у программистов Linux и Windows разный подход к отладке. У Windows это бряки, trace и остальные новороты Visual Studio и Bounce Cheker, в Linux все решают логи.
Собственно когда я устроился на 2-ую работу, где я начал писать под nix меня к логам быстренько приучили.
еще так же научили делать дамп через ulimit и через gdb смотреть его.
вначале мне логи показались не удобными, но со временем я заметил что нахождение ошибок что под Windows что под nix у меня уходит практически одинакавое количество времени.
-
v04bvs
- Сообщения: 636
- ОС: Debian GNU/Linux
Re: Что проще, писать или отлаживать...
Иногда баг быстрее найти отладкой, иногда логами. Универсального рецепта нет.
-
mops
- Сообщения: 172
- ОС: Ubuntu Feisty
Re: Что проще, писать или отлаживать...
...в KDevelop отладчик отмороженный напрочь, выдает одну ересь. ...
Это не есть правда. Вполне себе нормальные значения выдаёт. Да ещё и QString можно просмотреть
-
Mutex
- Сообщения: 22
Re: Что проще, писать или отлаживать...
GRS, а в логах пишутся значения всех переменных в момент падения программы? И что за К.К. ?
У меня в основном какая проблема - я могу найти в какой момент падает программа, поэтому хочу знать содержимое всех нужных мне переменных на момент крушения. Если бы это были int или QString - это еще несложно, но часто бывают сложные структуры, и вывести в консоль их содержимое проблематично...
У меня в основном какая проблема - я могу найти в какой момент падает программа, поэтому хочу знать содержимое всех нужных мне переменных на момент крушения. Если бы это были int или QString - это еще несложно, но часто бывают сложные структуры, и вывести в консоль их содержимое проблематично...