upgrade structures and migrate to nextra v4
This commit is contained in:
79
content/CSE332S/CSE332S_L7.md
Normal file
79
content/CSE332S/CSE332S_L7.md
Normal file
@@ -0,0 +1,79 @@
|
||||
# CSE332S Lecture 7
|
||||
|
||||
## Debugging
|
||||
|
||||
Debugger let’s us:
|
||||
|
||||
1. Execute code incrementally
|
||||
a. Line by line, function to function, breakpoint to breakpoint
|
||||
2. Examine state of executing program
|
||||
a. Examine program call stack
|
||||
b. Examine variables
|
||||
|
||||
When to debug:
|
||||
|
||||
1. Trace how a program runs
|
||||
2. Program crashes
|
||||
3. Incorrect result
|
||||
|
||||
### Basic debugging commands
|
||||
|
||||
Set breakpoints
|
||||
Run program - program stops on the first breakpoint it encounters
|
||||
From there:
|
||||
|
||||
- Execute one line at a time
|
||||
- Step into (step out can be useful if you step into a function outside of your code)
|
||||
- Step over
|
||||
|
||||
- Execute until the next breakpoint (continue)
|
||||
|
||||
While execution is stopped:
|
||||
|
||||
- Examine the state of the program
|
||||
- Call stack, variables, ...
|
||||
|
||||
### Lots of power, but where to start?
|
||||
|
||||
Stepping through the entire program is infeasible
|
||||
|
||||
Think first!!!
|
||||
|
||||
- What might be going wrong based on the output or crash message?
|
||||
- How can I test my hypothesis?
|
||||
- Can I narrow down the scope of my search?
|
||||
- Can I recreate the bug in a simpler test case/simpler code?
|
||||
- Set breakpoints in smart locations based on my hypothesis
|
||||
|
||||
### Today’s program
|
||||
|
||||
A simple lottery ticket game
|
||||
|
||||
1. User runs the program with 5 arguments, all integers (1-100)
|
||||
2. Program randomly generates 10 winning numbers
|
||||
3. User wins if they match 3 or more numbers
|
||||
|
||||
At least that’s how it should run, but you will have to find and fix a few issues first
|
||||
|
||||
First, let’s look at some things in the code
|
||||
|
||||
- Header guards/pragma once
|
||||
- Block comments: Who wrote this code? and what does it do?
|
||||
- Multiple files and including header files
|
||||
- **Do not define functions in header files, declarations only**
|
||||
- **Do not #include .cpp files**
|
||||
- Function or data type must be declared before it can be used
|
||||
|
||||
#### Header Guards
|
||||
|
||||
```cpp
|
||||
#pragma once // alternative to traditional header guards, don't need to do both.
|
||||
#ifndef ALGORITHMS_H
|
||||
#define ALGORITHMS_H
|
||||
#include<vector>
|
||||
void insertion_sort(std::vector<int> & v);
|
||||
bool binary_search(const std::vector<int> & v, int value);
|
||||
#endif // ALGORITHMS_H
|
||||
```
|
||||
|
||||
The header guard is used to prevent the header file from being included multiple times in the same file.
|
||||
Reference in New Issue
Block a user