FarDebug — Интеграция FAR с GNU Debugger (GDB)

Здесь можно обсудить ваш любимый плагин.
mamaich
Posts: 10
Joined: Thu 17 Jun, 2010 06:22

Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)

Post by mamaich » Thu 17 Jun, 2010 10:08

Latest post of the previous page:

При удаленной отладке через gdbserver сразу после присоединения, выполнение находится где-то внутри системы, а не в программе: "0xb0000100 in ?? ()". И чтобы "попасть" в свой код - надо ставить брейк, например на main и делать "c". Но это мелочи, я планировал данные команды выполнять через "Debug console", навесив на них какой-нибудь макрос.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)

Post by Max Rusov » Thu 17 Jun, 2010 10:24

mamaich wrote:Возможно, проблема тут именно в CygWin-овской сборке GDB.
Возможно. Минимальная версия GDB на которой я тестировал - 6.8, возможно дело в этом. Если скажете, где скачать CygWin'овскую сборку GDB для Win32 - я посмотрю в чем проблема.

mamaich
Posts: 10
Joined: Thu 17 Jun, 2010 06:22

Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)

Post by mamaich » Thu 17 Jun, 2010 11:54

Можно взять например отсюда: ftp://ftp.esat.net/mirrors/.0/sources.r ... -2.tar.bz2
(пробелы пришлось вставить - иначе форум не пропускало)
Для работы потребуется cygwin1.dll - ftp://ftp.esat.net/mirrors/.0/sources.r ... -1.tar.bz2. Можно не мучаться с отдельными архивами, а запустить setup.exe с http://www.cygwin.com и он сам поставит что требуется.
Можешь сделать вывод всего "общения" с gdb.exe в лог? Вдруг он задает какой-нибудь вопрос типа "are you sure (y/n)?" и ждет :)
Last edited by mamaich on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: links

mamaich
Posts: 10
Joined: Thu 17 Jun, 2010 06:22

Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)

Post by mamaich » Thu 17 Jun, 2010 11:56

Залил гугловский gdb сюда: http://slil.ru/29348748

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)

Post by Max Rusov » Thu 17 Jun, 2010 12:59

А ларчик просто открывался. CygWin'овский gdb использует с качестве libe-break #10, а MinGW - #13. По крайней мере, отладка Win32 приложений у меня заработала. Попробуй это, если будет работать соберу новую версию.

mamaich
Posts: 10
Joined: Thu 17 Jun, 2010 06:22

Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)

Post by mamaich » Thu 17 Jun, 2010 13:19

Спасибо за быстрый ответ - перестало виснуть, программа запускается, трассировать можно, но вылезла еще одна проблема - не открывается исходник. Плагин воспринимает пути к исходникам в виде c:\dir1\dir2, а gdb - в виде /cygdrive/c/dir2/dir2, за счет этого при трассировке - плагин просит указать путь к исходнику ("Source file not found: test1.cpp" - "Path to source file"), я ввожу u:\cygwin\project\test, получаю что-то типа "Warning: /project/u: No such file or directory. Warning: /cygwin/project/test: No such file or directory." (эти два ворнинга - оба в одном окне, символ ":" в *nix - разделитель в переменных окружения, похоже по нему GDB строку разбил на две). Если копирую исходник в текущий каталог и ввожу просто ".", появляется на секунду окно "Wait for debugger", уходит - и всё, файл не открывается, вернулись на "панели" ФАРа. Похоже в случае с CygWin-овским GDB надо переводить пути из формата windows в формат *nix.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)

Post by Max Rusov » Thu 17 Jun, 2010 13:26

Ну, у меня отладка Win32 приложений заработала (тестировал на FAR'е). Правда, я собирал его MinGW gcc, возможно, он генерит отладочную информацию по другому. Если сделаешь небольшой test-case (сорцы + откомпилированный с debug-info exe'шник), на котором ошибка воспроизводится, я посмотрю.

mamaich
Posts: 10
Joined: Thu 17 Jun, 2010 06:22

Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)

Post by mamaich » Thu 17 Jun, 2010 13:27

Еще насчет путей к исходникам.
Если выбрать в плагине "Windows" - "Sources", в нем пути выглядят так: test1.cpp │ \project\test
В реальности - у меня проект находится в каталоге /project/test относительно CygWin, а на диске - в x:\cygwin\project\test, Cygwin установлен в x:\cygwin, этот каталог считается в cygwin за "корневой", каталоги лежащие вне его можно получить, добавив к ним /cygdrive/буква-диска и поменяв слеши на правые, например x:\dir1\dir2 станет /cygdrive/x/dir1/dir2, а c:\cygwin\dir3 станет либо /dir3, либо /cygdrive/x/cygwin/dir3 (доступна по обоим путям).
Путь с установленныс cygwin можно найти в реестре:

Code: Select all

[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2]
"cygdrive prefix"="/cygdrive"
"cygdrive flags"=dword:00000022

[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/]
"native"="u:\\cygwin"
"flags"=dword:0000000a

mamaich
Posts: 10
Joined: Thu 17 Jun, 2010 06:22

Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)

Post by mamaich » Thu 17 Jun, 2010 13:37

Выложил скомпилированный "hello world" - http://slil. ru/29349445
Для воспроизведения проблемы нужен GDB от гугла, http://slil. ru/29348748
В плагине выбрать "Open", ввести a.out, нажать "Load". После этого в "Windows", "Sources", выбрать hello.cpp - далее что бы не вводить в качестве каталога, исходник не откроется.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)

Post by Max Rusov » Thu 17 Jun, 2010 13:58

Да, я понял. Что нибудь придумаю.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)

Post by Max Rusov » Thu 17 Jun, 2010 14:53

Попробуй это. Для CYGWin'овского GDB нужно ввести ключ в реестр:
[HKEY_CURRENT_USER\Software\Far2\Plugins\FarDebug]
"CYGWinRoot"="C:\\CYGWin"

mamaich
Posts: 10
Joined: Thu 17 Jun, 2010 06:22

Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)

Post by mamaich » Thu 17 Jun, 2010 22:03

Спасибо, последняя версия работает, но есть небольшой баг: при первом запуске плагина, выборе "Open", имя файла, "Load", выходит сообщение "GDB" - "No symbol table is loaded. Use the "file" command.". После этого в списке "Windows"-"Sources" пусто. Если сразу же выполнить второй раз "Open"-"Load" - файл загружается нормально (появляются сырцы, можно ставить бряки и тп).
Сессия отладки нативного приложения на андроиде выглядит таким образом (можно добавить в ридми), думаю аналогично будет работать любая удаленная отладка.
1. Запустить на девайсе gdbserver ("gdbserver localhost:123 программа"), в adb "пробросить" tcp порты ("adb forward tcp:1234 tcp:123").
2. В плагине "Open", "Load" (2 раза, из-за указанного выше мелкого бага)
3. В плагине "Debug Console", ввести "target remote localhost:1234" (1234 - порт gdbserver, указанный в п.1)
4. Установить нужные брейкпоинты
5. В "Debug Console" ввести "с". Если этого не выполнить, а выбрать в плагине "Run" - получаем сообщение "GDB" - "Don't know how to run. Try "help target".", после чего gdbserver падает
6. После выполнения "c" - программа останавливается на нашем брейкпоинте
7. Далее - в плагине выбираем "Locate", выбираем путь к каталогу с исходниками, открывается нужный нам файл - и пошла отладка.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)

Post by Max Rusov » Thu 17 Jun, 2010 22:27

Круть. Написать что нибудь для винмобайла на FPC что ли?...

mamaich
Posts: 10
Joined: Thu 17 Jun, 2010 06:22

Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)

Post by mamaich » Fri 18 Jun, 2010 02:00

Насчет FPC для WM - вполне заработает, я правда не помню собирал ли кто-нибудь для WM GdbServer.
Еще пожелание есть: можешь добавить, например, ключ реестра, в котором указать для плагина каталоги для поиска файлов исходников. Чтобы при каждом рестарте ФАРа не выбиратьих заново?
Ну и в ридми добавить информацию обо всех использующихся ключах.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)

Post by Max Rusov » Fri 18 Jun, 2010 16:15

Попробуй добавить в GDBPresets:
[HKEY_CURRENT_USER\Software\Far2\Plugins\FarDebug]
"GDBPresets"="directory /cygdrive/c/..."
Правда, не уверен что это сработает. Presets исполняются сразу после загрузки GDB, а тут, вроде, надо после загрузки отлаживаемого модуля...

Игорь Юдинцев
Posts: 725
Joined: Sun 03 Apr, 2005 22:00
Location: Казань
Been thanked: 1 time

Re: FarDebug — Интеграция FAR с GNU Debugger (GDB)

Post by Игорь Юдинцев » Sun 26 Sep, 2010 15:07

Есть такая хотелка: использовать FarHints API для показа значения переменной под курсором, т.е. повесить функциональность менюшки «FAR Debug | Вычислить...» на хинты.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: FarDebug — Интеграция FAR с GNU Debugger (GDB)

Post by Max Rusov » Sun 26 Sep, 2010 15:16

Есть такое в планах. Но это надо FarHints подкрутить сначала.

Post Reply

Return to “Обсуждение плагинов”