Works, thanks! Hope the information cloud added to golang.org/doc/gdb On Thursday, September 27, 2018 at 8:02:20 PM UTC+2, David Chase wrote: > > You did nothing wrong, in 1.11 we started compressing the debug > information to reduce binary size, and gdb on the Mac does not understand > compressed DWARF. > We had hoped that the several speedbumps involved in running gdb on modern > OSX would have caused most users to move to Delve, which handles compressed > DWARF, but obviously this was overoptimistic. > > The workaround is to also specify "-ldflags=-compressdwarf=false" which > does exactly what it claims. > If you wanted to do this generally (so you did not need to remember), > > export GOFLAGS="-ldflags=-compressdwarf=false" > > You might try not specifying "-N -l" and see whether optimized binaries > have adequate debugging information; it's not perfect, but we are hoping to > get it good enough that core dumps and probes from/on running applications > will yield useful information. > > Sorry for the inconvenience. > > > On Thursday, September 27, 2018 at 9:38:23 AM UTC-4, changkun wrote: >> >> Debugging with GDB works fine on Linux, it is able to show everything >> with the breakpoint. However, nothing appears on macOS. >> >> A simple Go program, say `main.go`: >> >> package main >> >> func main() { >> println("hello, world!") >> } >> >> >> Then build with >> >> go build -gcflags "-N -l" -o main main.go >> >> >> Using GDB: >> >> $ gdb main >> GNU gdb (GDB) 8.2 >> (...) >> Reading symbols from main...(no debugging symbols found)...done. >> Loading Go Runtime support. >> (gdb) source /usr/local/Cellar/go/1.11/libexec/src/runtime/runtime- >> gdb.py >> Loading Go Runtime support. >> (gdb) info files >> Symbols from "/Users/changkun/Desktop/demo/main". >> Local exec file: >> `/Users/changkun/Desktop/demo/main', file type mach-o-x86-64. >> Entry point: 0x1049e20 >> 0x0000000001001000 - 0x000000000104dfcf is .text >> 0x000000000104dfe0 - 0x0000000001077344 is __TEXT.__rodata >> (...) >> (gdb) b *0x1049e20 >> Breakpoint 1 at 0x1049e20 >> (gdb) >> >> >> There is no `at` in the GDB outputs, the version of Go is `go version >> go1.11 darwin/amd64` and: >> >> $ ls -al /usr/local/bin | grep go >> lrwxr-xr-x 1 changkun admin 24 Aug 25 16:37 go -> ../ >> Cellar/go/1.11/bin/go >> >> >> >> ====== >> >> Same process in linux environment: >> >> docker run -it --rm --name golang golang:1.11 bash >> >> then entering container install `gdb` >> >> root@1326d3f1a957:/# gdb main >> GNU gdb (Debian 7.12-6) 7.12.0.20161007-git >> (...) >> (gdb) info files >> Symbols from "/main". >> Local exec file: >> `/main', file type elf64-x86-64. >> Entry point: 0x44a2e0 >> 0x0000000000401000 - 0x000000000044ea8f is .text >> (...) >> (gdb) b *0x44a2e0 >> Breakpoint 1 at 0x44a2e0: file >> /usr/local/go/src/runtime/rt0_linux_amd64.s, line 8. >> (gdb) >> >> >> Linux is able to show with a breakpoint, `(gdb) b *0x44a2e0 >> Breakpoint 1 at 0x44a2e0: file >> /usr/local/go/src/runtime/rt0_linux_amd64.s, line 8.` >> >> What did I do wrong on macOS? How can I perform low-level debugging for >> Go programs on macOS with GDB? >> >
-- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.