С целью изучить/разобраться в исходном коде некоторой программы (в данном случае Okular), хотелось бы запустить программу в отладчике.
Установил kdevelop, штука красивая, как редактор его я уже оценил, как отладчик пока оценить не получилось.
Не ясно как откомпилировать и запустить в отладчике проект. Помогите пожайлуста разобраться на примере окуляра.
Трассировка/отладка cpp программ (KDevelop)
Модератор: Модераторы разделов
-
MakkyWelly
- Сообщения: 97
- ОС: по обстоятельствам :)
Re: Трассировка/отладка cpp программ
Примерно так:
1. Компилируем с включением отладочной информации, у gcc (g++ и т.д.) для этого служит флаг -g. Допустим у программы какой-то сложный Makefile, всё равно:
Нужно убедится, что в Makefile используется переменная CFLAGS.
2. Запускаем под отладчиком gdb (GNU Debugger):
3. Как узнать экспортируемые библиотеки:
1. Компилируем с включением отладочной информации, у gcc (g++ и т.д.) для этого служит флаг -g. Допустим у программы какой-то сложный Makefile, всё равно:
Код: Выделить всё
$ make CFLAGS+=-g
...Нужно убедится, что в Makefile используется переменная CFLAGS.
2. Запускаем под отладчиком gdb (GNU Debugger):
Код: Выделить всё
$ gdb okular
(gdb) run
# информация о функциях, библиотеках...
(gdb) where
# содержание стека
(gdb) up
# вверх по стеку
(gdb) print a
# распечатать лок. переменную a
(gdb) next
# продолжить трасировку
(gdb) step
# текущий код3. Как узнать экспортируемые библиотеки:
Код: Выделить всё
$ ldd okulardie sheep! die to reverse the system
you accept (reject, respect);
next step,
kill next sacrifice, each sacrifice
you accept (reject, respect);
next step,
kill next sacrifice, each sacrifice
-
kinder
- Сообщения: 151
- ОС: Mandriva 2009 Spring
Re: Трассировка/отладка cpp программ
На примере окуляра ещё не пробовал, ему чего то не хватало для компиляции, разбираться не стал.
Попытался свой кусочек кода отладить используя kdbg (что кажись есть графическая надстройка к gdb). Не получилось. При нажатии F10 указатель перемещается в хаотическом порядке и по несколько раз попадает на одни и те же строки.
Попытался свой кусочек кода отладить используя kdbg (что кажись есть графическая надстройка к gdb). Не получилось. При нажатии F10 указатель перемещается в хаотическом порядке и по несколько раз попадает на одни и те же строки.
-
kinder
- Сообщения: 151
- ОС: Mandriva 2009 Spring
Re: Трассировка/отладка cpp программ
Может ли быть проблема с отладкой из-за оптимизации кода компилятором? Но ведь логично при ключе -g не оптимизировать код...
Ибо указатель при нажатии F10 идёт вовсе не последовательно, а скачет то вперёд, то назад и состояние переменных изменяется не в соответствии с положением указателя..
Ибо указатель при нажатии F10 идёт вовсе не последовательно, а скачет то вперёд, то назад и состояние переменных изменяется не в соответствии с положением указателя..
-
MakkyWelly
- Сообщения: 97
- ОС: по обстоятельствам :)
Re: Трассировка/отладка cpp программ
Может попробывать посмотреть в консольном отладчике?
Не совсем понимаю - почему нельзя смотреть на исходный код? Почему нужно компилировать и смотреть в отладчике? Есть какая-то ошибка при вызове к.-л. функции?
С целью изучить/разобраться в исходном коде некоторой программы (в данном случае Okular), хотелось бы запустить программу в отладчике.
Не совсем понимаю - почему нельзя смотреть на исходный код? Почему нужно компилировать и смотреть в отладчике? Есть какая-то ошибка при вызове к.-л. функции?
die sheep! die to reverse the system
you accept (reject, respect);
next step,
kill next sacrifice, each sacrifice
you accept (reject, respect);
next step,
kill next sacrifice, each sacrifice
-
kinder
- Сообщения: 151
- ОС: Mandriva 2009 Spring
Re: Трассировка/отладка cpp программ
Во первых в отладчике понятнее (мне по крайней мере), тем более я тут человек в этой области новый, только недавно с Qt познакомился. Си я конечно и раньше видел, но последний раз я что то на нём писал году так в 2003 используя WinAPI или MFC.
А проблемы есть, я уже несколько дней с проблемой бьюсь и решить не могу. При использовании djvuapi наблюдаются анамалии. Извинете за внешнии ссылки, переписывать не хочтеся, мне кажется более подробно описал проблему тут: http://forum.sources.ru/index.php?showtopic=283620
Во вторых отладчик нужен чтобы свои каракули отлаживать, а на примере окуляра хотел с отладчиком освоиться.
А проблемы есть, я уже несколько дней с проблемой бьюсь и решить не могу. При использовании djvuapi наблюдаются анамалии. Извинете за внешнии ссылки, переписывать не хочтеся, мне кажется более подробно описал проблему тут: http://forum.sources.ru/index.php?showtopic=283620
Во вторых отладчик нужен чтобы свои каракули отлаживать, а на примере окуляра хотел с отладчиком освоиться.
-
kinder
- Сообщения: 151
- ОС: Mandriva 2009 Spring
Re: Трассировка/отладка cpp программ
Если бы отладчик был бы вменяемым, я мог бы понять в какой момент происходит сбой, но он работает невменяемо. Совершенно невменяемо. Это даже на словах не передать как он работает. Останавливается там где я его об этом не прошу (не свалю брекпоинты), и не останавливается там где я хочу (где брекпоинты стоят и очевидно этот участок кода будет исполняться, указатель текущего положения в коде перемещается хаотически. Как так можно что либо отладить?
-
ZyX
- Сообщения: 355
- ОС: Gentoo
Re: Трассировка/отладка cpp программ
kinder писал(а): ↑03.10.2009 18:25Если бы отладчик был бы вменяемым, я мог бы понять в какой момент происходит сбой, но он работает невменяемо. Совершенно невменяемо. Это даже на словах не передать как он работает. Останавливается там где я его об этом не прошу (не свалю брекпоинты), и не останавливается там где я хочу (где брекпоинты стоят и очевидно этот участок кода будет исполняться, указатель текущего положения в коде перемещается хаотически. Как так можно что либо отладить?
Пользовался kdbg, он оставил у меня хорошее впечатление, никаких проблем такого
рода не было. Можно узнать команду, с помощью которой вы компилируете? Тут уже
мелькала мысль, что надо проверить отсутствие оптимизаций: замените все -O* на
-O0, если их нет, вставьте этот ключ.
-
kinder
- Сообщения: 151
- ОС: Mandriva 2009 Spring
Re: Трассировка/отладка cpp программ
-O0 помогает :-) Спасибо!
Так уже приятно поработать в отладчике ))
А то я уж потерял надежду отладить и забил на проект.
Ошибку нашёл и исправил.
Так уже приятно поработать в отладчике ))
А то я уж потерял надежду отладить и забил на проект.
Ошибку нашёл и исправил.