Maison >développement back-end >Golang >Comment déboguer les fonctions Golang distribuées ?

Comment déboguer les fonctions Golang distribuées ?

王林
王林original
2024-04-17 17:42:02786parcourir

Cet article fournit des conseils sur le débogage des fonctions Golang distribuées en : Utilisation de la journalisation : placez des instructions de journal pour suivre l'exécution de la fonction. Utiliser le débogueur : activez le débogueur pour le débogage à distance pendant que la fonction est en cours d'exécution. Utiliser la journalisation à distance : affichez la journalisation des fonctions dans Stackdriver Logging.

如何调试分布式 Golang 函数?

Débug des fonctions Golang distribuées

Les fonctions Golang peuvent être déployées en tant que fonctions sans serveur via Google Cloud Functions. Ces fonctions peuvent être exécutées dans un environnement distribué, ce qui rend le débogage difficile. Cet article fournit des conseils pratiques pour le débogage des fonctions Golang distribuées.

Utiliser Logging

Logging est le moyen le plus basique de déboguer les applications Go. Placez soigneusement les instructions log pour retracer l'exécution de la fonction et identifier les erreurs éventuelles. Par exemple : log 语句,以跟踪函数的执行并识别任何错误。例如:

package main

import (
    "context"
    "fmt"
    "log"
)

func main() {
    ctx := context.Background()
    // ...
    log.Printf("Received name: %s", name)
    // ...
}

使用调试器

Cloud Functions 提供了一种内置的调试器,可以让你在函数执行时对其进行远程调试。按照以下步骤启用它:

  1. 在 Cloud Functions 控制台中,打开函数的详细信息页面。
  2. 点击 "编辑代码"。
  3. 选择 "调试" 选项卡。
  4. 在代码编辑器中添加断点。
  5. 点击 "启动调试器"。

使用远程日志记录

Cloud Functions 会将函数的日志记录到 Stackdriver Logging。你可以在 Google Cloud 控制台中查看这些日志:

  1. 访问 https://console.cloud.google.com/logs/viewer。
  2. 选择你的项目和 Cloud Functions 日志组。
  3. 过滤日志以查看特定函数的日志记录。

实战案例

考虑一个简单的 Golang 函数,它根据传入的请求计算和返回一个数字:

package main

import (
    "context"
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        name := r.FormValue("name")
        if name == "" {
            http.Error(w, "Missing name parameter", http.StatusBadRequest)
            return
        }
        fmt.Fprintf(w, "Hello, %s!", name)
    })
}

要调试此函数,你可以:

  1. 在代码的适当位置添加 logrrreee
  2. Utilisation d'un débogueur
  3. Cloud Functions fournit un débogueur intégré qui vous permet de déboguer à distance les fonctions pendant leur exécution. Suivez ces étapes pour l'activer :
    1. Dans la console Cloud Functions, ouvrez la page de détails de la fonction.
    2. Cliquez sur "Modifier le code".

    Sélectionnez l'onglet "Débogage".

    🎜Ajoutez des points d'arrêt dans l'éditeur de code. 🎜🎜Cliquez sur "Lancer le débogueur". 🎜🎜🎜🎜Utiliser la journalisation à distance🎜🎜🎜Cloud Functions enregistrera la fonction dans Stackdriver Logging. Vous pouvez consulter ces journaux dans la console Google Cloud : 🎜
      🎜Visitez https://console.cloud.google.com/logs/viewer. 🎜🎜Sélectionnez votre projet et votre groupe de journaux Cloud Functions. 🎜🎜Filtrez les journaux pour voir la journalisation de fonctions spécifiques. 🎜🎜🎜🎜Exemple pratique🎜🎜🎜Considérons une simple fonction Golang qui calcule et renvoie un nombre en fonction d'une requête entrante : 🎜rrreee🎜Pour déboguer cette fonction, vous pouvez : 🎜
        🎜Ajouter à l'endroit approprié dans le code Instruction log. 🎜🎜Fonction de déploiement. 🎜🎜Déclenchez une fonction et envoyez-lui une requête. 🎜🎜 Vérifiez la journalisation dans Stackdriver Logging dans Cloud Console. 🎜🎜 Utilisez le débogueur pour définir des points d'arrêt et déboguer à distance si nécessaire. 🎜🎜🎜En utilisant ces conseils, vous pouvez déboguer facilement et efficacement les fonctions Golang distribuées pour vous assurer qu'elles fonctionnent correctement et répondent à vos exigences. 🎜

    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:
    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