On Thu, Sep 27, 2018 at 11:13 AM, changkun <euryugas...@gmail.com> wrote:
> Works, thanks! Hope the information cloud added to golang.org/doc/gdb

Sent https://golang.org/cl/138182 .

Ian

> 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.

-- 
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.

Reply via email to