How can we help you today? How can we help you today?
Rim Shot
Scenario #1 Timers I have some code that has two timers. They start in response to mouse movements. It is not possible to single step through the code to see what is happening. I have to form a mental model of the process, define hypotheses about the behavior I'm observing, then instrument the code to see if my hypotheses are correct. It can be enormously time consuming. An execution trace would let me see what actually happened and eliminate a lot of the trial and error. Scenario #2 Hidden side effects in generated code I recently burned a lot of hours isolating a bug that was occurring at a seemingly unrelated line. The line set a value in a DataRow. When I touched the data row, the data set was creating a new row, causing unexpected behavior in a grid. Commenting out the offending line only caused the problem to move to the next line that touched the data row. The code that was executing was hidden from the debugger because it was generated code (with a DebuggerNonUserCode attribute). An execution trace would have let me see that a new row was being created as a side effect of touching the data row--and that side effect was moving as I commented out the lines. Scenario #3 Deferred detection of symptoms Yesterday, I found an unexected line of test code that was refetching a data set. It was in a three line routine that should not have had anything to do with the problem. Since the effects were not felt until much later, I kept stepping right past it. If I had realized what was happening it would have been easy to find, but all I was seeing was that the data row associated with my grid row was magically null several levels up the call stack. Since I didn't know what was happening, I kept asking the wrong question and kept getting misleading answers. I needed a way to look at the execution from a high level and see where something unexpected was happening. Instead, it took three days, and four developers to isolate it. An execution trace would have shown me that something huge was happening as a side effect of calling that little routine. Writing sample code to demonstrate these kinds of problems is not possible. By definition, these problems are hard to isolate because they exist in complex scenarios, where the code may have been poorly constructed and is probably not well understood. Just like a class diagram can make it easier to understand the structure of the code base, a graphical execution trace could make it easier to find unexpected behavior. / comments
Scenario #1 Timers I have some code that has two timers. They start in response to mouse movements. It is not possible to single step through the code to see what is happening. I have to form a me...
0 votes