2010-03-24 5 views
1

Прежде всего ... это мое сообщение # 1 в этом месте, так что ... пожалуйста хорошо со мной;)Как увидеть внешние библиотеки кода при отладке

Я только недавно начали изучать Gnome приложения/libraries, и я обнаружил, что отладчики - отличный способ узнать, потому что просмотр кода помогает много понять структуру программы.

Но у меня есть проблема. Например, отладка gnome-панели я обнаружил много вызовов внешних функций (в основном, функций GTK +), и хотя притворяясь, что вижу весь код всех функций, таких как этот вызов, будет сумасшедшим, есть много чего будет очень интересно посмотреть в действии. Проблема в том, что отладчик не загружает код этих библиотек, и он не может показать его мне, так как он показывает номер строки, где выполняется выполнение.

Я использую Nemiver, и когда он пытается сделать , введите во внешнюю функцию, которую он утверждает, потому что он не может найти файл, который должен быть где-то. Например, попытка ввести в gtk_window_set_default_icon_name он пытается загрузить /build/buildd/gtk+2.0-2.16.1/gtk/gtkwindow.c и призывая XSetIOErrorHandler, ../../src/ErrHndlr.c ,

Так что теперь я думаю, что я делаю что-то неправильно ... Почему Nevimer ищет эти исходные файлы в этих местах?

В моей системе даже нет/build/buildd/folders ... и я не знаю, что я делаю что-то неправильно или мне нужно установить somethig или что-то еще.

Любое предложение? Как вы отлаживаете такие приложения?

С наилучшими пожеланиями и большое спасибо за ваше время - и простите меня, если мой английский плохой.

ответ

0

Ну ... Вопрос был более простым, чем я думал.

Поскольку Nemiver пытался получить доступ к некоторым несуществующим папкам, я думал, что создание их будет вариантом, и это было xDDDDD.

У Nemiver есть возможность загрузить исходные файлы в Файл -> Файл с открытым исходным кодом [Я действительно не знаю, так ли это имя, потому что я вижу программу на испанском языке], и когда вы выбираете это диалог открыт, и один из его двух основных вариантов - выбрать, откуда вы хотите искать исходный файл: из исполняемого файла или из вашей файловой системы ...Я выбрал от исполняемого файла и там я увидел странные пути, начиная с /build. Тогда я предполагаю, что исполняемый файл знает, где были исходные файлы, которые были использованы для его сборки ...

Ну, подведение итогов: Я удовлетворил предположения Nemiver об источниках, и теперь все работает автоматически.

Например: Поскольку Nemiver говорил мне, что GTK + файлы были в /build/buildd/gtk+2.0-2.16.1/gtk/ Я создал /сборки/buildd и я ve загрузил gtk + (2.16.1). Затем я распаковал его в buildd с именем gtk + 2.0-2.16.1, и теперь, когда я пытаюсь войти в функцию GTK +, Nemiver автоматически загружает соответствующий файл и показывает мне, что это выполнение шаг за шагом :)

0

Отладчик выполняет строки в исходном файле, которые при компиляции (с включенными отладочными символами) генерируют двоичный файл. В случае внешних библиотек они отправляются как отдельные entites (объектные файлы) и связаны с текущим кодом для создания исполняемого файла.

Если отладчик мог выполнять итерацию по исходным файлам, можно было бы сгенерировать исходные файлы, соответствующие библиотеке, и это сломало бы многие профессиональные контракты. Поэтому я не уверен, что это возможно.

Однако библиотека GTK, о которой вы говорите, является открытым исходным кодом, а вызовы API документированы here. Таким образом, IMO лучше и экономит время, чтобы узнать, что вызывает конкретная функция в библиотеке, и соглашайтесь с остальной частью вашего кода.

Смежные вопросы