Good question ! But delve mainly extracts its symbols from Dwarf info. And when I try to get them with your code, I obtain this:
*~/tmp$ objdump -W main | grep -i constV <2547> DW_AT_name : main.constValueInt* We can see that the compiler puts some debug tags for const int values but not for the others. >From here, I've searched into Go SDK for dwarf information and I found in the compiler sources this (file src/cmd/compile/internal/gc/obj.go:163-189 func dumpGlobalConst): // only export integer constants for now if !t.IsInteger() { return } *So, for the moment, it seems to be a deliberate limitation of Go compiler.* Many thanks for your help @Jan and @Kurtis ! Benoît NB: just for information, I'm working with Go 1.22.3, dlv 1.22.1 , objdump 2.38) Le vendredi 31 mai 2024 à 07:30:52 UTC+2, Kurtis Rader a écrit : > Your question should have included more information such as the Go > version. Nonetheless, I don't see how Delve is able to resolve "myValueInt" > in your example. I modified your code to include non-const versions of the > symbols: > > package main > > > import "fmt" > > > const constValueStr = "abc" > const constValueInt = 12 > const constValueFloat = 1.2 > > > var varValueStr = "def" > var varValueInt = 13 > > > func main() { > fmt.Println(constValueStr, constValueInt, constValueFloat, > varValueStr, varValueInt) > } > > > I put that code in a file named "x.go" and compiled it with "go build > x.go". The "strings" command shows both "varValue" symbols but neither > "constValue" symbols: > > elvish> strings - x | grep varValue > _main.varValueInt > _main.varValueStr > elvish> strings - x | grep constValue > Exception: grep exited with 1 > [tty 156]:1:15-29: strings - x | grep constValue > > > Delve is able to resolve three of the five symbols: > > elvish> dlv exec x > Type 'help' for list of commands. > (dlv) print main.varValueInt > 13 > (dlv) print main.constValueInt > 12 > (dlv) print main.constValueFloat > Command failed: could not find symbol value for main > (dlv) print main.varValueStr > (unreadable could not read string at 0x100086f47 due to protocol error E08 > during memory read for packet $m100086f47,3) > (dlv) print main.constValueStr > Command failed: could not find symbol value for main > > > It is not obvious how Delve is able to resolve "main.constValueInt" since > that string does not appear in the binary according to the "strings - x" > command. So I think the more interesting question is how Delve is able to > resolve the "main.constValueInt" symbol but not the two other const symbols. > > > On Thu, May 30, 2024 at 1:58 AM Benoît Marguerie <bmar...@gmail.com> > wrote: > >> or, in a easier way, a full "copy/paste" example of code: >> >> package main >> >> import "fmt" >> >> const myValueStr = "try" >> const myValueInt = 12 >> >> func main() { >> fmt.Println("Instruction only to put a breakpoint") >> } >> >> >> Le jeudi 30 mai 2024 à 10:53:50 UTC+2, Benoît Marguerie a écrit : >> >>> Of course! >>> The code can be really simple like this: >>> >>> >>> *const myValueStr = "try"const myValueInt = 12* >>> >>> >>> >>> *func DoSomething() { fmt.Println("Instruction only to put a >>> breakpoint")}* >>> >>> >>> and the result with delve: >>> >>> >>> >>> >>> >>> *(dlv) print %v myValueInt12(dlv) print %v myValueStrCommand failed: >>> could not find symbol value for myValueStr* >>> >>> Benoit >>> >> -- >> 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...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/c938f107-9bca-4b8e-a10c-f8deef396c87n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/golang-nuts/c938f107-9bca-4b8e-a10c-f8deef396c87n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > > > -- > Kurtis Rader > Caretaker of the exceptional canines Junior and Hank > -- 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. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/7df5f762-815f-4e16-aa2b-80a09b9b948an%40googlegroups.com.