mirror of
https://github.com/jbranchaud/til
synced 2026-01-07 09:08:01 +00:00
Add Redirect File To Stdin During Delve Debug as a Go TIL
This commit is contained in:
@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
|
|||||||
|
|
||||||
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
|
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
|
||||||
|
|
||||||
_1535 TILs and counting..._
|
_1536 TILs and counting..._
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -407,6 +407,7 @@ _1535 TILs and counting..._
|
|||||||
- [Not So Random](go/not-so-random.md)
|
- [Not So Random](go/not-so-random.md)
|
||||||
- [Parse A String Into Individual Fields](go/parse-a-string-into-individual-fields.md)
|
- [Parse A String Into Individual Fields](go/parse-a-string-into-individual-fields.md)
|
||||||
- [Parse Flags From CLI Arguments](go/parse-flags-from-cli-arguments.md)
|
- [Parse Flags From CLI Arguments](go/parse-flags-from-cli-arguments.md)
|
||||||
|
- [Redirect File To Stdin During Delve Debug](go/redirect-file-to-stdin-during-delve-debug.md)
|
||||||
- [Replace The Current Process With An External Command](go/replace-the-current-process-with-an-external-command.md)
|
- [Replace The Current Process With An External Command](go/replace-the-current-process-with-an-external-command.md)
|
||||||
- [Sleep For A Duration](go/sleep-for-a-duration.md)
|
- [Sleep For A Duration](go/sleep-for-a-duration.md)
|
||||||
- [Sort Slice In Ascending Or Descending Order](go/sort-slice-in-ascending-or-descending-order.md)
|
- [Sort Slice In Ascending Or Descending Order](go/sort-slice-in-ascending-or-descending-order.md)
|
||||||
|
|||||||
39
go/redirect-file-to-stdin-during-delve-debug.md
Normal file
39
go/redirect-file-to-stdin-during-delve-debug.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# Redirect File To Stdin During Delve Debug
|
||||||
|
|
||||||
|
I have a go program that accepts input from stdin. The way I've been running
|
||||||
|
the program as I develop it is to redirect the output of some sample files to
|
||||||
|
the program.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ go run . < sample/001.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
When I then go to debug this program with
|
||||||
|
[Delve](https://github.com/go-delve/delve), I'd still like to be able to
|
||||||
|
redirect a file into the program to reproduce the exact behavior I'm seeing.
|
||||||
|
|
||||||
|
The following won't work:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ dlv debug . < samples/001.txt
|
||||||
|
Stdin is not a terminal, use '-r' to specify redirects for the target process or --allow-non-terminal-interactive=true if you really want to specify a redirect for Delve
|
||||||
|
```
|
||||||
|
|
||||||
|
Fortunately, `dlv` sees what I'm trying to do and makes a recommendation. The
|
||||||
|
`-r` flag can be used to specify redirects for the target process. The [`dlv`
|
||||||
|
redirect
|
||||||
|
docs](https://github.com/go-delve/delve/blob/master/Documentation/usage/dlv_redirect.md)
|
||||||
|
explain that `-r` can be passed a `source:destination`. The `source` is `stdin`
|
||||||
|
by default, but can also be `stdout` and `stderr`.
|
||||||
|
|
||||||
|
I can redirect my file into the debugging session of my program like so:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ dlv debug . -r stdin:samples/001.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Or even more succinctly:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ dlv debug . -r samples/001.txt
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user