debugging_20techniques_20_28lbb_29
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
debugging_20techniques_20_28lbb_29 [2018/04/03 19:24] – [Alternatives to the Debugger] jackkelly | debugging_20techniques_20_28lbb_29 [2024/01/05 00:22] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 18: | Line 18: | ||
However, most semantic errors cause only an unexpected, undesirable result in the program output or behavior. These are the errors that are most difficult to find and correct. These are the errors that programmers really mean when they refer to a “bug”. | However, most semantic errors cause only an unexpected, undesirable result in the program output or behavior. These are the errors that are most difficult to find and correct. These are the errors that programmers really mean when they refer to a “bug”. | ||
- | |||
- | |||
- | |||
- | |||
- | |||
=====Good Techniques===== | =====Good Techniques===== | ||
Line 77: | Line 72: | ||
The previous scenario is an ideal oversimplification. This was a case when the error caused something observable to happen that was not expected. The opposite can also occur. The error could cause something NOT to happen that was expected. In this case you still need to set a breakpoint and look at the variables. But now you have to analyze the program logic to determine which line of code was supposed to make the action happen, and set the breakpoint there. Hopefully it is in the small module that you just added. | The previous scenario is an ideal oversimplification. This was a case when the error caused something observable to happen that was not expected. The opposite can also occur. The error could cause something NOT to happen that was expected. In this case you still need to set a breakpoint and look at the variables. But now you have to analyze the program logic to determine which line of code was supposed to make the action happen, and set the breakpoint there. Hopefully it is in the small module that you just added. | ||
- | Every program and every error is unique. There is no way to reduce the debugging process to a mechanical checklist. There are things we can do that are sometimes effective, but he debugging process is completely subjective. It depends on knowledge, skill, logic, observation, | + | Every program and every error is unique. There is no way to reduce the debugging process to a mechanical checklist. There are things we can do that are sometimes effective, but the debugging process is completely subjective. It depends on knowledge, skill, logic, observation, |
Line 92: | Line 87: | ||
For example: | For example: | ||
+ | <code lb> | ||
| | ||
# | # | ||
# | # | ||
wait ’xxx | wait ’xxx | ||
+ | </ | ||
===== MainWin ===== | ===== MainWin ===== | ||
- | If you need to see more diagnostic information than can fit on the statictext control, you can ‘print’ to the MainWin. For example array variables, which are not listed in the Debugger. If you need to see the contents of an array, you could put a temporary ‘for-next’ loop with a print statement before the breakpoint. When the program stops the array values will be listed in the MainWin. To do this you must ‘rem’ the ‘NoMainWin’ statement, and remember to un‘rem’ it before running the program normally.\\ \\ | + | If you need to see more diagnostic information than can fit on the statictext control, you can ‘print’ to the MainWin. For example array variables, which are not listed in the Debugger. If you need to see the contents of an array, you could put a temporary ‘for-next’ loop with a print statement before the breakpoint. When the program stops the array values will be listed in the MainWin. To do this you must ‘rem’ the ‘NoMainWin’ statement, and remember to un‘rem’ it before running the program normally. |
- | ===== Conditional | + | |
- | You might find that a line in a loop is possibly causing the error. Your program might loop through this line any number of times but analysis tells you that only the third iteration is problematic. You can set a conditional 'trace 2' or ' | + | |
- | ===== If all else fails ===== | + | ===== Conditional |
- | If you've spent many hours and haven' | + | You might find that a line in a loop is possibly causing the error. Your program might loop through this line any number of times but analysis tells you that only the third iteration is problematic. You can set a conditional 'trace 2' or ' |
+ | |||
+ | Left margin, clickable breakpoints can only be unconditional in the Debugger. | ||
+ | |||
+ | |||
+ | ===== If all else fails... ===== | ||
+ | If you've spent many hours and haven' | ||
+ | |||
===== Debugging Exercise ===== | ===== Debugging Exercise ===== | ||
You have written a short program and it is working well. | You have written a short program and it is working well. | ||
+ | <code lb> | ||
NoMainWin | NoMainWin | ||
WindowWidth = 800 | WindowWidth = 800 | ||
Line 140: | Line 145: | ||
end | end | ||
end sub | end sub | ||
+ | </ | ||
However, you decide it needs a small modification. You want to add a ' | However, you decide it needs a small modification. You want to add a ' | ||
debugging_20techniques_20_28lbb_29.1522783447.txt.gz · Last modified: 2024/01/05 00:18 (external edit)