J'espérais que quelqu'un pourrait m'expliquer un petit détail de la trace de la pile de Golang, qui a été la plupart du temps ignorée par les tutoriels que j'ai lus. Exemple d'une trace de la pile je me suis:Détails de trace de la pile Golang
goroutine 6 [running]: net/http.(*conn).serve.func1(0xc42005ad00) /usr/local/go/src/net/http/server.go:1491 +0x12a panic(0x8079e0, 0xc42000c0c0) /usr/local/go/src/runtime/panic.go:458 +0x243 usos-shop-back/usosapi.GetJson(0x0, 0x7d7820, 0xc4202f6d00, 0x0, 0x0) /root/go/src/usos-shop-back/usosapi/usos-hackery.go:20 +0x38 ... ... ...
Je suis vraiment curieux de savoir quel est le sens de +0x12a
, +0x243
, +0x38
après le numéro d'une ligne dans le code où l'erreur est survenue.
Merci, R.C.
P.S .: la panique a été provoquée par un pointeur null à func GetJson(*http.Response, interface{}) error
C'est la différence entre le PC de la pile et le PC d'entrée de la fonction. (le format de trace de pile spécifique à l'implémentation n'est probablement pas un bon sujet de question pour StackOverflow) – JimB
@JimB, merci, j'ai quelques articles à lire. Cependant, j'aimerais savoir pourquoi ce n'est pas un bon sujet de discussion pour SO? Cela mène-t-il à des guerres de flamme? Il y a un autre XYZexchange pour ça? –
Cette rubrique est plus d'une zone grise, principalement parce que les détails d'implémentation peuvent ne pas s'appliquer à toutes les implémentations populaires, peuvent changer et parfois changer assez rapidement, laissant les questions ou réponses périmées et/ou trompeuses. Ce n'est pas que le format de trace de la pile est susceptible de changer à ce stade pour go1, mais par exemple une autre sortie GODEBUG a changé de manière significative entre les versions, car elle doit refléter l'implémentation. – JimB