Hi @vermiliontower , I think the answer @MysticRiverGames just wrote was meant for you 
As he says, you “have to learn” where you can modify the code and where you can’t. His 6 suggestions are very good experience and as you work on it, you end up knowing when EC will fail. It’s quite predictable.
Some suggestions on my own (some may be just personal preferences) … For EC VS2019 > VS2017 >>>>>> VS2015
I had lots of problems with “errors that are not errors” in VS2015 and initial versions on VS2017, but those were reduced a lot in a VS2017 update. (keep updating, if you can)
Try to avoid modifying code that is very close to your current line (same line or previous line). There’s a decent chance to make EC fail. Just step on a few lines or use “Set Next Statement” a few lines before. Modify your code then (and you can use Set Next Statement" again to put in over the line you just modified.
Avoid “Enable native edit and continue” being checked in the options->debugging->general if possible. Gives lots of problems.
Sometimes you want to start a fresh run on a function… your parameters are garbled, or your mind is :). Use “Set Next Statement” with the final “}” of the function, then step in. The EC engine creates a dummy return value and allows you to return. When the debugger exists the function, just use “Set Next Statement” again on the function you wanted to restart.
If you change parameters of an existing function, it’s a restart. So if you’re creating a new function, carefully plan ahead the parameters. Same happens with captured variables (lambdas, functions inside functions, …)
So, if you’re in a pickle and you really really MUST keep EC going but you can’t add a parameter… just add a work variable to the class and use that variable for parameter passing.
OBVIOUSLY mark that variable declaration with a “FIXME ASAP” and explanation, and fix that aberration as soon as the EC session ends. Note it down somewhere so that you don’t forget about it. And obviously too, it won’t work for recursive functions.
Most of the “Can’t continue” errors can be undone by undoing the offending code. In example, if you need to add a parameter somewhere, you didn’t realize and added it, and now it fails. Just Ctrl+Z (or put the parameters as they were back, if you remember them) and you’ll be able to continue.
Because of the last tip, add little code every time. If it fails, it’ll be easier to go back to a resumable state. You’ll be able to add more code as you get the grip of it.
C# attributes are a no-no. Oh, I’d love to be able to add/modify DebuggerDisplay on the fly…
that’s all I can think of 