Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
*.pdf
*.swp
bld
21 changes: 21 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
sudo: false
language: haskell

cache:
- apt

addons:
apt:
packages:
- imagemagick
- texlive-full

install:
- cabal install cabal-install
- cabal update
- cabal install pandoc --reorder-goals
- cabal install pandoc-citeproc --reorder-goals

script:
- pandoc --version
- make full
43 changes: 22 additions & 21 deletions src/paper.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,26 @@
---
------
title: "Debugging"
subtitle: "What you should know as developer"
author: Ben Spoor
date: March 2, 2016
lang: en-US
date: March 2, 2016
lang: english
reference-section-title: References
bibliography: src/reference.bib
keywords: debugging
geometry: margin=2cm
---
------


![Altran](bld/altran_logo.pdf "Altan logo"){ width=30% }


# Introduction
According to Google Scholar [@google2016], there are more then 10,000 articles that mention 'Debugging' in their title.
# Introduction
According to Google Scholar [@google2016], there are more than 10,000 articles that mention 'Debugging' in their title.
With such an amount of research on this topic, it is a pity it is still not adequatly addressed in programming texts [@mccauley2008debugging].
Research by Cambridge university shows developers spend around 50% of their time finding and fixing bugs [@britton2013reversible].
This paper presents the debugging basis to become more effective at it.

## You're probably non-structured debugger
## You're probably non-structured debugger
If you are a novice, there is a good chance you are using non-structered methods to debug programs. [SOURCE]
Education currently lacks proper instruction of debugging. [SOURCE]
You might not even be a novice. [SOURCE]
Expand All @@ -30,7 +31,7 @@ But debugging can also be as quick as 1 minute, when trying to find the source o
A majority of good debuggers are also good programmers, but not vice-versa. [SOURCE]

## What is debugging?
There is trouble shooting and problem solving, problems cause trouble.
There is trouble shooting and problem solving, problems cause trouble.
You can reduce the trouble, but to prevent trouble, solve the problem.
Debugging is thus problem solving.

Expand Down Expand Up @@ -67,7 +68,7 @@ One of the biggest challenges is getting the complete state clear of the program
If you can reproduce a problem consisttenly, you know when you fixed it as well.

#### Collect clues
Collecting clues gives you a first description of the problem.
Collecting clues gives you a first description of the problem.

#### Isolate the problem

Expand All @@ -83,27 +84,27 @@ One of the most challenging parts of solving is problem, is solving the right pr

### Don't make assumptions
A common mistake made is misrepresenting a problem [Psychology of problem solving].
For instance, I have two buckets; one half filled with ice tea and the other half filled with lemonade.
For instance, I have two buckets; one half filled with ice tea and the other half filled with lemonade.
Both the lemonade and the ice tea have equal densities. If I pour the lemonade in the bucket with ice tea.
The problem to be solved is that within 5 minutes the two drinks should be seperated again and be placed back in both buckets.

The most common assumption people make is that both are liquids.
The most common assumption people make is that both are liquids.
This was never stated anywhere.
Just pick up the block of frozen ice tea and place
it back in the other bucket.
The lesson here is to never make an assumption and double check every fact.
it back in the other bucket.
The lesson here is to never make an assumption and double check every fact.

### Proof yourself wrong
One of the most powerfull techniques to cover a lot of ground is to always try to proof yourself wrong.
When you have an hypothesis of a problem, test or check if you can proof your hypothesis wrong.
It only takes 1 proof to kill an hypothesis, but an infinite amount to proof it right.
It only takes 1 proof to kill an hypothesis, but an infinite amount to proof it right.
This is the basis of the scientific method [@popper1959]
For example, all bugs always happen after a certain function is called.
For example, all bugs always happen after a certain function is called.
Try to reproduce the problem without calling that function.

### Don't throw out refute hypothesis
When a hypothesis proves to be wrong, also keep track of this.
The effort is not lost, a set of refuted hypothesis can lead to a correct one. [@araki1991].
The effort is not lost, a set of refuted hypothesis can lead to a correct one. [@araki1991].

### Strategies
Strategies here, are techniques to isolate the problem to its smallest reproducible form.
Expand Down Expand Up @@ -149,13 +150,13 @@ The process is repeated until a single component remains.
### Functional
The functional method is the most difficult. Information about the system and its
components forms the basis of hypothesis selection (Johnson, 1991).
Various types of functional search exist as well. Basing a hypothesis on known
Various types of functional search exist as well. Basing a hypothesis on known
system behavior and expected outcomes is the basic type of functional search.
Problem solvers can also construct a "runnable" mental model of the system in which the fault conditions are simulated (deKleer & Brown, 1981)

#### Swaptronics
This is the strategy of choice of novices [source].
(Randomly) swap out parts untill something makes it work.
(Randomly) swap out parts untill something makes it work.
This has a very unstructered nature. effective?? [SOURCE]

#### Wolf fencing - How to catch a wolf in Alaska
Expand All @@ -166,7 +167,7 @@ Assert that when the information, or something, transitions from one chunk to an
At one of the transistions the information will be different than it should or is expected.
Take the chunk, repeat, untill you found the problem.

How do you catch a single wolf in Alaska?
How do you catch a single wolf in Alaska?
You build a fence, and listen and divide Alaska in two.
You listen on which side you hear the howling, and split up that half.
If you continue this long enough, you will catch the wolf.
Expand All @@ -178,7 +179,7 @@ Your fix should should not fix the symptom, but the root cause.
## Test the solution


# Business Benefits
# Business Benefits
This discusses the return on investments, usability, and adherence to standards. Customer quotes are always very helpful.
It demonstrates that you are an authority in your field and can back it up with these endorsements.
Don't take references for granted - not all your competitors will be able to supply such endorsements.
Expand All @@ -187,7 +188,7 @@ Don't take references for granted - not all your competitors will be able to sup

## Effects of debugging knowledge

# Summary
# Summary
Close the paper with a concise summary of your main points.
As many readers will skip the entire document and read this section only, summarize the main selling points about your solution here.

Expand Down