From f658a314353369351acf0d245c7de4fcaa39218a Mon Sep 17 00:00:00 2001 From: jbranchaud Date: Thu, 12 Dec 2024 18:40:23 -0600 Subject: [PATCH] Add Redirect File To Stdin During Delve Debug as a Go TIL --- README.md | 3 +- ...direct-file-to-stdin-during-delve-debug.md | 39 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 go/redirect-file-to-stdin-during-delve-debug.md diff --git a/README.md b/README.md index 789a3f1..38850a1 100644 --- a/README.md +++ b/README.md @@ -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). -_1535 TILs and counting..._ +_1536 TILs and counting..._ --- @@ -407,6 +407,7 @@ _1535 TILs and counting..._ - [Not So Random](go/not-so-random.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) +- [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) - [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) diff --git a/go/redirect-file-to-stdin-during-delve-debug.md b/go/redirect-file-to-stdin-during-delve-debug.md new file mode 100644 index 0000000..3eda653 --- /dev/null +++ b/go/redirect-file-to-stdin-during-delve-debug.md @@ -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 +```