FarDebug — Интеграция FAR с GNU Debugger (GDB)
FarDebug — Интеграция FAR с GNU Debugger (GDB)
Анонс
Оказалось полезно и удобно. Есть два но...
1. Чтобы скачать сам отладчик - нужно идти сразу сюда: http://sourceforge.net/project/showfile ... up_id=2435
Из архива (gdb-6.8-mingw-3.tar.bz2) нужны только файлы gdb.exe (и может быть?) gdbserver.exe, должны быть доступны через PATH.
2. Что-то странное с юникодной версией плагина. Dll'ки чуть-чуть отличаются, но если заглянуть внутрь - юникодная версия экспортирует таки ансишный набор функций. И она вроде бы валит ФАР. Во всяком случае, после того как фар несколько раз свалился при попытке вызвать Evaluate (диалог показался и хоп...) - я банально перенес папку с плагином в ANSI версию и продолжил в ней. ANSI не падал.
Может быть, конечно, я чего-то напутал и распаковал в юникодный фар ансишную версию - но все равно фар падать не должен.
Оказалось полезно и удобно. Есть два но...
1. Чтобы скачать сам отладчик - нужно идти сразу сюда: http://sourceforge.net/project/showfile ... up_id=2435
Из архива (gdb-6.8-mingw-3.tar.bz2) нужны только файлы gdb.exe (и может быть?) gdbserver.exe, должны быть доступны через PATH.
2. Что-то странное с юникодной версией плагина. Dll'ки чуть-чуть отличаются, но если заглянуть внутрь - юникодная версия экспортирует таки ансишный набор функций. И она вроде бы валит ФАР. Во всяком случае, после того как фар несколько раз свалился при попытке вызвать Evaluate (диалог показался и хоп...) - я банально перенес папку с плагином в ANSI версию и продолжил в ней. ANSI не падал.
Может быть, конечно, я чего-то напутал и распаковал в юникодный фар ансишную версию - но все равно фар падать не должен.
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)
Ну там API менялся, пересобрать, наверное, надо. Сделаю.
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)
Теперь юникодная версия должна быть действительно юникодной.
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)
Я не пробовал, но, наверное, можно. Там доступна консоль отладчика, так что, теоретически, доступны все возможности GDB, через командную строку.
Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)
Есть небольшой баг - не могу открыть некоторые файлы (в т.ч. из подменю "Sources") - пишет "The specified name is invalid" C:\Folder1\Folder2\\SomeFile.c (присутствует двойной слэш).
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)
ivmai
Если модуль не очень большой, приложи, pls, в качестве примера. Только откомпилированный модуль, исходники не надо. Откомпилированный с debug info, конечно.
Если модуль не очень большой, приложи, pls, в качестве примера. Только откомпилированный модуль, исходники не надо. Откомпилированный с debug info, конечно.
Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)
вот тест (+ исходники).
- Attachments
-
- test_case.7z
- testcase for '\\'
- (4.19 KiB) Downloaded 245 times
Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)
Да, работает. Спасибо.
Ещё некоторые пожелания-предложения (на будущее):
1. не хватает команды "Finish" (или "Until return");
2. после выхода из Debug console автоматически делать Locate если до входа в Debug console курсор был в текущей позиции исполнения;
3. если нажать на Step или Next когда находишься на "}" для "main" то всегда выскакивает "No line number information available for address ♪ __mingw_CRTStartup+XXX" - можно ли его убрать?;
4. в меню "Open" автоматически добавлять ".exe" если не найден файл (как в gdb);
5. при завершении работы программы (включая Kill), автоматически закрывать окна (кроме текущего) открытые FarDebug (только если не было модификации текста в окне и курсор в том окне находиться в строке выделенной FarDebug'ом (как строка исполнения));
6. автоматически закрывать одно окно (наиболее давно на которое FarDebug не переключался, кроме текущего) открытые FarDebug (только если не было модификации текста в том окне и курсор в том окне находиться в строке выделенной FarDebug'ом) перед открытием FarDebug'ом нового окна если всего открытых (не только FarDebug'ом) окон уже 9.
Ещё раз спасибо (за хороший плагин).
Ещё некоторые пожелания-предложения (на будущее):
1. не хватает команды "Finish" (или "Until return");
2. после выхода из Debug console автоматически делать Locate если до входа в Debug console курсор был в текущей позиции исполнения;
3. если нажать на Step или Next когда находишься на "}" для "main" то всегда выскакивает "No line number information available for address ♪ __mingw_CRTStartup+XXX" - можно ли его убрать?;
4. в меню "Open" автоматически добавлять ".exe" если не найден файл (как в gdb);
5. при завершении работы программы (включая Kill), автоматически закрывать окна (кроме текущего) открытые FarDebug (только если не было модификации текста в окне и курсор в том окне находиться в строке выделенной FarDebug'ом (как строка исполнения));
6. автоматически закрывать одно окно (наиболее давно на которое FarDebug не переключался, кроме текущего) открытые FarDebug (только если не было модификации текста в том окне и курсор в том окне находиться в строке выделенной FarDebug'ом) перед открытием FarDebug'ом нового окна если всего открытых (не только FarDebug'ом) окон уже 9.
Ещё раз спасибо (за хороший плагин).
Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)
Если не может найти gdb, то при попытке открыть любой (из меню FarDebug) файл выводит "не удается найти указанный файл" - лучше бы выводило "не удается найти gdb".
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)
Спасибо за замечания. Постараюсь учесть в будущих версиях.
Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)
Пробую использовать данный плагин для отладки программ запущенных на девайсе на Андроиде. На ПК переписать arm-eabi-gdb.exe как gdb.exe, иначе плагин запускал вындовую версию GDB - отсюда первое пожелание: ввести настройки плагину, в которых указать имя gdb.exe
Если в плагине пробую выполнить любую команду - получаю "No symbol table is loaded. Use the "file" command". Пробую вручную ввести через "Debug console" команду "file a.out" - плагин "задумывается", после чего вылезает окно "FAR Debug" - "Out of memory".
Есть у плагина какая-нибудь отладка, чтобы понять что ему не хватает?
Если в плагине пробую выполнить любую команду - получаю "No symbol table is loaded. Use the "file" command". Пробую вручную ввести через "Debug console" команду "file a.out" - плагин "задумывается", после чего вылезает окно "FAR Debug" - "Out of memory".
Есть у плагина какая-нибудь отладка, чтобы понять что ему не хватает?
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)
Такое есть:mamaich wrote:пожелание: ввести настройки плагину, в которых указать имя gdb.exe
[HKEY_CURRENT_USER\Software\Far2\Plugins\FarDebug]
"GDBName"="GDB"
"GDBPresets"=""
А просто через GDB - получается? Без плагина? Если да - приведи, pls, листинг простой отладочной сессии.mamaich wrote:Есть у плагина какая-нибудь отладка, чтобы понять что ему не хватает?
Re: FarDebug - Интеграция FAR с GNU Debugger (GDB)
Да, при обычном использовании GDB все работает:
на девайсе запускаю: gdbserver localhost:123 a.out
прокидываю порт 123 с девайса на 1234 на хосте (adb forward tcp:1234 tcp:123)
далее в arm-eabi-gdb.exe:
Кстати, если взять GDB от CygWin а не от MinGW и пытаться отлаживать в нем обычные вындовые программы - тоже имеются проблемы, плагин просто виснет. Возможно, проблема тут именно в CygWin-овской сборке GDB. Увы, пересобрать GDB для mingw и target=arm-linux-elf у меня навскидку не получилось.
на девайсе запускаю: gdbserver localhost:123 a.out
прокидываю порт 123 с девайса на 1234 на хосте (adb forward tcp:1234 tcp:123)
далее в arm-eabi-gdb.exe:
Code: Select all
GNU gdb 6.6
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "--host=i686-pc-cygwin --target=arm-elf-linux".
(gdb) file a.out
Reading symbols from /project/a.out...done.
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
[New Thread 168]
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.
0xb0000100 in ?? ()
(gdb) shared
(gdb) br main
Breakpoint 1 at 0x943c: file test/test1.cpp, line 8.
(gdb) c
Continuing.
Error while mapping shared library sections:
/system/bin/linker: No medium found.
Error while mapping shared library sections:
libc.s o: No error.
Error while mapping shared library sections:
libm.s o: No error.
Breakpoint 1, main () at test/test1.cpp:8
8 UwString Str2("CP866 ▒▒▒▒▒▒",866);
(gdb) next
7 UwString Str1;
(gdb) и так далее