Maison > développement back-end > Golang > Go Panic : Comment déboguer les erreurs « Adresse mémoire invalide ou déréférencement de pointeur nul » ?

Go Panic : Comment déboguer les erreurs « Adresse mémoire invalide ou déréférencement de pointeur nul » ?

Linda Hamilton
Libérer: 2024-12-21 04:45:10
original
831 Les gens l'ont consulté

Go Panic: How to Debug

Go : Panique : Erreur d'exécution : adresse mémoire non valide ou déréférencement de pointeur nul

Question :

Lors de l'exécution d'un programme Go, je rencontre ce qui suit panique :

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x38 pc=0x26df]

goroutine 1 [running]:
main.getBody(0x1cdcd4, 0xf800000004, 0x1f2b44, 0x23, 0xf84005c800, ...)
        /Users/matt/Dropbox/code/go/scripts/cron/fido.go:65 +0x2bb
main.getToken(0xf84005c7e0, 0x10)
        /Users/matt/Dropbox/code/go/scripts/cron/fido.go:140 +0x156
main.main()
        /Users/matt/Dropbox/code/go/scripts/cron/fido.go:178 +0x61
Copier après la connexion

Malgré mes tentatives de détection des erreurs, je ne parviens pas à identifier la cause. Le programme s'exécute sur une machine sans accès aux serveurs API répertoriés dans le code, mais j'ai anticipé une réponse d'erreur appropriée.

Pouvez-vous m'aider à résoudre ce problème ?

Réponse :

La panique est probablement causée par l'accès à res.Body avant de vérifier une erreur non nulle dans la méthode client.Do(). Selon la documentation de func (*Client) Do, une erreur est renvoyée si elle est causée par la politique du client ou par une erreur de protocole HTTP. Cependant, une réponse non-2xx ne provoque pas d'erreur et le champ resp.Body contient toujours une valeur non nulle.

Pour résoudre le problème, vérifiez l'erreur immédiatement après avoir appelé client.Do() :

res, err := client.Do(req)

if err != nil {
    return nil, err
}
defer res.Body.Close()
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal