Попытка использовать gdb (и cgdb) для отладки программ в go (golang), но, похоже, есть проблемы
Я знаю, что команда go не будет поддерживать GDB очень хорошо. Тем не менее, кажется, что иногда это работает, поэтому прежде чем я сдаюсь, я хочу посмотреть, работает ли он в этой программе.
Я пытался использовать его для отладки моей программы в Mac OS X Mavericks, и я, к сожалению, не смог проверить свою программу во время выполнения. Я использую Mac OS X Mavericks 10.9.4 и моя версия Go является версия Go Go1.2.2 Darwin/ AMD64.
Вот что произойдет, если я сделаю gdb my_binary
на моем двоичном компьютере, а затем попробуйте запустить его:
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from hydra...
warning: `/var/folders/00/0sdwh000h01000cxqpysvccm0035qk/T/go-build728316890/crypto/x509/_obj/root_darwin.cgo2.o': can't open to read symbols: No such file or directory.
warning: `/var/folders/00/0sdwh000h01000cxqpysvccm0035qk/T/go-build728316890/net/_obj/cgo_unix.cgo2.o': can't open to read symbols: No such file or directory.
warning: `/var/folders/00/0sdwh000h01000cxqpysvccm0035qk/T/go-build728316890/runtime/cgo/_obj/gcc_amd64.o': can't open to read symbols: No such file or directory.
warning: `/var/folders/00/0sdwh000h01000cxqpysvccm0035qk/T/go-build728316890/runtime/cgo/_obj/gcc_darwin_amd64.o': can't open to read symbols: No such file or directory.
warning: `/var/folders/00/0sdwh000h01000cxqpysvccm0035qk/T/go-build728316890/runtime/cgo/_obj/gcc_setenv.o': can't open to read symbols: No such file or directory.
warning: `/var/folders/00/0sdwh000h01000cxqpysvccm0035qk/T/go-build728316890/runtime/cgo/_obj/gcc_util.o': can't open to read symbols: No such file or directory.
warning: `/var/folders/m9/3tx5tfkx02z9jkwdz0lkg85cj4gbmq/T/go-build297950324/github.com/alecthomas/gozmq/_obj/zmq.cgo2.o': can't open to read symbols: No such file or directory.
warning: `/var/folders/m9/3tx5tfkx02z9jkwdz0lkg85cj4gbmq/T/go-build297950324/github.com/alecthomas/gozmq/_obj/zmq_3_x.cgo2.o': can't open to read symbols: No such file or directory.
(no debugging symbols found)...done.
Строка, на которой я хочу остановиться, является последней:
(no debugging symbols found)...done.
Я неправильно скомпилировал свою программу go? Есть ли флаги, которые могли бы сделать эту работу?
Я только сделал go build my_program
но кажется, что некоторые флаги или что-то могло заставить это работать?
Я был в состоянии заставить GDB работать на очень простых программах, но на этой гораздо большей программе он не работает и выдает вышеупомянутую ошибку. Кто-то знает, почему это может быть? Кто-нибудь смог заставить его работать для больших программ с большим количеством библиотек, пакетов и тому подобного?
Я понимаю, что это может не сработать, но я хотел попробовать, спросив сообщество.
(Я хотел бы также использовать другой отладчик, если таковой имеется).
(У меня также была такая же проблема с cgdb).
(Я также открыт для использования любого другого отладчика, который позволяет мне видеть значения переменных, точек останова и основных функций, подобных этому, может быть, также изучить go-рутины было бы здорово. Для Mac, конечно)
1 ответ
GDB сообщает вам, что там нет файлов и каталогов, в которых он может найти символы отладки. Из названий это временные рабочие каталоги Go.
Есть опция командной строки -work
в go build
это описывается следующим образом:
распечатайте имя временного рабочего каталога и не удаляйте его при выходе.
так что это может работать, за счет некоторой периодической ручной очистки.