прерываться при изменении значения переменной

(1) Есть ли способ остановить выполнение программы, когда переменная меняет свое значение?

Конечно, я знаю, что мы можем установить точку останова на некоторых строках, но я бы хотел просто установить переменную, и при ее изменении остановить программу для отладки.

(2) Я также хочу увидеть ход выполнения программы (путем регистрации в файле/печати на экране). Есть ли способ запустить мою программу и увидеть то же самое (без перехода по каждой строке)?

Рассмотрим приведенный ниже пример (https://play.golang.org/p/vOvW4GAM0j)

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {

    rand.Seed(time.Now().Unix())
    r := rand.Intn(100)
    var i int

    if r%2 == 0 {
        i = 2
    } else {
        i = 1
    }

    fmt.Println(i)
}

Теперь я хочу сломаться, когда значение i изменится на ненулевое значение. Это может быть строка 16 или строка 18.

(1) Есть ли способ установить (условную) точку останова, чтобы она прерывалась при изменении значения i ИЛИ мне нужно поставить точку останова на обе строки (16 и 18)?

(2) Кроме того, я хочу знать, как выполнялась программа... например, строка 13, затем строка 15, затем строка 17, строка 18... (при условии нечетного случайного числа)

Спасибо!


person Jack    schedule 20.07.2017    source источник
comment
Пожалуйста, добавьте информацию, относящуюся к отладке в delve... потому что это сбивает с толку, когда кто-то ожидает проблемы, связанной с golang   -  person lofcek    schedule 20.07.2017
comment
присвойте значение переменной и создайте цикл, который остановится, когда переменная отличается от этого значения. Что касается потока выполнения, очень распространенной практикой является просто печать переменных и их значений в определенных важных местах вашего кода.   -  person Shinra tensei    schedule 20.07.2017
comment
Спасибо за внимание к проблеме. Я обновил свой оригинальный пост.   -  person Jack    schedule 20.07.2017


Ответы (1)


Вам следует попробовать Gogland IDE.

Он имеет полнофункциональный отладчик GO, с помощью которого можно устанавливать часы.

Отладчик

В настоящее время он находится в стадии бета-тестирования, поэтому вы можете использовать его бесплатно.

person Lukas Isselbächer    schedule 20.07.2017
comment
Спасибо за ответ. Я немного знаком с IDE Atom/VS Code. Также у нас есть полностью функциональный отладчик Go Debugger с возможностью «отслеживать» переменные. Я не против перейти на Goland IDE, если он может сломаться при изменении значения переменной. Могу ли я добиться того же с помощью Goland IDE, поскольку я не могу установить перерыв в значениях переменных с помощью кода Atom/VS. - person Jack; 30.07.2017