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 <[email protected]>
> 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 [email protected].
>> 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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/7df5f762-815f-4e16-aa2b-80a09b9b948an%40googlegroups.com.