Отладка тестов с помощью delve

Я использую "go test -v" для запуска множества модульных тестов. Я хотел бы отлаживать их с помощью delve. Когда я пытаюсь запустить отладчик, я получаю сообщение об ошибке "Не удается отладить неосновной пакет". Итак, как я могу отлаживать модульные тесты с помощью отладчика delve?


person SpiderRico    schedule 12.04.2017    source источник


Ответы (2)


Используйте dlv test:

$ dlv test -- -test.v
Type 'help' for list of commands.
(dlv) continue
=== RUN   TestReadFileError
--- PASS: TestReadFileError (0.00s)
=== RUN   TestReadFile
--- PASS: TestReadFile (0.00s)
[..]
PASS
Process 8014 has exited with status 0
(dlv) quit
Process 8014 has exited with status 0

Вы также можете передать -test.run для выбора тестов для запуска (точно так же, как go test -run).

Внутри это то же самое, что и ответ Flimzy (он компилирует тестовый двоичный файл с go test -c), но более упорядоченный и не оставляет файлы .test для очистки.

person Martin Tournoij    schedule 14.04.2017
comment
Где задокументировано -test.run? Его нет в github.com/derekparker/delve/blob/master. /Документация/использование/ - person jcollum; 13.05.2020
comment
Это флаг для двоичного файла, скомпилированного с помощью go test, а не delve @jcollum. - person Martin Tournoij; 14.05.2020

Я не знаком с delve, но если он может работать с скомпилированным двоичным файлом, просто скомпилируйте свои тесты, используя флаг -c:

    -c
        Compile the test binary to pkg.test but do not run it
        (where pkg is the last element of the package's import path).
        The file name can be changed with the -o flag.

Затем запустите копаться на выходе.

person Flimzy    schedule 12.04.2017
comment
Я заставил это работать dlv exec ./pkg.test -- -gocheck.f TestLoadImage, но введите «help» для списка команд. (dlv) шаг Остановлен на: 0x7fe7886b2090 => 1: исходный код недоступен Команда не выполнена: нет исходного кода для ПК 0x7fe7886b2090 Как указать, где должен находиться исходный код? - person nicocesar; 24.03.2021