Голанг все еще оптимизирован после отключения оптимизации с отладкой GDB - PullRequest
0 голосов
/ 15 марта 2019

Мой main.go:

package main

import "fmt"
// main
func main() {
    fmt.Println("hello")
}

Построить его:

go build -o main -gcflags '-N -l'

Точка останова попадания:

gdb main    
b runtime.(*mheap).sysAlloc
r

В строке 540 я печатаю v, этодает мне «оптимизирован».
В строке 549 вывод подсказки, он дает мне: нет символа «подсказка» в текущем контексте.
Что странно, что я могу напечатать * h.arenaHints значение, которое выводит hint.downfalse, но в строку 550 все равно нужно перейти.

535 func (h *mheap) sysAlloc(n uintptr) (v unsafe.Pointer, size uintptr) {
536     n = round(n, heapArenaBytes)
537 
538     // First, try the arena pre-reservation.
539     v = h.arena.alloc(n, heapArenaBytes, &memstats.heap_sys)
540     if v != nil {
541         size = n
542         goto mapped
543     }
544 
545     // Try to grow the heap at a hint address.
546     for h.arenaHints != nil {
547         hint := h.arenaHints
548         p := hint.addr
549         if hint.down {
550             p -= n
551         }

Так почему отключить оптимизацию не удалось?Почему в строку 550 можно войти?

Конверт:
Голанг 1.12
Ubuntu 18.04

...