Трассировка/отладка cpp программ (KDevelop)

Модератор: Модераторы разделов

kinder
Сообщения: 151
ОС: Mandriva 2009 Spring

Трассировка/отладка cpp программ

Сообщение kinder »

С целью изучить/разобраться в исходном коде некоторой программы (в данном случае Okular), хотелось бы запустить программу в отладчике.
Установил kdevelop, штука красивая, как редактор его я уже оценил, как отладчик пока оценить не получилось.
Не ясно как откомпилировать и запустить в отладчике проект. Помогите пожайлуста разобраться на примере окуляра.
Спасибо сказали:
MakkyWelly
Сообщения: 97
ОС: по обстоятельствам :)

Re: Трассировка/отладка cpp программ

Сообщение MakkyWelly »

Примерно так:

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 okular
die sheep! die to reverse the system
you accept (reject, respect);
next step,
kill next sacrifice, each sacrifice
Спасибо сказали:
kinder
Сообщения: 151
ОС: Mandriva 2009 Spring

Re: Трассировка/отладка cpp программ

Сообщение kinder »

На примере окуляра ещё не пробовал, ему чего то не хватало для компиляции, разбираться не стал.
Попытался свой кусочек кода отладить используя kdbg (что кажись есть графическая надстройка к gdb). Не получилось. При нажатии F10 указатель перемещается в хаотическом порядке и по несколько раз попадает на одни и те же строки.
Спасибо сказали:
kinder
Сообщения: 151
ОС: Mandriva 2009 Spring

Re: Трассировка/отладка cpp программ

Сообщение kinder »

Может ли быть проблема с отладкой из-за оптимизации кода компилятором? Но ведь логично при ключе -g не оптимизировать код...
Ибо указатель при нажатии F10 идёт вовсе не последовательно, а скачет то вперёд, то назад и состояние переменных изменяется не в соответствии с положением указателя..
Спасибо сказали:
MakkyWelly
Сообщения: 97
ОС: по обстоятельствам :)

Re: Трассировка/отладка cpp программ

Сообщение MakkyWelly »

Может попробывать посмотреть в консольном отладчике?
С целью изучить/разобраться в исходном коде некоторой программы (в данном случае Okular), хотелось бы запустить программу в отладчике.

Не совсем понимаю - почему нельзя смотреть на исходный код? Почему нужно компилировать и смотреть в отладчике? Есть какая-то ошибка при вызове к.-л. функции?
die sheep! die to reverse the system
you accept (reject, respect);
next step,
kill next sacrifice, each sacrifice
Спасибо сказали:
kinder
Сообщения: 151
ОС: Mandriva 2009 Spring

Re: Трассировка/отладка cpp программ

Сообщение kinder »

Во первых в отладчике понятнее (мне по крайней мере), тем более я тут человек в этой области новый, только недавно с Qt познакомился. Си я конечно и раньше видел, но последний раз я что то на нём писал году так в 2003 используя WinAPI или MFC.

А проблемы есть, я уже несколько дней с проблемой бьюсь и решить не могу. При использовании djvuapi наблюдаются анамалии. Извинете за внешнии ссылки, переписывать не хочтеся, мне кажется более подробно описал проблему тут: http://forum.sources.ru/index.php?showtopic=283620

Во вторых отладчик нужен чтобы свои каракули отлаживать, а на примере окуляра хотел с отладчиком освоиться.
Спасибо сказали:
kinder
Сообщения: 151
ОС: Mandriva 2009 Spring

Re: Трассировка/отладка cpp программ

Сообщение kinder »

Если бы отладчик был бы вменяемым, я мог бы понять в какой момент происходит сбой, но он работает невменяемо. Совершенно невменяемо. Это даже на словах не передать как он работает. Останавливается там где я его об этом не прошу (не свалю брекпоинты), и не останавливается там где я хочу (где брекпоинты стоят и очевидно этот участок кода будет исполняться, указатель текущего положения в коде перемещается хаотически. Как так можно что либо отладить?
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: Трассировка/отладка cpp программ

Сообщение ZyX »

kinder писал(а):
03.10.2009 18:25
Если бы отладчик был бы вменяемым, я мог бы понять в какой момент происходит сбой, но он работает невменяемо. Совершенно невменяемо. Это даже на словах не передать как он работает. Останавливается там где я его об этом не прошу (не свалю брекпоинты), и не останавливается там где я хочу (где брекпоинты стоят и очевидно этот участок кода будет исполняться, указатель текущего положения в коде перемещается хаотически. Как так можно что либо отладить?

Пользовался kdbg, он оставил у меня хорошее впечатление, никаких проблем такого
рода не было. Можно узнать команду, с помощью которой вы компилируете? Тут уже
мелькала мысль, что надо проверить отсутствие оптимизаций: замените все -O* на
-O0, если их нет, вставьте этот ключ.
Спасибо сказали:
kinder
Сообщения: 151
ОС: Mandriva 2009 Spring

Re: Трассировка/отладка cpp программ

Сообщение kinder »

-O0 помогает :-) Спасибо!
Так уже приятно поработать в отладчике ))
А то я уж потерял надежду отладить и забил на проект.
Ошибку нашёл и исправил.
Спасибо сказали: