Пути к файлам в отладочной инфе

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Пути к файлам в отладочной инфе

Сообщение Mirage » 07.05.2017 19:08:30

Пути к файлам в отладочной инфе почему-то относительные.
Причем относительно чего - непонятно.
Т.е. есть допустим путь в выводе Heaptrc:
$000000000042C2EC line 27 of ../../../../../../../mnt/dev/src/test/test.pas
Как понять в каком это файле?
Опция -gostabsabsincludes не влияет на эти пути.

Добавлено спустя 1 час 5 минут 42 секунды:
Похоже, пути к .pas файлам даны относительно рабочей директории при запуске fpc.
А пути к .inc файлам, типа таких:
$0000000000417899 line 888 of ../inc/system.inc
не меняются от изменения этой самой рабочей директории. Относительно чего они заданы? Относительно файла, который инклудит чтоли? Т.е. путь к этому system.inc вообще никак не определить?
Mirage
энтузиаст
 
Сообщения: 745
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Пути к файлам в отладочной инфе

Сообщение Лекс Айрин » 08.05.2017 12:41:06

Mirage писал(а):$000000000042C2EC line 27 of ../../../../../../../mnt/dev/src/test/test.pas


если брать абсолютный путь, то это должно быть , если не изменяет память, что-то типа ./mnt/dev/src/test/test.pas

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

Mirage писал(а):Т.е. путь к этому system.inc вообще никак не определить?


При запуске файла или при работе с проектом?
Если второе, то открой его в IDE и, при наведении на заголовок вкладки в редакторе исходных текстов, выйдет подсказка о пути.
Можно также выбрать в меню пункт "Сохранить как" и в диалоге должен открыться каталог расположения файла. Но этот путь не рекомендую, так как при неловком телодвижении есть шанс, что придется качать исходный код Лазаря (FPC) заново.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3714
Зарегистрирован: 19.02.2013 16:54:51

Re: Пути к файлам в отладочной инфе

Сообщение Mirage » 08.05.2017 19:16:34

Лекс Айрин писал(а):если брать абсолютный путь, то это должно быть , если не изменяет память, что-то типа ./mnt/dev/src/test/test.pas


Это не абсолютный путь. Абсолютный начинается на /.

Лекс Айрин писал(а):И, скорее всего, действительно отсчет идет от каталога запуска... но не стоит забывать, что есть еще конфигурационный файл в котором проставлены пути поиска. Плюс, есть пути поиска в Лазаре и в самом файле проекта.


От каталога запуска компилятора. Лазарь тут вообще не причем. Как и пути поиска. Эти пути я вижу уже при запуске самого приложения. В выводе Heaptrc. Или GDB. Но в случае GDB полный путь также прилагается.

Лекс Айрин писал(а):Если второе, то открой его в IDE и, при наведении на заголовок вкладки в редакторе исходных текстов, выйдет подсказка о пути.


Кого открыть-то? :) Я же не знаю как раз пути к файлу.

Лекс Айрин писал(а):Но этот путь не рекомендую, так как при неловком телодвижении есть шанс, что придется качать исходный код Лазаря (FPC) заново.


Есть такая штука - система контроля версий называется. Очень помогает от неловких телодвижений. :)
Mirage
энтузиаст
 
Сообщения: 745
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Пути к файлам в отладочной инфе

Сообщение Лекс Айрин » 08.05.2017 20:05:53

Mirage писал(а):Это не абсолютный путь. Абсолютный начинается на /.


Это мелочи..
Mirage писал(а):Кого открыть-то? :) Я же не знаю как раз пути к файлу.


а для этого НЕ надо знать путь. Надо лишь найти где в программе он упоминается и "провалиться" в него. У меня, например, System.inc расположен в каталоге D:\fpc_new\rtl\inc\
для простоты поиска я явно добавил модуль system и уже в нем нашел этот файл. С 888 строки там начинается этот текст:

Код: Выделить всё
TInitFinalRec=record
    InitProc,
    FinalProc : TProcedure;
  end; 

сам System.pp располагается в D:\fpc_new\rtl\win32\
Mirage писал(а):Есть такая штука - система контроля версий называется. Очень помогает от неловких телодвижений. :)


Не во всех случаях.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3714
Зарегистрирован: 19.02.2013 16:54:51

Re: Пути к файлам в отладочной инфе

Сообщение Mirage » 08.05.2017 20:27:48

Лекс Айрин писал(а):а для этого НЕ надо знать путь. Надо лишь найти где в программе он упоминается и "провалиться" в него.


Если я знаю в каком файле он упоминается, то я просто разрешу относительный путь в абсолютный.
Но в выводе Heaptrc только эта строка с ../inc/system.inc. И т.к. файлов с таким именем в общем случае может быть несколько, то имеется потенциальная неоднозначность.
А мне надо подсветить путь как ссылку, чтобы можно было кликом на него открыть файл. Видимо, лучшее что тут можно сделать - открывать первый найденный по имени.
Mirage
энтузиаст
 
Сообщения: 745
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Пути к файлам в отладочной инфе

Сообщение Лекс Айрин » 08.05.2017 20:50:45

Mirage, а не пробовал запустить прогу через отладчик?

А то получится как в анекдоте "А вы на шкаф заберитесь и вытяните голову".

В любом случае, System.Inc один... это модулей System.pp несколько, для каждой оси свой.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3714
Зарегистрирован: 19.02.2013 16:54:51

Re: Пути к файлам в отладочной инфе

Сообщение Mirage » 08.05.2017 21:41:47

Что даст отладчик?
Да и не могу же я обязать под отладчиком запускать, чтобы комфортно смотреть вывод Heaptrc.
Получится как в анек... тьфу, как в Эмбаркадере - "чтобы работало автодополнение нужно скомпилировать программу".
И что мешает создать еще один system.inc и включать его в другом месте?
Впрочем, "обычные" инклуды, похоже, имеют путь как у всех. Это только у system.inc и ему подобных такой видимо. А он не особо и нужен.
Mirage
энтузиаст
 
Сообщения: 745
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Пути к файлам в отладочной инфе

Сообщение Лекс Айрин » 09.05.2017 15:37:40

Mirage, постой... а накуа собранной программе знать путь на компьютере программиста?
Не зря же программисты просят продемонстрировать способ выявления ошибки, чтобы посмотреть у себя.

Mirage писал(а):И что мешает создать еще один system.inc и включать его в другом месте?


Ничего... Ты можешь и модуль System кинуть в папку с программой, тем самым подменив стандартный. (скорее всего, не везде, но факт остается фактом).
Mirage писал(а):Впрочем, "обычные" инклуды, похоже, имеют путь как у всех. Это только у system.inc и ему подобных такой видимо. А он не особо и нужен.


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

Mirage писал(а):Да и не могу же я обязать под отладчиком запускать, чтобы комфортно смотреть вывод Heaptrc.


Это от людей зависит. Но, скорее всего, не сможешь.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3714
Зарегистрирован: 19.02.2013 16:54:51

Re: Пути к файлам в отладочной инфе

Сообщение Mirage » 09.05.2017 18:24:22

Лекс Айрин писал(а):Mirage, постой... а накуа собранной программе знать путь на компьютере программиста?Не зря же программисты просят продемонстрировать способ выявления ошибки, чтобы посмотреть у себя.


Эмм, Heaptrc пользовал? Он выводит пути к файлам, где утечки могут быть. Обычно прогоняется на этапе разработки, т.е. на компе погромиста.
Mirage
энтузиаст
 
Сообщения: 745
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Пути к файлам в отладочной инфе

Сообщение Лекс Айрин » 10.05.2017 10:35:20

Mirage, но ты говорил, что не хочешь заставлять прогонять пользователя... И этим аргументировал нежелательность запуска под отладчиком...
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3714
Зарегистрирован: 19.02.2013 16:54:51

Re: Пути к файлам в отладочной инфе

Сообщение Mirage » 10.05.2017 12:25:02

Ну да. В данном случае полльзователь - разработчик. И Heaptrc все показывает при запуске и без отладчика.
Mirage
энтузиаст
 
Сообщения: 745
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Пути к файлам в отладочной инфе

Сообщение Лекс Айрин » 10.05.2017 12:43:28

Mirage, если бы все, то тема бы не возникла))) В любом случае, отладка показывает где ошибка проявилась, но не всегда где она возникла. Не думаю, что с модулем утечки что-то иное.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3714
Зарегистрирован: 19.02.2013 16:54:51

Re: Пути к файлам в отладочной инфе

Сообщение Mirage » 11.05.2017 01:09:27

Ты нить-то не теряй.:)
Проблема не в том, что Heaptrc чего-то не показывает. Проблема в том, что пути, что он показывает - относительные, что неудобно. А они берутся из отладочной инфы, которая -gl.
Впрочем, проблема решена, фича запилена, все довольны.
Mirage
энтузиаст
 
Сообщения: 745
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Пути к файлам в отладочной инфе

Сообщение Лекс Айрин » 11.05.2017 14:35:04

На самом деле, относительные пути или нет без разницы.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3714
Зарегистрирован: 19.02.2013 16:54:51

Re: Пути к файлам в отладочной инфе

Сообщение Mirage » 11.05.2017 19:05:02

В смысле нет разницы? Если путь абсолютный то все хорошо. Если относительный и непонятно что является базой, то все плохо.
Что делают относительные пути в отладочной информации вообще непонятно.
Особенно, если учесть, что базой является директория, в которой запускался компилятор. Т.е. некая сиюминутная инфа, которая утрачивается сразу же.
Возможно, можно как-то вытащить базу из экзешника, но не видел такого.
Mirage
энтузиаст
 
Сообщения: 745
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

След.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru